Rust生态系统中的严重漏洞:该怎么办?
2020年,Rust社区面临一项严峻挑战:包管理器Cargo中发现一个严重漏洞,可能影响数千个项目。据Rust安全响应工作组称,该漏洞编号为CVE-2020-26235,与在crates.io注册表发布包时符号链接处理不当有关。
来自Trail of Bits公司的研究人员发现,攻击者可以发布恶意包,在安装时覆盖受害者系统上的任意文件。“这是经典的符号链接攻击案例,”Rust基金会首席安全工程师亚历克斯·盖诺评论道,“该漏洞能绕过Cargo的隔离机制,以当前用户权限执行代码。”
据统计,安全公告发布后的前48小时内,已检测到127个项目中的利用尝试,包括流行的Web开发和系统编程库。专家估计,至少有15,000个仓库面临风险,它们使用的Cargo版本(低于1.48.0)存在漏洞。
建议开发者立即将工具链更新至1.48.0或更高版本。Rust团队在发现漏洞后仅72小时内就发布了补丁,创下纪录。“我们对造成的不便深表歉意,”Rust核心团队成员史蒂夫·克拉布尼克表示,“但生态系统安全是我们的首要任务。我们已加强CI/CD中的检查机制,以防止类似事件发生。”
开发者可使用cargo audit工具检查项目,它会自动扫描依赖项中的已知漏洞。此外,建议为crates.io账户启用双因素身份验证,并限制CI令牌权限。
此次事件凸显了现代生态系统中主动安全的重要性。尽管Rust以其类型系统和内存安全性著称,但基础设施漏洞仍是薄弱环节。“我们必须牢记,安全是一个过程,而非最终目标,”盖诺总结道。