出来事の日付:2026年8月20日

ソフトウェア・サプライチェーンセキュリティー企業SafeDepの分析によると、広く使用されているRustクレート`arrayref`の侵害されたリリースに、影響を受けるプロジェクトのコンパイル中にマルウェアをダウンロードして実行する依存パッケージが導入された。その後、悪意のあるパッケージの各バージョンはcrates.ioから削除された。

`arrayref`のバージョン0.3.10では、正規の`proc-macro2`パッケージに似せたタイポスクワッティング名の`proc-macro1`が追加された。この悪意のある依存パッケージは、通常のビルドを継続できるよう正規の`proc-macro2`のソースをコピーしていたが、バージョン1.0.107にはビルドスクリプトを追加していた。Cargoは、アプリケーションコードから呼び出されない場合でも、非オプションとして宣言された依存パッケージをビルドするため、マニフェストの変更だけでスクリプトを実行するには十分だった。

SafeDepは、`arrayref`と`append-only-vec`の正規メンテナーのアカウントが侵害されたとみられると述べた。正規メンテナーのデイヴィッド・トルネイが使う`dtolnay`という名前に近い`dtolney`という別の公開者アカウントが、偽造した作者メタデータと、実在しないリポジトリへのリンクを付けて`proc-macro1`をアップロードした。

ビルドスクリプトは、base64の断片からサーバーアドレスを復元し、ホストのOSとアーキテクチャーに対応するバイナリーを選択したうえで、あらゆる証明書を受け入れるよう設定されたTLS接続を通じてダウンロードした。Unixでは、実行可能ファイルを`/tmp/rust-setup`に書き込み、完了を待たずに起動した。Windowsでは、一時ディレクトリ内にPowerShellファイルと非表示のVBScriptランチャーを作成し、Cargoが通常どおり終了できるよう実行を切り離した。

以前の安全な`arrayref`リリースである0.3.5から0.3.9はyankされていた。分析で引用されたRustSecの報告者によると、その措置によりCargoのユーザーが、当時yankされていない唯一のバージョンだった0.3.10へ更新するよう促される可能性があった。

このクレートが広く利用されていたため、事件は重大なものとなったが、ダウンロード総数から侵害されたシステム数は分からない。SafeDepの集計では、`arrayref`の累計ダウンロード数は約2億4500万件で、安全なバージョン0.3.9の約1億5200万件も含まれる。このパッケージは、`tiny-skia`、`sctk-adwaita`、`winit`などの依存関係を通じ、Rust製グラフィカルソフトウェアに推移的に含まれている。

研究者が挙げた侵害指標には、ポート9089および443での`23.254.165.112`への接続、Unix上の`/tmp/rust-setup`、Windowsの一時ディレクトリ内の`rust-setup.ps1`と`rust-setup-launch.vbs`が含まれる。

報告書は、危険にさらされたことと感染が確認されたことを区別している。悪意のあるバージョンを選択した依存関係グラフをコンパイルするだけで第1段階のコードが作動する可能性はあったが、ダウンロード数の集計から、それがどこで起きたかは分からない。リスクを評価する開発者は、エコシステム全体の件数だけから侵害を推測するのではなく、解決済みの依存パッケージのバージョン、ビルド記録、ネットワーク活動、挙げられたファイルを調査する必要がある。

有害な動作は依存パッケージのビルドスクリプト内に存在していたため、目に見える`arrayref`のマクロ実装だけをレビューしても、その実行経路は明らかにならなかった。この事件は、アプリケーションが実行される前から、ビルドツールが推移的依存パッケージに与える権限の大きさを浮き彫りにしている。挙げられたバージョンが削除されたことで、crates.ioから新たに解決されることは防げるが、それだけでは、それらが提供されていた間にコンパイルしたマシンの状況を評価できない。