Rust 安全响应工作组发布了一个安全公告称,其在调查有关影响 crates.io Web 应用程序中令牌生成的安全问题时,发现了另一个影响 crates.io API 令牌的漏洞。因此,出于谨慎考虑,该团队决定撤销所有现有的 API 密钥。
想要在实践中利用这两个漏洞是非常不切实际的,而且我们也还没有发现该漏洞已在野外被利用的证据。但出于谨慎考虑,我们选择撤销所有现有的 API 密钥。您可以在 crates.io/me 上生成一个新的 API 密钥。
Rust 方面表示,一直以来,用于 crates.io 的 API 密钥都是使用 PostgreSQL 随机函数生成的,但该函数并不是一个加密安全的随机数生成器。这意味着从理论上讲,攻击者可以观察到足够的随机值来确定随机数生成器的内部状态,并使用此信息来确定以前创建的 API 密钥,直到最后一次数据库服务器重启为止。
同时作为调查的一部分,其还发现了软件包的 API 密钥是以纯文本格式存储。这意味着,如果攻击者破坏了数据库,那么他们将具有所有当前令牌的 API 访问权限。
目前,为了缓解这一漏洞,Rust 团队称,其已经推出了一种加密安全的随机数生成器,并实现了用于将令牌存储在数据库中的 hashing。
Rust 团队列出的有关时间线显示:其于 7 月 11 日收到了这一漏洞报告;7 月 14 日则部署了修补程序,并撤销了现有令牌,同时公开披露了该问题。