研究者らは、3つのRustクレートを狙った攻撃と、北朝鮮関連とされる最近のキャンペーンとの間に、インフラの重大な重複を発見しました。
広く使われているarrayrefを含む3つのRustパッケージの悪意あるバージョンが8月20日、crates.ioレジストリに公開されました。これらにはバックドアが仕込まれており、影響を受けるプロジェクトがコンパイルされると自動的に実行される仕組みになっていました。
Wizのセキュリティ研究者によると、この攻撃は北朝鮮の脅威アクターによるものとされる最近のサプライチェーン攻撃キャンペーンとインフラを共有しているとのことです。
侵害されたリリースは「[email protected]」「[email protected]」「[email protected]」の3つです。いずれも「proc-macro1」という依存パッケージを新たに導入していましたが、これは正規で広くダウンロードされている「proc-macro2」クレートのタイポスクワッティング(綴り違い便乗)でした。
Wizの研究者らはブログ投稿で、この悪意ある依存パッケージにはビルドスクリプトが含まれており、コンパイル中に第2段階のペイロードをダウンロードして実行していたと述べています。「第2段階のペイロードはプラットフォームに応じて選択され、LinuxのX86_64版、Windows、macOSに加え、aarch64版macOSにも対応していました」と研究者らは付け加えています。
StepSecurityの分析によると、arrayrefは累計ダウンロード数が2億4,500万件に達し、そのうち過去90日間だけで5,370万件を占めています。同社は、各クレートの侵害が発覚するまでの露出時間をそれぞれ86分、90分、107分と推定しており、その後すべて関連クレートとともに削除されました。
この攻撃は当初、研究者のjhobern氏によってRustSecおよび[email protected]に報告されましたが、その時点ではarrayrefの侵害のみが判明していました。
悪意あるコードはビルド時に実行された
この攻撃では、開発者が不審なコードを実行したり、arrayrefから関数を呼び出したりする必要すらありませんでした。「Rustのビルドスクリプトはコンパイル時に実行されるため、ロックファイルがarrayref 0.3.10を解決したプロジェクトをビルドするだけでペイロードが起動するには十分でした。クレートのコードが呼び出される必要すらなかったのです」とStepSecurityの研究者らは述べています。
影響を受けたパッケージがビルドされると、設定ファイル「Cargo.toml」にproc-macro1が依存パッケージとして追加されました。この依存パッケージは、Base64でエンコードされた断片からコマンド&コントロール(C2)のURLを再構築し、TLS証明書の検証を無効化した上で、プラットフォーム固有のペイロードをダウンロードし、通常のビルドプロセスの一環として実行していました。
Wizによると、このペイロードはホスト名、ユーザー名、OS情報を収集し、インストール済みアプリケーションを列挙するほか、Chrome、Brave、Edgeのプロファイルを調べて保存済みログイン情報や拡張機能の情報を探っていたとのことです。
さらに、Windowsのレジストリの実行キー、macOSのLaunchAgents、Linuxのsystemdユーザーサービスを通じて永続化を確立できるほか、コマンドを受け取って自身の設定を変更したり、終了したり、スクリプトをダウンロードして実行したりすることも可能でした。
このペイロードはLinux、Windows、macOS(Apple Siliconを搭載したMacを含む)に対応していました。また、主要なC2が利用できなくなった場合に備えて、5日ごとに10個の.comドメインを生成できるフォールバック用のドメイン生成メカニズムも備えていました。
北朝鮮のキャンペーンとのつながり
Wizは、このペイロードのインフラが北朝鮮の関与が指摘される最近の作戦と「大幅に重複している」と述べています。
最も有力な手がかりは、C2へのリクエストパスだとしています。このバックドアは、Microsoftが北朝鮮関連のDPRK系グループSapphire Sleetによるものと断定したMastraキャンペーンでも使われていたエンドポイントと通信しています。arrayrefキャンペーンで使われたIPインフラも、同作戦に関連するインフラとSSL証明書の発行者を共有していました。
もう一つのつながりは、npmサプライチェーン攻撃であるAxiosキャンペーンとの関連です。Wizによると、あるC2通信の被害者から報告されたIPアドレスは、Google Cloud Threat IntelligenceによるAxios攻撃の分析にも登場したもので、Mandiantはこれを北朝鮮に関連付けています。
Wizは各組織に対し、「Cargo.lock」ファイルおよびローカルのCargoキャッシュ内に、侵害されたバージョンや攻撃者が管理するパッケージが含まれていないか確認するよう推奨しています。また、影響を受けたプロジェクトを実際にビルドした開発者用ワークステーションやCIランナーはすべて侵害済みとみなし、アクセス可能な認証情報、トークン、鍵をローテーションした上で、クリーンなソースから成果物を再ビルドすべきだとも述べています。