dev.to | 📄 原文链接 | 2026-10-01 收录

arrayref 里的 Rust 恶意代码:一个 build.rs 在编译时跑起了载荷

来源:dev.to — 2026-09-30

📋 概述

2026 年 8 月 20 日,Rust 恶意代码经由 crates.io 上一个被大量下载的小 crate 进入生态:arrayref 0.3.10 只多了一个依赖 proc-macro1,那是对真正 proc-macro2 的仿冒名,发布账号 dtolney 与真正的维护者 dtolnay 只差一个字母。它带来的 build script 会在你的项目编译时下载并启动一个二进制文件——因为 cargo build 按设计就会以你的身份、在你的机器上运行依赖的代码。Rust 安全响应团队在 86 分钟后删除该版本,期间它被下载 2285 次,不到该窗口 arrayref 流量的 10%,因为大多数 lockfile 还锁在 0.3.9。更狠的一步是攻击者把干净的 arrayref 版本全部撤下,让 Cargo 自己那句「考虑升级到未被撤回的版本」的提示把人引向投毒版本。同一账号的 internment 与 append-only-vec 也遭同样处理,共六个恶意 crate 被删除。作者对官方响应的评价是「需要复核」:删除很快,但事后 crate 页面、cargo audit 和 build script 模型几乎什么都不告诉你。

🔑 核心要点

💡 金句

cargo build 会以你的身份、在你的机器上运行你依赖的代码,这是设计使然。
← 返回 dev.to 首页