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,一旦分配到编号,我们将更新此帖子。

尽管承认这个 bug 的影响和严重程度较低,但 Rust 团队决定遵循我们针对安全 bug 的完整流程。我们不知道有任何人使用此功能,因此在补丁发布前公开讨论它感到很自在。影响之所以有限,是因为该插件功能早已被弃用,并且在所有当前版本的 Rust 中都无法使用,因为所需的库并未随 Rust 分发给用户。然而,由于该 bug 可能会给用户带来问题,我们决定将其包含在 1.27.1 稳定版发布中。

值得注意的是,虽然 Rust 确实能在编译时预防你的代码中的许多问题,但这些问题主要是源于内存不安全。这个 bug 是一个逻辑错误。Rust 代码并非天然安全,也没有 bug。有时,人们会对 Rust 过于热情,做出夸大的说法,而这次事件很好地说明了 Rust 的保证并不能预防所有 bug。

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