2026 年 8 月 20 日(UTC)、crates.io で人気 crate の arrayref を含む複数の crate に悪意あるバージョンが公開された。Rust の Security Response Team が同日中にすべて削除している。公開されていた時間は最短 86分、最長 107分だった。
Rust Blog が利用者に求めているのは一つで、手元の cargo キャッシュに該当バージョンが残っていないかの確認だ。
確認は find 一本で済む
Rust Blog は、該当 crate がローカルで使われたかを ~/.cargo/registry/cache で素早く確かめるコマンドを載せている。
find ~/.cargo/registry/cache -type f \( \
-name 'append-only-vec-0.1.9.crate' -o \
-name 'arrayref-0.3.10.crate' -o \
-name 'internment-0.8.7.crate' -o \
-name 'proc-macro1-*.crate' -o \
-name 'proc-macro-en-*.crate' -o \
-name 'aovine-*.crate' -o \
-name 'arone-*.crate' -o \
-name 'aronenao-*.crate' -o \
-name 'tinymember-*.crate' \
\) -print
対象は 9 種類ある。arrayref@0.3.10、internment@0.8.7、append-only-vec@0.1.9 の 3 つはバージョン指定で、proc-macro1、proc-macro-en、aovine、arone、aronenao、tinymember の 6 つは全バージョンが対象だ。proc-macro1 を自分で Cargo.toml に書いた覚えがなくても、書き換えられた arrayref@0.3.10 が依存として引き込む構造だったので、9 つすべてを機械的に確認する。何も出なければ、これらはローカルに取得されていない。
ブログが挙げているのは、開発者のローカル環境での確認だ。
公開から削除まで、最長でも 107分
削除された 3 つのバージョンについては、公開と削除の時刻がブログに載っている。
| crate | 公開(UTC、8 月 20 日) | 削除(同日) | 公開されていた時間 |
|---|
| arrayref@0.3.10 | 7 時 15 分 | 8 時 41 分 | 86分 |
| internment@0.8.7 | 7 時 34 分 | 9 時 4 分 | 90分 |
| append-only-vec@0.1.9 | 7 時 37 分 | 9 時 25 分 | 107分 |
出典:Rust Blog「Supply chain attack on arrayref」(2026 年 8 月 20 日)。時刻は分単位に丸めた。
JST に直すと 8 月 20 日 16 時 15 分から 18 時 25 分にあたる。ブログは対象になる環境の条件をこれ以上特定しておらず、利用者に求めているのは上の find コマンドによる確認だ。
ただし proc-macro1 系の 6 つは公開期間がブログに書かれていない。公開・削除の時刻が分かっているのは上の 3 バージョンだけだ。
起点は proc-macro1、arrayref は依存を書き換えられた
8 月 20 日 7 時 15 分(UTC)、proc-macro1 という crate が悪意あるものだという報告が Rust チームに届いた。Security Response Team が検証したところ、build script が悪意あるペイロードをダウンロードしていた。同系統の proc-macro-en、aovine、arone、aronenao、tinymember もあわせて削除されている。
さらに、arrayref が直近で再公開され、この proc-macro1 に依存するよう書き換えられていた。直近の正規バージョンは yank されていた。Cargo の文書によれば、yank されたバージョンは既存の lockfile からは引き続き取得できるが、lockfile を持たない新しい依存解決には使われない。攻撃者の意図までブログは書いていないが、再公開と yank が併せて見つかったことは書かれている。チームは悪意ある 0.3.10 を削除し、yank を元に戻した。同じ作者の internment と append-only-vec も同様の状態だったため、同じ対応が取られている。
作者本人が悪意を持って動いたとは Rust チームは見ていない。マシンか credentials が侵害された可能性が高いとして、アカウントは予防的にロックされた。ブログの公開時点では、本人への連絡を試みていると書かれている。最初の発見と報告は Nextron Systems GmbH のリサーチチームによる。
ヒットした場合の判断材料はまだ少ない
find で該当ファイルが見つかった場合に何をすべきかは、ブログに書かれていない。ペイロードの中身についての記載もなく、分かっているのは「build script が悪意あるペイロードをダウンロードした」という挙動までだ。
何も出なければ、ブログが利用者に求める確認はそこまでだ。悪意あるバージョンは crates.io から削除済みで、yank されていた正規バージョンも復元されている。
一次情報