rustdoc 安全公告

2018 年 7 月 6 日 · Rust 核心团队

快速概览

Rust 团队最近收到通知,发现影响 rustdoc 插件的安全漏洞。如果您没有使用 rustdoc 插件,则不受影响。我们没有发现此功能的任何使用情况。相关的 CVE 为 CVE-2018-1000622

您可以在我们的 rustlang-security-announcements 邮件列表中找到完整公告 这里

公告

7 月 3 日星期二,Red Hat 向我们报告了 rustdoc 中的安全漏洞。问题出在 rustdoc 的晦涩插件功能上,它包括从大多数平台上可全局写入的路径 /tmp/rustdoc/plugins 加载插件。此功能允许恶意攻击者将动态库写入此路径,并让另一个用户执行该代码。安全问题仅在您积极使用此功能时才会发生,因此此行为将在不久的将来从 rustdoc 中删除,将在未来一周内为每个通道发布补丁。插件基础设施早于 1.0,并且在当今的稳定版或 nightly Rust 上不可用。它的删除不应影响任何 Rust 用户。

作为 Rust 的第一个官方 CVE,这对我们来说是一个里程碑。修复程序将在 7 月 10 日星期二的 1.27.1 中发布。由于没有禁令,我们现在正在申请 CVE,并在分配到 CVE 号码后更新此帖子。

尽管承认此错误的影响和严重程度较低,但 Rust 团队决定遵循我们针对安全错误的完整流程。我们知道没有人使用此功能,因此我们觉得在补丁发布之前公开讨论它很舒服。由于插件功能早已弃用,并且在所有当前版本的 Rust 上都不可用,因此影响有限,因为所需的库不会分发给用户。但是,由于该错误可能会给用户带来潜在问题,因此我们决定将其包含在 1.27.1 稳定版中。

值得注意的是,虽然 Rust 在编译时可以防止代码中出现许多问题,但这些问题是由于内存不安全造成的。此错误是逻辑错误。Rust 代码并非天生安全或没有错误。有时,人们会热情洋溢地对 Rust 做出过于广泛的声明,而这次事件很好地证明了 Rust 的保证无法防止所有错误。

感谢 Red Hat 负责任地披露了这个问题,并与我们合作确保我们计划发布的修复程序是正确的。