セキュリティ企業Wizの研究者らが、Rustプログラミングエコシステムを標的とした最近のソフトウェアサプライチェーン攻撃について、北朝鮮の国家支援型脅威アクターとの関連性を指摘しました。
今回のキャンペーンでは、公式Rustパッケージレジストリであるcrates.ioでホストされている広く使われるオープンソースライブラリ複数が侵害され、プロジェクトのコンパイルが完了する前に開発者のワークステーションや継続的インテグレーション(CI)環境に侵入するよう設計されたバックドアが埋め込まれました。
事件は8月20日に発生しました。攻撃者が信頼されたオープンソースメンテナーのアカウントに侵入し、arrayref、internment、append-only-vecという3つの正規クレートを更新しました。
Rustプログラミング言語において、クレートとはコンパイラが一度に参照・ビルドする最小単位のコードを指します。単一のバイナリまたはライブラリファイルへとコンパイルされるモジュールのツリーとして機能します。
Rustアプリケーションを稼働するクラウド環境の75%が影響を受けた可能性
攻撃者は主要ライブラリのソースコードに直接悪意のあるコードを注入するのではなく、パッケージマニフェストを巧妙に改変し、proc-macro1という名前のタイポスクワッティング(誤字を悪用した)外部依存パッケージを読み込ませました。この不正パッケージは、Rustのパッケージマネージャーであるcargoの自動ビルドプロセスを悪用し、バックグラウンドで不正なペイロードをダウンロード・実行していました。
Wizの研究者であるRami McCarthy氏とBenjamin Read氏が、キャンペーン開始から数時間後に公開したレポートで説明しているように、ビルドスクリプトはコンパイル中に実行されるため、影響を受けたプロジェクトをビルドするだけでペイロードの実行には十分でした。
つまり、開発者や自動ビルドパイプラインは、生成されたソフトウェアが実際にデプロイ・実行されなかった場合でも、正規の依存パッケージを取得してコンパイルするだけで感染する可能性があったということです。
一度トリガーされると、この悪意のあるバイナリは機密データの窃取を狙い、保存されたWebブラウザの認証情報、暗号資産ウォレットの拡張機能、開発環境のシークレット情報を標的にしました。
この事件の影響範囲は甚大で、Wizのテレメトリによれば、arrayrefだけでRustアプリケーションを稼働するクラウド環境の約75%に存在していたことが判明しています。
本稿執筆時点で、arrayrefはcrates.io上で245,777,808回、internmentは14,432,082回、append-only-vecは4,503,638回ダウンロードされていました。
強い北朝鮮とのつながり
マルウェアを支えるコマンド&コントロール(C2)インフラを調査したところ、研究者らは既知の北朝鮮のサイバー活動との関連性を発見しました。
ネットワーク通信のパターン、サーバー構成、特定のエンドポイントパスは、Mastraフレームワークの大規模な侵害や、Axiosライブラリを標的とした汚染されたnpmパッケージを含む、過去のサプライチェーンキャンペーンで使われたものと直接一致していました。
Microsoftをはじめとする脅威インテリジェンスチームは、これらのキャンペーンの背後にいる脅威アクターをSapphire Sleetとして追跡しています。
「arrayrefのインフラは、最近の北朝鮮の脅威アクターに帰属するとされる活動と大幅に重複しています」とWizの研究者らは指摘しています。「今回のキャンペーンは、国家支援型の攻撃者が下流の企業ネットワークへの初期侵入を果たすため、開発者エコシステムを兵器化する動きを強めていることを浮き彫りにしています」。
Wizの研究者らはRust Security Response Teamに連絡を取り、同チームは侵害されたメンテナーの認証情報を速やかに無効化し、crates.ioから悪意のあるクレートのバージョンを削除しました。
しかし、このペイロードは実行時ではなくビルド段階で動作していたため、セキュリティチームは依存パッケージのロックファイルを確認して影響を受けたバージョンがないか調べ、汚染されたクレートをコンパイルしたシステムはすべて侵害されたものとして扱い、それらのマシンでアクセス可能な認証情報、クラウドのシークレット、APIキーを直ちにローテーションするよう強く求められています。
翻訳元: https://www.infosecurity-magazine.com/news/north-korean-rust-supply-chain/