关键词
投毒
Rust 官方开源包仓库crates.io今日遭遇重大软件供应链攻击事件。黑客通过攻陷上游知名核心维护者的账号,向累计下载量高达2.45 亿次的三大基础 Rust Crate 包发布了恶意后门版本。
该事件中最致命的特征在于,攻击代码隐藏在包构建脚本(build.rs)中。开发者只要在本地或 CI/CD 流水线中执行cargo build,在代码编译阶段就会自动下载并静默执行黑客后门,甚至无需在项目中显式调用任何相关函数。
投毒手法复盘:仿冒依赖 + 编译时动态拉取
根据 Rust 安全应急团队(Rust Security Response Team)通报,本次被投毒的核心版本包括:
❌arrayref0.3.10(下载量超 2 亿次的基础底层库)
❌internment0.8.7
❌append-only-vec0.1.9
黑客团伙获取维护者权限后,向这些基础包中注入了一个仿冒(Typosquatting)依赖项。该依赖项包含高度隐蔽的build.rs编译构建脚本,在编译期发起网络请求拉取第二阶段恶意 Payload,并在开发人员主机上建立持久化后门。
“只要 Cargo 解析并编译了该依赖,恶意 Payload 就会在操作系统层面立即执行——开发者对代码的调用行为不是触发执行的前提条件。”
⚡ 官方闪电下架:86分钟内完成全网拦截
Rust 官方安全响应团队在监测到异常发布后,在 86 至 107 分钟内迅速从 crates.io 下架并彻底删除了这三个恶意版本,同时对被恶意下架的历史干净版本进行紧急恢复(Unyank)。
️ 开发者排查与紧急清理建议
虽然恶意版本已被官方彻底封杀,但此前在此时间窗口内触发过自动依赖更新的开发者与构建机仍存在受害风险:
✅彻底清理本地 Cargo 缓存:执行命令清理本地已下载的缓存归档包,检查并删除本地~/.cargo/registry/cache与~/.cargo/registry/src中的相关版本文件;
✅锁定依赖版本(Pinning):检查项目的Cargo.lock文件,确保arrayref强制锁定在0.3.9或更早安全版本;
✅审计 CI/CD 构建流水线权限:为构建容器施加出站流量白名单限制,防止编译期脚本向外部不可信 IP/域名发起动态下载;
✅启用 Cargo 审计工具:运行cargo audit或相关 SCA 依赖检测工具,实时筛查供应链脆弱性。
安全圈
网罗圈内热点 专注网络安全
实时资讯一手掌握!
好看你就分享 有用就点个赞
支持「安全圈」就点个三连吧!
热门跟贴