BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WebAssembly: デフォルトで安全なエコシステムの構築 - WebAssembly SummitでのLin Clark氏の講演

WebAssembly: デフォルトで安全なエコシステムの構築 - WebAssembly SummitでのLin Clark氏の講演

ブックマーク

原文(投稿日:2020/05/17)へのリンク

WebAssemblyとRustに焦点を当てたMozillaの主任研究エンジニアであるLin Clark氏は、WebAssembly Summitで、WebAssemblyが対処しなければならないセキュリティの課題について話し合った。Clark氏は、ナノプロセスの提案が、ポータブルでデフォルトで安全なWebAssemblyモジュールを提供するためにどのように努力しているかを説明した。

Clark氏は、セキュリティについて話すことを選んだ理由を説明することから始めた:

今日私が本当に話し合う必要があることが1つあることに気づきました。それは、現時点でコミュニティとして私たちが直面している選択です。これは、この新しいエコシステムを構築するときに行う必要のある選択です。その選択は、WebAssemblyを使用してより安全な未来を構築するか、悪いほうが良い (Worse is Better) アプローチを採用するかです。過去の過ちを拡張します。[…] WebAssemblyがWebの外に移動しているため、この選択は現在私たちに直面しています。

悪い方が良い (Worse is Better) は、1990年代にRichard P. Gabriel氏によって書かれた有名なエポニムエッセイに関連しており、彼は次のように主張した:

これから学ぶべき教訓は、最初に正しいことをすることはしばしば望ましくないということです。ウイルスのように広がるように、正しいことの半分を利用できるようにすることが良い。いったん人々がそれに夢中になったら、それを正しいことの90%に改善するために時間をかけるだろう。

それ以来、Worse is Better is Worse を書き続けたGabriel氏は、次の10年で2つの反対の立場の間で振動した。これは、成長の決定を均等に、または特にテクノロジーの初期段階で行うことの難しさを示している。WebAssemblyは現在Web標準であり、Webの外部でも標準 (WASIなど) の確立に努めているため、WebAssemblyが前進することを決定する方法は、ソフトウェア開発エコシステムに大きな影響を与える準備ができている。

WebAssemblyは、サーバ上のブラウザの外部、クラウド、またはIoTデバイスで実行するために使用され、また、ブラウザのサンドボックスも残る。Clark氏は、これらの環境はこれらの状況でユーザを安全に保つように設計されておらず、悪意のある人物が劇的に増加する割合でそれを利用していると主張した。コードベースの80%がパッケージマネージャ npmpypicrates.io などの外部ソースからのものである大規模なモジュラアプリケーションは、悪意のあるパッケージがメインモジュールによって付与された信頼を悪用しているセキュリティ攻撃に特にさらされている。したがって、これらのパッケージは、ホストファイルシステム、メモリ、システムコールなどへの無制限のアクセスを享受できる。

Clark氏は、ハッカーが暗号通貨で150万ドル、ゼロデイでさらに約1,300万ドルを盗んだ electron-native-notify のnpmパッケージの例を挙げた。攻撃ベクトルとして使用される前は、このパッケージには便利な機能があった。これは、Electronアプリがさまざまなプラットフォームで機能する方法でネイティブ通知を送信するのに役立った。Clark氏は攻撃を次のように要約した:

  • Day 0: 攻撃者がモジュールを作成
  • Day 2: 攻撃者がモジュールを依存関係に配置
  • Day 17: 攻撃者が悪意のあるコードを追加
  • Day 41-66: ターゲットは npm update を実行し、悪意のあるコードをプル。
    この時点で、悪意のあるコードが財布 (Wallet) のシード、ユーザ名、パスワードの組み合わせをサーバに送信し始め、攻撃者はこれらすべての異なる財布のシードを使用してそれらの財布を空にすることができる。
    Day 90: 攻撃が検出される

攻撃では、システムリソース (シード変数を保持するメモリ、ネットワークソケット) に付与されたアクセスと、ホストが提供するAPIおよびシステムコール (ソケットを開く、ソケットでデータを送信するなど) を使用した。

Clark氏は、npm に公開された悪意のあるモジュールの数が2017年から2019年にかけて2倍以上になったと警告した。npm, Inc のセキュリティ担当副社長であるAdam Baldwin氏は、これらの攻撃がより深刻になり、経済的動機が高まり、辛抱強く計画されていると指摘した。

モジュラアプリケーションは、既知のセキュリティ脆弱性を持つパッケージの依存関係に起因するセキュリティリスクにもさらされている。Clark氏は、多くのエコシステム (JavaScript、Java、.Net、Go、Ruby、C++、Pythonなど) に見られるZip Slip脆弱性の例を示した。Zip Slipは、任意のファイル上書きの重大な脆弱性であり、通常、リモートコマンドが実行される。これは、HP、Amazon、Apache、Pivotalやその他多く (完全なリストはこちら) のプロジェクトを含む数千のプロジェクトに影響する。Snykは説明した:

[Zip Slip] は、アーカイブ (zipなど) ファイルの高レベルの処理を提供する中心のライブラリがないJavaで特に普及しています。このようなライブラリがないため、脆弱なコードスニペットが手作りされ、StackOverflowなどの開発者コミュニティ間で共有されていました。

前述の攻撃と同様に、Zip Slip攻撃も、システムリソース (ファイルシステム) へのアクセスを使用し、システムコールを書き込む

Snykはさらに、過去2年間で、ソフトウェアエコシステム全体でセキュリティの脆弱性が88%増加したと報告した。NPMパッケージの調査によると、パッケージの40%は、少なくとも1つの公に知られている脆弱性を持つコードに依存している。

したがって、Clark氏は、システムリソース、ホストのAPI、およびシステムコールへのアクセスを制限するメカニズムが、悪意のある攻撃者や脆弱性から保護するのに大いに役立つだろうと提案した。Clark氏は、残りのプレゼンテーションソリューションで、必要な制限を提供することについて説明した。システムリソースに関して、Clark氏は、ナノプロセス、OSプロセスが提供するのと同じ分離を提供する新しいメカニズム、およびモジュールごとの仮想化のきめ細かい形式について説明した。Clark氏はまた、モジュールが従属モジュールに自分自身に与えられたアクセスのみを与えることができ、それらが持っている機能の関連部分のみを引き渡すことを決定できる機能ベースのセキュリティシステムについても説明した。

Clark氏は、ナノプロセスで何が問題になっているのかを説明した:

それはまだWebAssemblyだけですが、特定のパターンに従います。このパターンをツールと規則に組み込むと
これを使用することで、サードパーティのコードを安全に再利用できるようになります。これは、これまで他のエコシステムにはなかった方法です。[…]
このパターンに従うことは、WebAssemblyを使用するための要件ではありません。これらのセキュリティプロパティが必要な場合は、このパターンに従う必要があります。これらの規則を確立してツールに組み込む必要があり、それにはある程度の作業が必要です。
[…] それは大きすぎて単独で解決できない問題です。そのため、Fastly、Intel、Mozilla、Red Hatと協力して、Bytecode Allianceを結成しました。ナノプロセスパターンを中心に構築されたツールを作成しています [… そして] これらの [デフォルトで保護された] 規則をツールに組み込んでいます。[…]
これにより、開発者は、ユーザを危険にさらすことなく、現在オープンソースで使用しているのと同じ方法で、同じぐらいの生産性ができます。

Clark氏は、開発者の生産性とユーザの安全性の間のトレードオフを受け入れない、壊れたものを修正し、ポータブルでスケーラブルなネイティブ開発のための新しいデフォルトで安全な基盤を構築する、新しい種類のエコシステムの台頭を見たいという願望を表明した。

完全な技術的詳細を含む完全な講演は、WebAssembly Summit Youtubeチャンネルで入手できる。

WebAssembly Summitは、2020年2月10日にSilicon Valleyで開催された。WebAssembly Summitは、WebAssemblyに関するすべてのことに関する1日のシングルトラックカンファレンスである。

この記事に星をつける

おすすめ度
スタイル

BT