Rustサプライチェーン攻撃が広く利用されるクレートに被害、Solanaエコシステムへの影響の可能性も
重要ポイント
- •セキュリティ研究者らは、Rustエコシステムにおいてarrayref@0.3.10、internment@0.8.7、append-only-vec@0.1.9の悪意あるリリースを報告した。
- •侵害されたパッケージにはproc-macro1に似せた依存関係が含まれており、そのビルドスクリプトはコンパイル中にリモートペイロードをダウンロードして実行する可能性があった。
- •Cargoはビルドスクリプトを自動的に実行するため、開発者やCI環境は影響を受けたバージョンをコンパイルするだけで危険にさらされる可能性があった。
- •Rustのセキュリティチームは悪意あるリリースを削除し、これらのパッケージに関連するメンテナーのアカウントをロックした。
- •影響を受けたクレートは一部のSolana関連の依存関係チェーンに現れるが、報告ではSolanaや下流プロジェクトが侵害されたことは示されていない。

組織的なサプライチェーン攻撃が、広く利用されている複数のRustパッケージを標的にし、依存関係チェーンにSolanaエコシステム関連のコンポーネントが含まれる開発者やプロジェクトの間で懸念を引き起こしている。SlowMist、Socket、StepSecurityのセキュリティ研究者らは、悪意あるリリースがarrayref@0.3.10、internment@0.8.7、append-only-vec@0.1.9に影響を与えたと報告した。
侵害されたリリースには、正規のproc-macro1パッケージに似せたタイポスクワッティングによる依存関係が導入されており、そのビルドスクリプトはCargoによるビルド中にリモートペイロードをダウンロードして実行していた。その結果、影響を受けたバージョンのいずれかに依存するプロジェクトをコンパイルするだけで、開発者や継続的インテグレーション(CI)システムが危険にさらされる可能性があった。Xの@WuBlockchainが共有した情報によると、Rustのセキュリティチームは悪意あるリリースを削除し、侵害されたメンテナーのアカウントをロックした。
依存関係チェーンを通じて配信された悪意あるパッケージ
本件は、アプリケーションやソフトウェアプロジェクトの機能をサードパーティ製クレートに頼ることが一般的であるRustのパッケージエコシステムを中心に起きた。このケースでは、研究者らは3つのクレート、すなわちarrayref@0.3.10、internment@0.8.7、append-only-vec@0.1.9の悪意あるバージョンを特定した。
悪意あるリリースには、正規のproc-macro1パッケージに似せて設計された依存関係が含まれていた。タイポスクワッティングとして知られるこの手法は、悪意あるパッケージを正規の依存関係に似せて見せることを狙うものである。これはnpmやPythonのPyPIなどオープンソースのレジストリで繰り返し見られる戦術であり、類似の名前が日常的な依存関係の更新を通じて悪意あるコードを混入させるためにたびたび利用されてきた。
この攻撃が特に重大視されたのは、悪意ある依存関係に、影響を受けたパッケージのコンパイル時にリモートペイロードをダウンロードして実行しうるビルドスクリプトが含まれていたためである。したがって、セキュリティリスクは、明らかに不審なプログラムを手動でインストールまたは実行したユーザーだけにとどまるとは限らず、通常のソフトウェアコンパイル処理の一環として、開発者のワークステーションやCI環境が影響を受ける可能性があった。
ビルドプロセスが生んだ潜在的なセキュリティリスク
CargoはRustのパッケージマネージャー兼ビルドシステムであり、開発者は日常的にこれを使って依存関係を取得し、プロジェクトをコンパイルしている。報告された攻撃はこのワークフローを悪用した。Cargoはコンパイルの一環としてクレートのビルドスクリプトを自動的に実行するため、このようなスクリプトはビルドを実行するユーザーまたはCIアカウントの権限で実行される。
影響を受けた依存関係がコンパイルされると、悪意あるビルドスクリプトはリモートペイロードをダウンロードして実行する可能性があった。これにより、攻撃者が開発者のマシンやCIホスト上でコードを実行しうる潜在的な経路が生じた。
CIシステムは、コードを自動的にビルド、テスト、デプロイするものであり、現代のソフトウェア開発において特に重要である。したがって、侵害されたビルド環境は、単一の開発者ワークステーションを超えるリスクをもたらしうる。ビルドマシンや開発者のワークステーションには、APIトークン、デプロイキー、署名素材などの認証情報が保持されていることが多いためである。この理由から、セキュリティチームは通常、ビルド時のコード実行を、影響を受けたシステム上に存在するシークレットをローテーションする根拠とみなしている。
本件は、開発者自身が記述またはレビューしていない依存関係を通じて悪意あるコードがプロジェクトに間接的に入り込む可能性がある、ソフトウェアサプライチェーンにまつわるより広範なセキュリティ上の課題を浮き彫りにしている。
Solana関連の依存関係チェーンに注目が集まる
arrayrefクレートはRustエコシステム全体で広く利用されており、Solanaに関連するコンポーネントを含む依存関係チェーンに現れる。Solanaのバリデーターソフトウェアとその周辺ツールの多くはRustで書かれており、クレート自体はブロックチェーン専用ではないものの、arrayrefのような汎用クレートがSolana関連の依存関係ツリー内に現れる理由はここにある。ただし、依存関係チェーン内に影響を受けたクレートが存在することは、下流のSolana関連プロジェクトが侵害されたことを意味しない。
この区別は重要である。オープンソースソフトウェアは多数の階層にわたる依存関係の上に成り立つことが多いためだ。脆弱性のある、または侵害されたパッケージがプロジェクトの依存関係ツリーのどこかに存在していても、最終的なアプリケーションやネットワークの侵害が必ずしも成立するとは限らない。
そのため、セキュリティ研究者は、悪意ある依存関係への露出と、特定の下流プロジェクトや環境内で悪意あるコードが実際に実行された証拠とを区別している。報告された本件は、影響を受けたリリースに悪意あるコードが含まれていたことを裏付けるものであるが、関連する依存関係を使用するすべてのプロジェクトが侵害されたことを裏付けるものではない。
Rustセキュリティチームが悪意あるリリースを削除
Rustのセキュリティチームは、悪意あるリリースを削除し、これらのパッケージに関連するメンテナーのアカウントをロックすることで対応した。報告された情報によると、メンテナーのマシンまたは公開用の認証情報が侵害された可能性が高いという。
侵害された公開アカウントは、オープンソースエコシステムにおいて重大なリスクとなりうる。攻撃者が正規のメンテナーの身元を装って悪意あるソフトウェアを配布できる可能性があるためだ。影響を受けたバージョンの削除はパッケージエコシステムを通じたさらなる配布を制限し、アカウントのロックは侵害された認証情報を通じた追加リリースの公開を防ぐ。侵害されたRustクレートに関するセキュリティ勧告は、コミュニティが管理するRustSec勧告データベースを通じて追跡されており、これはcrates.ioレジストリと並んで開発者が監視できるチャネルのひとつである。
本件はまた、プロジェクトが大規模で複雑な依存関係ツリーに依存している場合には特に、依存関係を監視し、予期しないパッケージの更新をレビューすることの重要性を示している。
Rust開発者へのより広範な影響
サプライチェーン攻撃は、最終的なアプリケーションを直接攻撃するのではなく、アプリケーションの構築に使用されるインフラと依存関係を標的とするため、ソフトウェア開発全体における重大なセキュリティ上の懸念となっている。本件では、悪意あるコードはパッケージのリリース内に埋め込まれ、ビルドプロセス中に起動した。この手口には十分に記録された先例がある。2024年3月に発覚したXZ Utilsバックドアでは、攻撃者が基盤的なオープンソース圧縮ライブラリにおけるメンテナーの立場を悪用し、また2024年12月にはnpm上の@solana/web3.jsパッケージが侵害され、Solana開発者に広く利用されているJavaScriptライブラリに影響が及んだ。いずれの事案も本件と同様に、メンテナーアカウントやパッケージの識別情報に対する信頼が攻撃対象になりうることを示している。
Rustプロジェクトを利用する開発者は、依存関係のバージョンを監視し、予期しない変更をレビューし、不審なパッケージや依存関係の動作を特定できるセキュリティツールを使用することで、同様の事象への露出を減らすことができる。本件に関して具体的には、Cargo.lockなどのロックファイルで影響を受けた3つのバージョンを検索し、CIおよびビルドログに予期しない外向きのネットワーク通信がないか確認し、影響を受けたリリースをコンパイルしたマシン上の認証情報をローテーションすることが該当する。自動化されたCI環境に依存する組織も、ビルドインフラのセキュリティを考慮する必要がある。悪意ある依存関係は、アプリケーションのデプロイ前にコードを実行する可能性があるためだ。
Rustエコシステムの対応は、協調的なセキュリティ監視と侵害されたパッケージの迅速な削除の重要性を示している。影響を受けたクレートはSolana関連コンポーネントを含む依存関係チェーンとつながっているものの、入手可能な情報は、Solana自体または特定の下流プロジェクトが侵害されたことを裏付けていない。本件はむしろ、公開用認証情報やメンテナーの環境が侵害された場合、広く利用されているオープンソースの依存関係が潜在的な攻撃経路になりうることを改めて思い出させるものである。
出典:Hokanews