Mozilla, Fastly, Intel ak Red Hat ankouraje WebAssembly kòm yon platfòm pou itilize inivèsèl

Mozilla, Fastly, Intel ak Red Hat ini efò li yo nan devlope teknoloji ki ede fè WebAssembly yon platfòm inivèsèl pou egzekisyon kòd an sekirite atravè nenpòt enfrastrikti, sistèm opere, oswa aparèy. Yo te fòme yon kominote pou devlopman ansanm nan ègzekutabl ak konpilateur ki pèmèt itilizasyon WebAssembly pa sèlman nan navigatè entènèt. Bytecode Alliance.

Pou kreye pwogram pòtab yo delivre nan fòma WebAssembly ki ka egzekite deyò navigatè a, nou sijere lè l sèvi avèk API a. WASI (WebAssembly System Interface), ki bay entèfas lojisyèl pou entèraksyon dirèk ak sistèm operasyon an (POSIX API pou travay ak fichye, sipò, elatriye). Yon karakteristik diferan nan modèl ekzekisyon aplikasyon yo itilize WASI se yo ke yo kouri nan yon anviwònman sandbox pou izolasyon nan sistèm prensipal la epi yo sèvi ak yon mekanis sekirite ki baze sou jesyon kapasite pou aksyon ak chak nan resous yo (fichye, anyè, sipò, apèl sistèm. , elatriye) yo dwe bay aplikasyon an otorizasyon ki apwopriye yo (sèlman gen aksè a fonksyonalite yo deklare).

Youn nan objektif Alyans ki te kreye a se yon solisyon pou pwoblèm distribye aplikasyon modilè modèn ak yon gwo kantite depandans. Nan aplikasyon sa yo, chak depandans ka yon sous potansyèl de frajilite oswa atak. Lè w pran kontwòl yon depandans pèmèt ou pran kontwòl tout aplikasyon ki asosye ak li. Konfyans nan aplikasyon an otomatikman implique konfyans nan tout depandans, men depandans yo souvan devlope ak konsève pa ekip twazyèm pati ki gen aktivite yo pa ka kontwole. Manm Bytecode Alliance yo gen entansyon bay yon solisyon holistic pou egzekisyon an sekirite aplikasyon WebAssembly ki pa natirèlman fè konfyans.

Pou pwoteksyon, li pwopoze pou sèvi ak konsèp nan nanoprosesis, kote chak modil depandans separe an yon modil WebAssembly izole separeman, pouvwa yo mete an relasyon sèlman ak modil sa a (pa egzanp, yon bibliyotèk pou trete fisèl pa pral. kapab louvri yon priz rezo oswa dosye). Kontrèman ak separasyon pwosesis, moun kap okipe WebAssembly yo lejè epi yo pa bezwen prèske pa gen okenn resous adisyonèl - entèraksyon ant moun kap okipe yo pa pi dousman pase rele fonksyon òdinè. Separasyon ka fèt pa sèlman nan nivo modil endividyèl, men tou nan nivo gwoup modil ki, pou egzanp, bezwen travay ak zòn memwa komen.

Pouvwa yo mande yo ka detèmine tou de nan nivo depandans yo tèt yo ak delege nan depandans sou chèn nan pa modil paran yo (resous nan WASI yo asosye ak yon kalite espesyal deskriptè dosye - kapasite). Pou egzanp, yon modil ka delege kapasite nan jwenn aksè nan yon anyè espesifik ak apèl sistèm, epi si enfrastrikti devlopman modil la konpwomèt oswa yo idantifye yon vilnerabilite, pandan yon atak, aksè a pral limite sèlman nan resous sa yo. Deklarasyon resous pa kreyatè modil yo kapab yon endikatè aktivite sispèk, tankou lè yon modil pwosesis tèks mande pèmisyon pou louvri yon koneksyon rezo. Yo tcheke pèmisyon yo okòmansman epi si yo chanje, chaj depandans yo rejte jiskaske siyati modil lokal la mete ajou.

Pou devlopman jwenti anba zèl Bytecode Alliance lan tradui plizyè ki gen rapò ak WebAssembly pwojè yo, deja separeman devlope pa konpayi fondatè alyans lan:

  • wasmtime — Runtime pou kouri aplikasyon WebAssembly ak ekstansyon WASI kòm aplikasyon regilye otonòm. Li sipòte tou de lanse WebAssembly bytecode lè l sèvi avèk yon sèvis piblik liy kòmand espesyal ak lyen ki pare dosye ègzèkutabl (wasmtime bati nan aplikasyon an kòm yon bibliyotèk). Wasmtime gen yon estrikti modilè fleksib ki pèmèt ou echèl la pou aplikasyon pou divès kalite, pou egzanp, ou ka kreye yon vèsyon dezabiye pou aparèy ki gen resous limite;
  • Lucet — du ak ègzekutabl pou egzekite pwogram nan fòma WebAssembly. Distenktif karakteristik Lucet se sèvi ak konpilasyon antisipatwa plen véritable (AOT, davans) olye pou yo JIT nan kòd machin apwopriye pou ekzekisyon dirèk. Pwojè a te devlope pa Fastly epi li optimize pou konsome resous minim ak lanse nouvo ka trè vit (Fastly sèvi ak Lucet nan yon motè enfòmatik nwaj ki sèvi ak WebAssembly pou moun kap okipe yo te lanse sou chak demann). Nan kad pwojè konjwen an, yo planifye pou konvèti du Lucet pou itilize Wasmtime kòm yon baz;
  • WAM (WebAssembly Micro Runtime) se yon lòt tan pou egzekite WebAssembly, orijinèlman Intel devlope pou itilize nan aparèy entènèt bagay yo. WAMR optimize pou konsomasyon resous minim epi li ka itilize sou aparèy ki gen yon ti kantite RAM. Pwojè a gen ladann yon entèprèt ak machin vityèl pou egzekite bytecode WebAssembly, yon API (yon sous-ensemble Libc) ak zouti pou jesyon aplikasyon dinamik;
  • leve teknik — yon dèlko kòd ki tradui yon reprezantasyon entèmedyè endepandan de achitekti pyès ki nan konpitè nan kòd machin ègzekutabl optimize pou platfòm pyès ki nan konpitè espesifik. Cranelift sipòte paralelizasyon konpilasyon fonksyon pou jenerasyon rezilta trè vit, ki pèmèt li itilize pou kreye konpilateur JIT (JIT ki baze sou Cranelift yo itilize nan machin vityèl Wasmtime);
  • WASI komen — yon aplikasyon separe WASI (WebAssembly System Interface) API pou òganize entèraksyon ak sistèm operasyon an;
  • kago-wasi — yon modil pou manadjè pake kago ki aplike yon lòd pou konpile kòd Rust nan bytecode WebAssembly lè l sèvi avèk koòdone WASI pou itilize WebAssembly deyò navigatè a;
  • wat и wasmparser — analizeur pou analiz tèks (WAT, WAST) ak reprezantasyon binè bytecode WebAssembly.

Pou rezime, WebAssembly se yon anpil tankou Asm.js, men diferan an ke li se yon fòma binè ki pa mare nan JavaScript epi ki pèmèt kòd entèmedyè ba nivo konpile nan divès langaj pwogramasyon yo dwe egzekite nan navigatè a. WebAssembly pa mande pou yon pèseptè fatra paske li itilize jesyon memwa klè. Lè w sèvi ak JIT pou WebAssembly, ou ka reyalize nivo pèfòmans tou pre kòd natif natal. Pami objektif prensipal yo nan WebAssembly se asire portabilite, konpòtman previzib ak ekzekisyon kòd ki idantik sou platfòm diferan.

Sous: opennet.ru

Add nouvo kòmantè