proc-macro2になりすまし、build.rsで即実行 #
2026年8月20日、Rustのパッケージレジストリcrates.ioで、広く使われるarrayref・internment・append-only-vecの3クレートが改ざんされた。攻撃者は事前にproc-macro2の作者を装ったGitHub/crates.ioアカウントを用意し、正規のproc-macro2を複製した「proc-macro1」を公開。数時間後、ビルドスクリプトにペイロード取得コードを仕込んだ武器化版に差し替えた。改ざんされた3クレートの最新版はこのproc-macro1への依存を新規に追加しており、依存ツリーに紛れ込んだ状態で配布された。arrayrefだけでも累計2億4,500万DL、依存クレート403件という規模で、Rust環境の4分の3に存在するとWizは報告している。
1.0.106 を公開し様子を見る。1.0.107 へ更新。arrayref 等3クレートが新規依存として取り込み、build.rsで自動実行。cargo buildしただけで感染が成立する #
Rustのビルドスクリプト(build.rs)は依存解決後にコンパイラが自動実行する仕組みで、成果物を配布・実行する必要すらない。武器化版proc-macro1のbuild.rsは、Base64で分割したURL断片を実行時に結合し、証明書を無条件に受理する独自TLS実装でペイロードを取得。OS判定のうえUnixでは実行ファイル、Windowsでは非表示PowerShell経由で起動する。ビルド自体は正常終了しテストも通過するため、CIログを見ても気付けない。ライブラリ本体のソースは無改変という点も発見を遅らせた。
開発者・CI管理者が今すぐ確認すべきこと #
依存関係の自動更新やlockfile未固定の環境は特に危険で、CIのビルドマシンが即座に侵害対象になる点はサプライチェーン攻撃の定石そのものだ。Cargo.lockのコミット必須化、依存追加時の差分レビュー、CI環境でのアウトバウンド通信制限が実効的な防御になる。crates.io側の新規メンテナ本人確認の強化も今後の焦点になりそうだ。
COMMENTS 0
No comments yet — be the first to leave one.