Rust Cargo 凭证泄露漏洞 (CVE-2026-5222) 总结 漏洞概述 Cargo 在处理第三方注册表 URL 时存在逻辑缺陷。由于早期支持 后缀的 Git 仓库访问,Cargo 在规范化注册表 URL 时保留了该后缀。当攻击者控制的注册表(如 )允许其他 crate 依赖时,攻击者可上传恶意文件至 。 利用条件: 1. 注册表 URL 为稀疏索引(sparse index) 2. 注册表允许 crate 依赖其他 crate 3. 攻击者能向注册表发布 crate 4. 攻击者能上传任意文件至 路径 攻击流程: 1. 攻击者配置 为需要认证的稀疏注册表 2. 攻击者发布 crate 至 ,依赖 3. Cargo 误认为两个注册表同源,发送受害者的 Cargo 凭证至恶意注册表 影响范围 严重程度: 低(需满足极苛刻的攻击条件) 受影响版本: Rust 1.68 至 1.96(含) 触发条件: 注册表需同时满足稀疏索引、允许跨 crate 依赖、可发布、可上传文件 修复方案 修复版本: Rust 1.96(2026年5月28日发布) 修复方式: 更新 Cargo 仅剥离 git 协议注册表 URL 的 后缀 临时措施: 无,旧版本用户需等待升级 致谢 Christos Papakonstantinou 报告漏洞,Arlo Siemens 等修复,Emily Albini 编写公告。