Mozilla, Fastly, Intel et Red Hat lancent l�Alliance Bytecode, une initiative construite autour de WebAssembly
Qui propose d�apporter plus de s�curit�, d�ubiquit� et d�interop�rabilit� sur le Web
Dans un effort commun visant � faire de WebAssembly un runtime informatique multiplateforme, les entreprises Mozilla, Fastly, Intel et Red Hat ont annonc� le lancement de l�Alliance Bytecode. Cette initiative architectur�e autour de WebAssembly est ax�e sur la fourniture d�un bytecode s�curis� par d�faut qui peut �tre ex�cut� depuis un navigateur Web, un ordinateur de bureau ou une plateforme IoT/embarqu�e.
Pour rappel, WebAssembly a �t� pr�sent� comme une architecture de jeu d�instructions virtuel avec de nombreux cas d�utilisation capable de prendre du code �crit dans des langages de programmation autres que JavaScript et d�ex�cuter ce code sur une plateforme sp�cifique � du moins � l�origine -, un navigateur en l�occurrence. Cette solution devrait �galement permettre aux applications complexes - telles que les jeux vid�o immersifs en 3D, le design informatis� ou l��dition d�images et de vid�os - de fonctionner de fa�on optimale sur les plateformes cibles. Gr�ce � WebAssembly, des d�veloppeurs seraient par exemple en mesure de coder leurs applications en C, C++ ou en Rust et de faire ex�cuter ces programmes � la vitesse native sur un navigateur Web, sans avoir � repasser par JavaScript avec les contraintes que cela impose.
Selon les promoteurs l�initiative, la mont�e en puissance du Cloud et des p�riph�riques IoT fait que les d�veloppeurs ex�cutent du code non fiable dans de nouveaux environnements, ce qui soul�ve de nouveaux probl�mes, notamment en mati�re de s�curit� et de portabilit�. L�Alliance Bytecode devra fournir une base permettant aux d�veloppeurs d�ex�cuter en toute confiance du code non fiable sur n�importe quelle infrastructure, syst�me d�exploitation et p�riph�rique. Cette communaut� open source se focalisera sur la mise en place d�un environnement d�ex�cution et de cha�nes d�outils linguistiques associ�es � incluant cargo-wasi, wat et wasmparser � qui offrent s�curit�, efficacit� et modularit� sur une large gamme d�architectures et de p�riph�riques. Le projet devrait s�appuyer sur les normes existantes telles que WebAssembly et WebAssembly System Interface (WASI).
Les nanoprocessus de WebAssembly
WebAssembly peut fournir le type d�isolation qui permet d�ex�cuter en toute s�curit� du code non fiable, gr�ce � une architecture similaire aux nombreux petits processus d�Unix, ou aux conteneurs et aux microservices. Toutefois, cet isolement est beaucoup plus l�ger et la communication entre les nanoprocessus de WebAssembly ne souffre d�aucune r�duction de performance, au contraire. Cela signifie que vous pouvez les utiliser pour empaqueter une seule instance de module WebAssembly ou une petite collection d�instances de module qui veulent partager des choses comme la m�moire entre eux. De plus, vous n�avez pas besoin d�abandonner le langage de programmation, comme les signatures de fonctions et le contr�le de type statique.
Cette propri�t� est due au fait que chaque module WebAssembly est sandbox� par d�faut ainsi qu�� la particularit� de l�architecture m�moire. En effet, chaque module WebAssembly n�a pas acc�s � la totalit� de la m�moire dans son processus - uniquement au bloc de m�moire qui lui a �t� assign� et qui est isol� du reste du pool -. En parall�le, gr�ce � une fonctionnalit� introduite en aout dernier sur WebAssembly - les types d�interfaces -, il est facile pour deux modules d��changer des donn�es, mais toujours de fa�on s�curis�e et rapide, et le moteur de WebAssembly permet d�effectuer des copies directes au niveau de la m�moire. Ces op�rations fonctionnent m�me si les deux modules ne sont pas compil�s � partir du m�me langage.
Malheureusement, la fa�on dont la plupart des syst�mes d�exploitation g�rent l�acc�s au syst�me de fichiers n�offre pas forc�ment un niveau de s�curit� optimal et il ne suffit pas de prendre des pr�cautions vis-�-vis de la gestion m�moire entre les modules WabAssembly pour que tout soit parfaitement s�curis�. Il faut aller encore plus loin et s�int�resser aux API et aux appels syst�me qui int�grent � le concept de permission �, de sorte qu�ils puissent octroyer diff�rentes permissions � diff�rents modules et diff�rentes ressources. C�est l� qu�intervient la fonctionnalit� baptis�e WASI (WebAssembly system interface) qui permet d�isoler ces diff�rents modules les uns des autres, de leur octroyer avec pr�cision des permissions bien sp�cifiques et de verrouiller le syst�me.
Malgr� tout, le syst�me n�est pas encore au point, les d�veloppeurs en charge du projet ayant eux-m�mes reconnu que pour l�instant, ils n�ont trouv� aucun moyen de faire passer les cl�s de contr�le du syst�me par l�arbre des d�pendances. � ce sujet, ils ont confi� : � Nous avons besoin d�un moyen pour permettre aux modules parents de donner ces cl�s � leurs d�pendances. De cette fa�on, ils peuvent donner � leurs d�pendances exactement les cl�s dont ils ont besoin et aucune autre. Et puis, ces d�pendances peuvent faire la m�me chose pour leurs enfants, jusqu�au bout de l�arbre �. Mais ils comptent bien s�attaquer � cet ultime d�fi. Sur le plan technique, ils pr�voient d�utiliser une forme de virtualisation granulaire par module. L�id�e est de fournir un �cosyst�me WebAssembly s�curis� par d�faut pour toutes les plateformes qui pourra prot�ger efficacement contre les codes malveillants ou les vuln�rabilit�s inh�rentes au code, par exemple.
L�avis des promoteurs du projet
Luke Wagner, un ing�nieur chez Mozilla, a expliqu� � ce propos : � Le standard WebAssembly est en train de transformer le Web et nous pensons qu�il peut jouer un r�le encore plus important au sein de l��cosyst�me des logiciels, en se d�veloppant au-del� des navigateurs. C�est un moment unique pour cette nouvelle technologie, car nous avons l�occasion de r�parer ce qui est obsol�te et d��tablir, pour un d�veloppement natif, de nouvelles fondations s�curis�es par d�faut, mobiles et �volutives. Nous devons toutefois prendre des mesures r�fl�chies et � travers l�industrie pour nous assurer que ces mesures sont bien appliqu�es �.
De son c�t� Mark Skarpness, vice-pr�sident de la division Architecture, Graphiques et Logiciels d�Intel a d�clar� : � Intel rejoint l�Alliance Bytecode en tant que membre fondateur afin d�offrir � un large �ventail d�applications et de serveurs de meilleures performances et une s�curit� renforc�e de l�environnement WebAssembly, en allant au-del� du navigateur. Les technologies de l�alliance Bytecode peuvent aider les d�veloppeurs � faire �voluer les logiciels en utilisant une multitude de langages et en s�appuyant sur toutes les capacit�s des plateformes de calcul de derni�re g�n�ration �.
Chris Wright, Senior Vice-President et Chief Technology Officer chez Red Hat, estime quant � lui que � les technologies Open Source jouent un r�le important dans la mise en place des fondations informatiques, du syst�me d�exploitation au navigateur en passant par des clouds hybrides ouverts �. Il a ajout� : � Nous sommes heureux de participer avec nos partenaires � son �volution vers un projet mature et enti�rement communautaire �.
Un certain nombre de projets open source ont �t� apport�s � ce projet par les diff�rents membres. Il s�agit notamment de :
- Wasmtime, un environnement d�ex�cution l�ger et performant pour WebAssembly et WASI ;
- Lucet, un environnement d�ex�cution avec compilation hors ligne pour WebAssembly et WASI ax� sur les applications � faible latence et � haute concurrence ;
- WebAssembly Micro Runtime (WAMR), un environnement d�ex�cution WebAssembly bas� sur un interpr�teur pour les p�riph�riques embarqu�s ;
- Cranelift, un g�n�rateur de code multiplateforme qui met l�accent sur la s�curit� et la performance, �crit en Rust.
Source : Mozilla, Alliance ByteCode
Et vous ?
Que pensez-vous de cette initiative ?
Voir aussi
Le WebAssembly serait moins performant en terme de rapidit� que le code natif, selon les r�sultats d'une �tude
50 % des sites web utilisent WebAssembly � des fins malveillantes, selon une �tude de la Technische Universit�t Braunschweig
RustPython, un interpr�teur Python �crit en Rust et compatible avec WebAssembly, est disponible, pourrait-il rivaliser avec CPython ?
Mozilla finance un portage de Julia en WebAssembly afin d'effectuer des calculs lourds au sein du navigateur
Partager