Mozilla, Fastly, Intel och Red Hat marknadsför WebAssembly som en plattform för universell anvÀndning

Mozilla, Fastly, Intel och Red Hat förenad dess anstrÀngningar för att utveckla teknologier som hjÀlper till att göra WebAssembly till en universell plattform för sÀker kodexekvering över alla infrastrukturer, operativsystem eller enheter. En community har bildats för gemensam utveckling av runtime och kompilatorer som tillÄter anvÀndning av WebAssembly inte bara i webblÀsare Bytecode Alliance.

För att skapa bÀrbara program som levereras i WebAssembly-format som kan köras utanför webblÀsaren, föreslÄr vi att du anvÀnder API:et VAR JAG (WebAssembly System Interface), som tillhandahÄller mjukvarugrÀnssnitt för direkt interaktion med operativsystemet (POSIX API för att arbeta med filer, sockets, etc.). En utmÀrkande egenskap hos exekveringsmodellen för applikationer som anvÀnder WASI Àr att de körs i en sandlÄdemiljö för isolering frÄn huvudsystemet och anvÀnder en sÀkerhetsmekanism baserad pÄ förmÄgashantering för ÄtgÀrder med var och en av resurserna (filer, kataloger, sockets, systemanrop , etc.) mÄste applikationen ges lÀmpliga behörigheter (endast Ätkomst till den deklarerade funktionen ges).

En av mÄl Den skapade alliansen Àr en lösning pÄ problemet med att distribuera moderna modulÀra applikationer med ett stort antal beroenden. I sÄdana applikationer kan varje beroende vara en potentiell kÀlla till sÄrbarheter eller attacker. Genom att ta kontroll över ett beroende kan du fÄ kontroll över alla applikationer som Àr associerade med det. Förtroende för applikationen innebÀr automatiskt förtroende för alla beroenden, men beroenden utvecklas och underhÄlls ofta av tredjepartsteam vars aktiviteter inte kan kontrolleras. Medlemmar i Bytecode Alliance har för avsikt att tillhandahÄlla en holistisk lösning för sÀker exekvering av WebAssembly-applikationer som inte Àr tillförlitliga i sig.

För skydd föreslÄs det att anvÀnda konceptet nanoprocesser, dÀr varje beroendemodul Àr separerad i en separat isolerad WebAssembly-modul, vars befogenheter endast stÀlls in i förhÄllande till denna modul (till exempel kommer ett bibliotek för bearbetning av strÀngar inte att kunna öppna ett nÀtverksuttag eller fil). Till skillnad frÄn processseparering Àr WebAssembly-hanterare lÀtta och krÀver nÀstan inga extra resurser - interaktion mellan hanterare Àr inte mycket lÄngsammare Àn att anropa vanliga funktioner. Separation kan göras inte bara pÄ nivÄn för enskilda moduler, utan ocksÄ pÄ nivÄn för grupper av moduler som till exempel behöver arbeta med gemensamma minnesomrÄden

De begÀrda befogenheterna kan bestÀmmas bÄde pÄ nivÄn för sjÀlva beroenden och delegeras till beroenden lÀngs kedjan av överordnade moduler (resurser i WASI Àr associerade med en speciell typ av fildeskriptor - förmÄga). Till exempel kan en modul delegeras möjligheten att komma Ät en specifik katalog och systemanrop, och om modulens utvecklingsinfrastruktur Àventyras eller en sÄrbarhet identifieras, under en attack, kommer Ätkomsten endast att begrÀnsas till dessa resurser. Resursdeklarationer frÄn modulskapare kan vara en indikator pÄ misstÀnkt aktivitet, till exempel nÀr en textbearbetningsmodul begÀr tillstÄnd att öppna en nÀtverksanslutning. De initialt instÀllda behörigheterna kontrolleras och om de Àndras, avvisas beroendeladdningen tills den lokala modulens signatur uppdateras.

För gemensam utveckling under Bytecode Alliances vingar översatt flera relaterade till WebAssembly projekt, som tidigare utvecklats separat av alliansens grundande företag:

  • varmtid — körtid för att köra WebAssembly-applikationer med WASI-tillĂ€gg som vanliga fristĂ„ende applikationer. Det stöder bĂ„de att starta WebAssembly-bytecode med ett speciellt kommandoradsverktyg och att lĂ€nka fĂ€rdiga körbara filer (wasmtime Ă€r inbyggt i programmet som ett bibliotek). Wasmtime har en flexibel modulstruktur som lĂ„ter dig skala körtiden för olika applikationer, till exempel kan du skapa en avskalad version för enheter med begrĂ€nsade resurser;
  • Lucet — kompilator och körtid för att köra program i WebAssembly-format. SĂ€rskiljande funktion Lucet Ă€r anvĂ€ndningen av fullfjĂ€drad förutseende kompilering (AOT, i förvĂ€g) istĂ€llet för JIT till maskinkod som lĂ€mpar sig för direkt exekvering. Projektet har utvecklats av Fastly och Ă€r optimerat för att förbruka minimala resurser och lansera nya instanser mycket snabbt (Fastly anvĂ€nder Lucet i en cloud edge computing-motor som anvĂ€nder WebAssembly för hanterare som lanseras pĂ„ varje begĂ€ran). Som en del av det gemensamma projektet planeras Lucet-kompilatorn att konverteras för att anvĂ€nda Wasmtime som bas;
  • WAM förlĂ€ngning (WebAssembly Micro Runtime) Ă€r en annan körtid för att köra WebAssembly, ursprungligen utvecklad av Intel för anvĂ€ndning i Internet of Things-enheter. WAMR Ă€r optimerat för minimal resursförbrukning och kan anvĂ€ndas pĂ„ enheter med en liten mĂ€ngd RAM. Projektet inkluderar en tolk och virtuell maskin för att exekvera WebAssembly bytecode, ett API (en delmĂ€ngd av Libc) och verktyg för dynamisk applikationshantering;
  • Kranlyft — En kodgenerator som översĂ€tter en mellanrepresentation oberoende av hĂ„rdvaruarkitekturer till körbar maskinkod optimerad för specifika hĂ„rdvaruplattformar. Cranelift stöder parallellisering av funktionskompilering för mycket snabb resultatgenerering, vilket gör att den kan anvĂ€ndas för att skapa JIT-kompilatorer (Cranelift-baserad JIT anvĂ€nds i den virtuella Wasmtime-maskinen);
  • WASI vanligt — En separat implementering av WASI (WebAssembly System Interface) API för att organisera interaktion med operativsystemet.
  • last-wasi — en modul för Cargo-pakethanteraren som implementerar ett kommando för att kompilera Rust-kod till WebAssembly-bytekod med hjĂ€lp av WASI-grĂ€nssnittet för att anvĂ€nda WebAssembly utanför webblĂ€saren;
  • wat Đž wasmparser — Parsers för att analysera text (WAT, WAST) och binĂ€ra representationer av WebAssembly-bytekod.

För att sammanfatta, WebAssembly Àr mycket som Asm.js, men annorlunda genom att det Àr ett binÀrt format som inte Àr bundet till JavaScript och tillÄter att lÄgnivÄmellankod kompilerad frÄn olika programmeringssprÄk kan exekveras i webblÀsaren. WebAssembly krÀver ingen sopsamlare eftersom den anvÀnder explicit minneshantering. Genom att anvÀnda JIT för WebAssembly kan du uppnÄ prestandanivÄer nÀra inbyggd kod. Bland huvudmÄlen med WebAssembly Àr att sÀkerstÀlla portabilitet, förutsÀgbart beteende och identisk kodexekvering pÄ olika plattformar.

KĂ€lla: opennet.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster