毎月、MetaMaskのセキュリティディレクターであるLukerが、知っておくべき最新の暗号資産攻撃と新たなリスクについてレポートします。
2022年10月、EndoプロジェクトはSES v0.17.0をリリースし、待望の「クアドラプルバックフリップ」エバリュエーターリファクタリングを実現しました。これにより、LavaMoatは独自のSESパッチを廃止できるようになりました。また、LavaMoat自体にはグローバルスカットリングとプログラマティックAPIが追加されました。脅威面では、Socket.devがnpm binスクリプトコンフュージョンを公開しました。これは、パッケージのbinフィールドを通じて正規のCLIコマンドを乗っ取るサプライチェーン攻撃の手法ですが、@lavamoat/allow-scriptsはすでにこの攻撃を緩和できる位置づけにありました。MetaMaskはボゴタで開催されたDevcon VIに登壇し、2つのセキュリティトークを発表。Gal Weizmanによるjavascriptレルムに関する詳細な解説記事を公開し、コミュニティのSecurity Essentialsコールには4,000人以上が参加しました。詳細は以下の通りですが、まず最初に…
注目のSTEMパイオニア:コンパイラ最適化の先駆者、Frances Allen
Frances Allen(1932〜2020年)は、コンパイラ最適化の分野を切り開いたアメリカのコンピュータ科学者です。コンパイラ最適化とは、コードをより速く、より効率的に実行できるよう自動的に変換する技術です。IBMでの長年の勤務を通じて、プログラム解析と並列コンピューティングに基礎的な貢献をしました。2006年には、女性として初めてACMチューリング賞を受賞しました。Allenが切り開いたプログラムのコンパイルと実行に関する深い分析は、SESやLavaMoatのようなツールが信頼されていないコードを検証・分離・制約するために構築している基盤そのものです。
SES v0.17.0がEndoの「クアドラプルバックフリップ」エバリュエーターリファクタリングを実装
EndoプロジェクトはSES v0.17.0をリリースしました。このバージョンには、SES shimのエバリュエーターを多層スコープスタックへと再構成する「クアドラプルバックフリップ」リファクタリングが含まれています。このリファクタリングにより、スコーププロキシがリークする問題が修正され、グローバルスコープ処理における異なる関心事が個別のレイヤーに分離されました。重要な下流への恩恵として、LavaMoatは独自のパッチを維持することなく、変更されていないSES shimをそのまま使用できるようになりました。また、EndoのコンパートメントマッパーにLavaMoatスタイルのポリシーを導入する並行作業も継続されており、現在のプルーフオブコンセプトでは、パッケージごとのグローバルおよびビルトインの細かい制御(ビルトインAPIのプログラマティックな制限を含む)がサポートされています。
Socket.devがnpm binスクリプトコンフュージョンをサプライチェーン攻撃ベクターとして公開
セキュリティリサーチ企業のSocket.devが公開した情報によると、npm binスクリプトコンフュージョンとは、悪意のあるnpmパッケージがbinフィールドを使用して、信頼されたパッケージと一緒にインストールされた際に、node自体を含む正規のCLIコマンドを乗っ取る手法です。この攻撃は、既存のモジュールに悪意のあるコードを注入するのではなく、npmのパッケージリンクにおける設計上の動作を悪用するため、典型的なサプライチェーン攻撃よりも検出が困難です。GitHubの見解では、この動作は設計通りに機能しているとのことです。LavaMoatの@lavamoat/allow-scriptsは、インストールスクリプトの実行を許可するパッケージを制御することで、このクラスの攻撃をすでに緩和できる位置づけにありました。
LavaMoatがグローバルスカットリングとプログラマティックAPIを導入
LavaMoatは2022年10月に3つの主要なアップデートを提供しました。グローバルスカットリングは、ポリシーベースのエンドウメントに必要なグローバル参照をキャプチャした後、元の参照をグローバルスコープから削除することで、パッケージが強力なAPIへの間接参照を誤って渡すことを防ぎます。新しいプログラマティックAPI(require('lavamoat'))により、開発者はLavaMoatをCLIツールとしてのみ使用するのではなく、Node.jsアプリケーションやスクリプトに直接統合できるようになりました。また、@lavamoat/allow-scriptsの最新リリースでは、Yarn 3ベースのプロジェクトの設定をすぐに使えるサポートが追加されました。
MetaMaskがボゴタのDevcon VIで2つのセキュリティトークを発表
MetaMaskは2022年10月、コロンビアのボゴタで開催されたDevcon VIにて、セキュリティに焦点を当てた2つのプレゼンテーションを行いました。Antonela Debiasi氏はメインステージで「Usable Security in web3」を発表し、より広い普及を支援するためのセルフカストディアルウォレット設計におけるセキュリティとユーザビリティのバランスという課題を取り上げました。Kumavis(MetaMaskの共同創設者兼セキュリティリサーチリード)は「The Attacker is Inside: Javascript Supplychain Security and LavaMoat」を発表し、LavaMoatが暗号資産エコシステムにおけるJavaScriptサプライチェーン攻撃に対してどのように防御するかを解説しました。
Gal WeizmanがJavaScriptレルムとブラウザセキュリティに関する詳細解説を公開
LavaMoatのコントリビューターであるGal Weizman氏が、JavaScriptプログラムが動作する実行環境に関する技術的な詳細解説「What is a realm in JavaScript?」を公開しました。この記事では、攻撃者がiframeで作成されたレルムを悪用して、トップレベルウィンドウに適用されたセキュリティポリシーを回避し、改ざんされていないネイティブAPIにアクセスする方法を説明しています。これはまさに、LavaMoatのSnowツールが塞ぐために構築された攻撃対象領域です。
MetaMaskコミュニティのSecurity Essentialsコールに4,000人以上が参加
MetaMaskのコミュニティチームは、セルフカストディアルウォレットユーザー向けの基本的なセキュリティプラクティスを扱うSecurity Essentialsコールを開催しました。ライブセッションには4,000人以上が参加し、シークレットリカバリーフレーズの安全な管理、フィッシング詐欺の見分け方、トランザクションの確認方法などのトピックが取り上げられました。
MetaMaskの2022年10月暗号資産セキュリティレポートでは、「クアドラプルバックフリップ」エバリュエーターリファクタリングを実現したSES v0.17.0のリリース、npmのパッケージリンク設計を悪用するサプライチェーン攻撃ベクターとしてのnpm binスクリプトコンフュージョンに関するSocket.devの公開情報、そして強力なAPIへの間接参照リークを防ぐLavaMoatのグローバルスカットリング導入について取り上げました。エコシステム全体での安全を保つための脅威、トレンド、ヒントについては、MetaMask暗号資産セキュリティレポートのバックナンバーもご覧ください。