Mozilla, Fastly, Intel u Red Hat jippromwovu WebAssembly bħala pjattaforma għal użu universali

Mozilla, Fastly, Intel u Red Hat magħqudin l-isforzi tagħha fl-iżvilupp ta’ teknoloġiji li jgħinu biex WebAssembly isir pjattaforma universali għall-eżekuzzjoni sigura tal-kodiċi fi kwalunkwe infrastruttura, sistema operattiva jew apparat. Ġiet iffurmata komunità għall-iżvilupp konġunt ta’ runtime u kompilaturi li jippermettu l-użu ta’ WebAssembly mhux biss fil-web browsers Alleanza Bytecode.

Biex toħloq programmi portabbli mogħtija fil-format WebAssembly li jistgħu jiġu eżegwiti barra l-browser, nissuġġerixxu li tuża l-API WASI (WebAssembly System Interface), li tipprovdi interfaces tas-softwer għal interazzjoni diretta mas-sistema operattiva (POSIX API biex taħdem ma 'fajls, sokits, eċċ.). Karatteristika distintiva tal-mudell ta 'eżekuzzjoni ta' applikazzjonijiet li jużaw WASI hija li jaħdmu f'ambjent ta 'sandbox għall-iżolament mis-sistema prinċipali u jużaw mekkaniżmu ta' sigurtà bbażat fuq ġestjoni tal-kapaċità għal azzjonijiet ma 'kull wieħed mir-riżorsi (fajls, direttorji, sokits, sejħiet tas-sistema. , eċċ.) l-applikazzjoni għandha tingħata l-permessi xierqa (aċċess biss għall-funzjonalità ddikjarata huwa pprovdut).

Wieħed minn għanijiet L-alleanza maħluqa hija soluzzjoni għall-problema tad-distribuzzjoni ta 'applikazzjonijiet modulari moderni b'numru kbir ta' dipendenzi. F'dawn l-applikazzjonijiet, kull dipendenza tista' tkun sors potenzjali ta' vulnerabbiltajiet jew attakki. It-teħid tal-kontroll ta 'dipendenza jippermettilek tikseb il-kontroll tal-applikazzjonijiet kollha assoċjati magħha. Il-fiduċja fl-applikazzjoni awtomatikament timplika fiduċja fid-dipendenzi kollha, iżda d-dipendenzi spiss jiġu żviluppati u miżmuma minn timijiet ta 'partijiet terzi li l-attivitajiet tagħhom ma jistgħux jiġu kkontrollati. Il-membri tal-Alleanza Bytecode għandhom l-intenzjoni li jipprovdu soluzzjoni olistika għall-eżekuzzjoni sigura tal-applikazzjonijiet tal-WebAssembly li mhumiex intrinsikament affidabbli.

Għall-protezzjoni, huwa propost li jintuża l-kunċett ta’ nanoproċessi, li fih kull modulu ta’ dipendenza huwa separat f’modulu WebAssembly iżolat separatament, li s-setgħat tiegħu huma stabbiliti b’relazzjoni biss ma’ dan il-modulu (pereżempju, librerija għall-ipproċessar ta’ kordi mhux se tkun kapaċi tiftaħ socket jew fajl tan-netwerk). B'differenza mis-separazzjoni tal-proċess, il-handlers tal-WebAssembly huma ħfief u kważi ma jeħtieġu l-ebda riżorsi addizzjonali - l-interazzjoni bejn il-handlers mhix ħafna aktar bil-mod milli ssejjaħ funzjonijiet ordinarji. Is-separazzjoni tista 'ssir mhux biss fil-livell ta' moduli individwali, iżda wkoll fil-livell ta 'gruppi ta' moduli li, pereżempju, jeħtieġ li jaħdmu ma 'żoni ta' memorja komuni

Is-setgħat mitluba jistgħu jiġu determinati kemm fil-livell tad-dipendenzi nfushom, kif ukoll iddelegati lid-dipendenzi tul il-katina minn moduli ġenitur (ir-riżorsi fil-WASI huma assoċjati ma’ tip speċjali ta’ deskrittur tal-fajl - kapaċità). Pereżempju, modulu jista 'jiġi ddelegat il-kapaċità li jaċċessa direttorju speċifiku u sejħiet tas-sistema, u jekk l-infrastruttura tal-iżvilupp tal-modulu tkun kompromessa jew tiġi identifikata vulnerabbiltà, waqt attakk, l-aċċess ikun limitat biss għal dawn ir-riżorsi. Id-dikjarazzjonijiet tar-riżorsi mill-ħallieqa tal-moduli jistgħu jkunu indikatur ta' attività suspettuża, bħal meta modulu tal-ipproċessar tat-test jitlob permess biex tiftaħ konnessjoni tan-netwerk. Il-permessi stabbiliti inizjalment huma kkontrollati u jekk jinbidlu, it-tagħbija tad-dipendenza tiġi rrifjutata sakemm il-firma tal-modulu lokali tiġi aġġornata.

Għal żvilupp konġunt taħt il-ġwienaħ tal-Alleanza Bytecode tradott bosta relatati mal-WebAssembly proġetti, żviluppati qabel separatament mill-kumpaniji fundaturi tal-alleanza:

  • wasmtime — runtime għat-tħaddim ta' applikazzjonijiet WebAssembly b'estensjonijiet WASI bħala applikazzjonijiet stand-alone regolari. Jappoġġa kemm it-tnedija tal-bytecode tal-WebAssembly bl-użu ta 'utilità speċjali tal-linja tal-kmand kif ukoll il-konnessjoni ta' fajls eżekutibbli lesti (wasmtime huwa mibni fl-applikazzjoni bħala librerija). Wasmtime għandha struttura modulari flessibbli li tippermettilek li tiskala l-runtime għal diversi applikazzjonijiet, pereżempju, tista 'toħloq verżjoni mqaxxra għal apparati b'riżorsi limitati;
  • Lucet — kompilatur u runtime għall-eżekuzzjoni ta' programmi fil-format WebAssembly. Distintiv karatteristika Lucet huwa l-użu ta 'kumpilazzjoni antiċipattiva sħiħa (AOT, qabel iż-żmien) minflok JIT f'kodiċi tal-magni adattat għall-eżekuzzjoni diretta. Il-proġett ġie żviluppat minn Fastly u huwa ottimizzat biex jikkonsma riżorsi minimi u jniedi istanzi ġodda malajr ħafna (Fastly juża Lucet f'magna tal-kompjuters tat-tarf tal-cloud li juża WebAssembly għal handlers imnedija fuq kull talba). Bħala parti mill-proġett konġunt, il-kompilatur Lucet huwa ppjanat li jiġi kkonvertit biex juża Wasmtime bħala bażi;
  • WAMR (WebAssembly Micro Runtime) huwa runtime ieħor għall-eżekuzzjoni tal-WebAssembly, żviluppat oriġinarjament minn Intel għall-użu f'apparat tal-Internet tal-Oġġetti. WAMR huwa ottimizzat għal konsum minimu ta 'riżorsi u jista' jintuża fuq apparati b'ammont żgħir ta 'RAM. Il-proġett jinkludi interpretu u magna virtwali għall-eżekuzzjoni tal-bytecode WebAssembly, API (subsett ta 'Libc) u għodod għall-ġestjoni dinamika tal-applikazzjoni;
  • lift tal-krejn — ġeneratur tal-kodiċi li jittraduċi rappreżentazzjoni intermedja indipendenti mill-arkitetturi tal-ħardwer f’kodiċi tal-magni eżekutibbli ottimizzat għal pjattaformi tal-ħardwer speċifiċi. Cranelift jappoġġja l-parallelizzazzjoni tal-kumpilazzjoni tal-funzjoni għal ġenerazzjoni ta 'riżultati veloċi ħafna, li tippermetti li tintuża biex toħloq kompilaturi JIT (JIT ibbażat fuq Cranelift jintuża fil-magna virtwali Wasmtime);
  • WASI komuni — implimentazzjoni separata tal-API WASI (WebAssembly System Interface) għall-organizzazzjoni tal-interazzjoni mas-sistema operattiva;
  • merkanzija-wasi — modulu għall-maniġer tal-pakkett tat-Tagħbija li jimplimenta kmand għall-kompilazzjoni tal-kodiċi Rust fil-bytecode tal-WebAssembly bl-użu tal-interface WASI għall-użu tal-WebAssembly barra l-browser;
  • wat и wasmparser — parsers għall-parsing tat-test (WAT, WAST) u rappreżentazzjonijiet binarji tal-bytecode WebAssembly.

Biex terġa 'tiġbor, WebAssembly huwa ħafna bħal Asm.js, iżda differenti fis-sens li huwa format binarju li mhuwiex marbut ma 'JavaScript u jippermetti li kodiċi intermedju ta' livell baxx miġbur minn diversi lingwi ta 'programmar li jiġi esegwit fil-browser. WebAssembly ma jeħtieġx kollettur taż-żibel minħabba li juża ġestjoni espliċita tal-memorja. Billi tuża JIT għal WebAssembly, tista 'tikseb livelli ta' prestazzjoni qrib il-kodiċi nattiv. Fost l-għanijiet ewlenin tal-WebAssembly hemm l-iżgurar tal-portabbiltà, imġieba prevedibbli u eżekuzzjoni identika tal-kodiċi fuq pjattaformi differenti.

Sors: opennet.ru

Żid kumment