Crates.io安全咨询

2020-07-15 05:07:37

这是官方安全咨询的交叉帖子。官方帖子也包含了我们的PGP密钥的签名版本。

Rust安全响应工作组最近收到了一个影响crates.io Web应用程序中令牌生成的安全问题的通知,在调查该问题时,我们发现了影响crates.io API令牌的另一个漏洞。

我们没有证据表明这一点在野外被利用,但出于高度谨慎,我们选择撤销所有现有的API密钥。你可以在crates.io/me上生成一个新的。

直到最近,crates.io的API密钥都是使用PostgreSQLRandom函数生成的,该函数不是加密安全的随机数生成器。这意味着从理论上讲,攻击者可以观察到足够的随机值来确定随机数生成器的内部状态,并使用此信息确定直到最后一次数据库服务器重新启动之前创建的API密钥。

作为对此的调查的一部分,我们还发现API密钥是以纯文本存储的。这意味着如果我们的数据库以某种方式被破坏,攻击者将拥有对所有当前令牌的API访问权限。

我们将代码更改部署到生产环境中,以使用加密安全的随机数生成器,并实现了用于在数据库中存储令牌的散列。

利用任何一个问题在实践中都是令人难以置信的不切实际的,我们没有发现任何证据表明这一点在野外被利用。然而,出于高度谨慎,我们已选择撤销所有现有的API密钥。您可以通过访问crates.io/me来生成新的API密钥。由此给您带来的不便,我们深表歉意。

感谢雅各布·霍夫曼-安德鲁斯根据我们的安全政策负责任地披露了随机数生成器问题。感谢来自crates.io团队的SiânGriffin和Justin Geibel帮助SecurityResponse工作组解决了这两个问题。感谢安全响应工作组的Pietro Albini协调解决此漏洞的工作。

2020-07-11 20:56-问题被承认,克拉特队的领导被循环。

2020-07-14 19:03-部署修复,撤销现有令牌,问题公开