MozillaのLin Clark氏は先頃、Bytecode Alliance設立を発表した。Bytecode Allianceは、ブラウザ内外においてデフォルト状態で安全性の確保されたWebAssemblyエコシステムの成長を実現するための、標準の提案と実装を目的とした、業界的なパートナシップである。サードパーティ製Wasmパッケージ実行時の分離性と安全性を提供する手段として、Bytecode Allianceではナノプロセス(nanoprocess)という概念を導入している。
Bytecode Allianceの創設にはMoziilaの他、Fastly、Intel、Red Hatが参加しており、現在のサードパーティパッケージの広範な利用に伴うセキュリティ問題を軽減すべく、モジュール化されたWebAssemblyエコシステムの促進を協力して進めている。Lin Clark氏の提供する情報によれば、アプリケーションコードの約80パーセントはnpm、Pypy。crates.ioといったパッケージレジストリに由来するという。このようなサードパーティ製パッケージは、アプリケーション開発をスピードアップする一方で、セキュリティ上の問題も発生させる。サードパーティ製パッケージを信頼する開発者が、アプリケーション全体と同じような機能をそれらに与えると、それが悪意のあるパッケージによって想定外の目的に使用される可能性があるのだ。Lin Clark氏は警告する。
コミュニティとして、私たちには選択肢があります。WebAssemblyエコシステムがソリューションを提供する ... 少なくとも、デフォルトで安全になるような設計をすることが可能です。しかし、もしそれをしなければ、WebAssemblyが問題をさらに悪化させることになるかも知れません。
WebAssemblyエコシステムが拡大すればするほど、問題解決の必要性は高まります。それは今や、単独では解決が難しいほどになっています。Bytecode Allianceの意義はここにあるのです。
分離した環境内で、事前に決定された限定的な機能によるパッケージ動作のみを可能にするナノプロセスの提案により、Bytecode Allianceでは、悪意のあるパッケージによるセキュリティ脆弱性のステミング動作を封止し、動作不能にすることを目指している。Lin Clark氏が説明する。
私たちは団結して、クラウド、ネイティブ、デスクトップ、あるいは小型のIoTデバイスなど、実行場所がどこであっても信頼性の低いコードを安全に使用できるような、強固で安全な基盤を提供します。
これによって開発者は、現在と同じような方法でオープンソースを利用して、現在と同じように生産的でありながら、ユーザをリスクにさらすことがなくなるのです。
ナノプロセスは、(サンドボックスやメモリアイソレーションなどの)既存あるいは提案中のセキュリテイ指向のWebAssembly機能とWASI(機能ベースのセキュリティモデル)の上に構築されることで、サードパーティパッケージに提供する機能の詳細な管理を可能にしている。
WASIアプリケーションに提供されるのは機能である。これは、必要なアクセス権を指定せずに対象リソースのみを指定するような、偽造される危険性のある(ファイルパスのように)リソース参照指定とは異なるものだ。WASIモデル下のコードは、例えば、指定されたディレクトリにのみアクセスすることが可能である。すなわち、ランタイムがアプリケーションの使用可能なファイル記述子をトップレベルのコードに渡し、必要に応じてシステムの残りの部分に伝播される、という方法を採用する。
ナノプロセスはさらに一歩進んで、(ランタイムあるいは親ナノプロセスから)伝搬した機能の中で、選択されたサブセットのみが下位のサブセットに引き渡し可能になっている。発表のブログ記事ではLin Clark氏が、そのメカニズムについて次のような図で説明している。
興味のある読者は発表のブログ記事を参照して、WebAssemblyナノプロセスsの詳細と、期待されるその他のメリットについて確認するとよいだろう。
Bytecode Allianceではすでに、WebAssemblyランタイム(Wasmtime、Lucet、WebAssembly Micro Runtime)、ランタイムコンポーネント(Cranelift、WASI common)、言語ツール(cargo-wasi、wat、wasmparser)など、一連の既存プロジェクトとの共同作業に着手すると同時に、WASI標準の開発作業やRust to WebAssemblyワーキンググループでの作業も進めている。
Bytecode Allianceでは、アライアンス拡大に向けて新たなメンバの参加を歓迎している。興味のあるグループはhello@bytecodealliance.orgまで、Eメールで連絡してほしい。