Mozilla, Fastly, Intel a Red Hat förderen WebAssembly als Plattform fir universell Notzung

Mozilla, Fastly, Intel a Red Hat vereenegt seng Efforten fir Technologien z'entwéckelen déi hëllefe WebAssembly eng universell Plattform fir sécher Code Ausféierung iwwer all Infrastruktur, Betribssystem oder Apparat ze maachen. Eng Gemeinschaft gouf geformt fir d'gemeinsame Entwécklung vu Runtime a Compileren déi d'Benotzung vu WebAssembly net nëmmen a Webbrowser erlaben Bytecode Alliance.

Fir portable Programmer ze kreéieren déi am WebAssembly Format geliwwert ginn, déi ausserhalb vum Browser ausgefouert kënne ginn, proposéiere mir d'API ze benotzen WASI (WebAssembly System Interface), déi Software-Interfaces fir direkt Interaktioun mam Betribssystem ubitt (POSIX API fir mat Dateien, Sockets, etc.) ze schaffen. Eng ënnerscheedlech Feature vum Ausféierungsmodell vun Uwendungen déi WASI benotzen ass datt se an engem Sandkëschtëmfeld fir Isolatioun vum Haaptsystem lafen an e Sécherheetsmechanismus benotzen baséiert op Kapazitéitsmanagement fir Aktiounen mat jiddereng vun de Ressourcen (Dateien, Verzeichnisser, Sockets, Systemruffen) , etc.) d'Applikatioun muss déi entspriechend Permissiounen kréien (nëmmen Zougang zu der deklaréierter Funktionalitéit gëtt zur Verfügung gestallt).

Ee vun Ziler Déi erstallt Allianz ass eng Léisung fir de Problem vun der Verdeelung vun modernen modulare Uwendungen mat enger grousser Unzuel vun Ofhängegkeeten. An esou Uwendungen kann all Ofhängegkeet eng potenziell Quell vu Schwachstelle oder Attacke sinn. D'Kontroll vun enger Ofhängegkeet ze huelen erlaabt Iech Kontroll iwwer all Applikatiounen ze kréien, déi domat verbonne sinn. Vertrauen an der Applikatioun implizéiert automatesch Vertrauen an all Ofhängegkeeten, awer Ofhängegkeete ginn dacks vun Drëtt-Partei-Teams entwéckelt an ënnerhalen, deenen hir Aktivitéiten net kontrolléiert kënne ginn. Bytecode Alliance Memberen hu wëlles eng holistesch Léisung fir eng sécher Ausféierung vu WebAssembly Uwendungen ze bidden, déi net inherent vertrauenswierdeg sinn.

Fir de Schutz gëtt et proposéiert d'Konzept vun Nanoprozesser ze benotzen, an deenen all Ofhängegkeetsmodul an e separat isoléierte WebAssembly Modul getrennt ass, d'Kraaft vun deenen nëmmen a Relatioun mat dësem Modul gesat ginn (zum Beispill eng Bibliothéik fir Strings ze veraarbechten wäert net fäeg sinn en Netzwierk Socket oder Datei opzemaachen). Am Géigesaz zu Prozesstrennung sinn WebAssembly Handler liicht a brauche bal keng zousätzlech Ressourcen - Interaktioun tëscht Handler ass net vill méi lues wéi normal Funktiounen ze ruffen. Trennung kann net nëmmen um Niveau vun eenzelne Moduler gemaach ginn, mä och um Niveau vun Gruppe vu Moduler, déi, zum Beispill, muss mat gemeinsam Erënnerung Beräicher schaffen

Déi ugefrote Kräfte kënnen souwuel um Niveau vun den Ofhängegkeeten selwer bestëmmt ginn an op Ofhängegkeeten laanscht d'Kette vun Elterenmoduler delegéiert ginn (Ressourcen an WASI si mat enger spezieller Aart vu Dateideskriptor assoziéiert - Fäegkeet). Zum Beispill kann e Modul d'Fähigkeit delegéiert ginn fir Zougang zu engem spezifesche Verzeechnes a System Uriff ze kréien, a wann d'Entwécklungsinfrastruktur vum Modul kompromittéiert ass oder eng Schwachstelle identifizéiert gëtt, während engem Attack, gëtt den Zougang nëmmen op dës Ressourcen limitéiert. Ressourcedeklaratioune vu Modulcreateuren kënnen en Indikateur vu verdächteger Aktivitéit sinn, sou wéi wann en Textveraarbechtungsmodul d'Erlaabnis freet fir eng Netzwierkverbindung opzemaachen. Déi ursprénglech agestallte Permissiounen ginn iwwerpréift a wa se änneren, gëtt d'Ofhängegkeet Luede verworf bis déi lokal Modul Ënnerschrëft aktualiséiert gëtt.

Fir gemeinsam Entwécklung ënner dem Flillek vun der Bytecode Alliance iwwersat e puer Zesummenhang mat WebAssembly Projeten, virdru separat vun de Grënnungsfirmen vun der Allianz entwéckelt:

  • Waasst - Runtime fir WebAssembly Uwendungen mat WASI Extensiounen als regelméisseg Stand-alone Uwendungen ze lafen. Et ënnerstëtzt souwuel de Start vun WebAssembly Bytecode mat engem speziellen Kommandozeil Utility a verbënnt fäerdeg ausführbar Dateien (wasmtime ass an der Applikatioun als Bibliothéik agebaut). Wasmtime huet eng flexibel modulare Struktur, déi Iech erlaabt d'Runtime fir verschidde Applikatiounen ze skaléieren, zum Beispill, Dir kënnt eng ofgeschnidden Versioun fir Apparater mat limitéierten Ressourcen erstellen;
  • Lucet - Compiler a Runtime fir Programmer am WebAssembly Format auszeféieren. Distinctive Fonktioun Lucet ass d'Benotzung vu voller viraussiichtlecher Kompiléierung (AOT, viraus) amplaz JIT a Maschinncode gëeegent fir direkt Ausféierung. De Projet gouf vu Fastly entwéckelt an ass optimiséiert fir minimal Ressourcen ze konsuméieren an nei Instanzen ganz séier ze lancéieren (Schnell benotzt Lucet an engem Cloud Edge Rechenmotor deen WebAssembly benotzt fir Handler déi op all Ufro gestart ginn). Als Deel vum gemeinsame Projet ass de Lucet Compiler geplangt fir ëmgewandelt ze ginn fir Wasmtime als Basis ze benotzen;
  • WAMR (WebAssembly Micro Runtime) ass eng aner Runtime fir WebAssembly auszeféieren, ursprénglech vun Intel entwéckelt fir an Internet of Things Geräter ze benotzen. WAMR ass fir minimale Ressourceverbrauch optimiséiert a kann op Apparater mat enger klenger RAM benotzt ginn. De Projet enthält en Dolmetscher a virtuell Maschinn fir WebAssembly Bytecode auszeféieren, eng API (en Ënnerdeel vu Libc) an Tools fir dynamesch Applikatiounsmanagement;
  • Kran Lift - e Code Generator deen eng Zwëschenvertriedung onofhängeg vun Hardwarearchitekturen iwwersetzt an ausführbare Maschinncode optiméiert fir spezifesch Hardwareplattformen. Cranelift ënnerstëtzt Paralleliséierung vu Funktiounskompiléierung fir ganz séier Resultatgeneratioun, wat et erlaabt fir JIT Compilers ze kreéieren (Cranelift-baséiert JIT gëtt an der Wasmtime virtueller Maschinn benotzt);
  • WASI gemeinsam - eng separat Ëmsetzung vun der WASI (WebAssembly System Interface) API fir d'Organisatioun vun Interaktioun mam Betribssystem;
  • cargo-wasi - e Modul fir de Cargo Package Manager deen e Kommando implementéiert fir Rustcode an WebAssembly Bytecode ze kompiléieren mat der WASI Interface fir WebAssembly ausserhalb vum Browser ze benotzen;
  • wat и warmparser - Parser fir Text Parsing (WAT, WAST) a binäre Representatioune vum WebAssembly Bytecode.

Fir erëmzefannen, WebAssembly ass vill wéi Asm.js, awer anescht an datt et e binärt Format ass dat net un JavaScript gebonnen ass an et erlaabt niddereg-Niveau Zwëschencode kompiléiert aus verschiddene Programméierungssproochen am Browser auszeféieren. WebAssembly erfuerdert kee Gerempels Sammler well et explizit Erënnerungsmanagement benotzt. Andeems Dir JIT fir WebAssembly benotzt, kënnt Dir Leeschtungsniveauen no beim gebiertege Code erreechen. Ënnert den Haaptziler vun der WebAssembly ass d'Portabilitéit, prévisibel Verhalen an identesch Code Ausféierung op verschiddene Plattformen ze garantéieren.

Source: opennet.ru

Setzt e Commentaire