快速概览
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,并在分配到编号后更新此帖子。
尽管承认此漏洞的影响和严重性较低,但 Rust 团队决定遵循我们针对安全漏洞的完整程序。我们不知道有谁使用此功能,因此我们感觉在发布补丁之前公开讨论它很舒服。由于插件功能长期以来已被弃用并且在所有当前版本的 Rust 上都不可用,因此影响有限,因为所需的库未交付给用户。但是,由于该错误可能会给用户带来问题,因此我们决定将其包含在 1.27.1 稳定版本中。
值得注意的是,虽然 Rust 在编译时确实可以防止代码中的许多问题,但这些问题是由内存不安全引起的。此错误是一个逻辑错误。Rust 代码并非本质上是安全的或没有错误的。有时,人们会变得热情,对 Rust 提出过于宽泛的主张,而此事件很好地证明了 Rust 的保证如何不能防止所有错误。
感谢 Red Hat 负责任地披露问题,并与我们合作以确保我们计划发布的修复程序是正确的。