安全公告:恶意 crate rustdecimal

2022 年 5 月 10 日 · Rust 安全响应工作组

这是官方安全公告的交叉发布。 官方公告也包含了我们 PGP 密钥的签名版本。

Rust 安全响应工作组和 crates.io 团队在 2022-05-02 收到通知,得知存在包含恶意软件的恶意 crate rustdecimal。该 crate 名称故意与流行的 rust_decimal crate 的名称相似,希望潜在的受害者会拼错其名称(一种称为“拼写错误抢注”的攻击)。

为了保护生态系统的安全,crates.io 团队在得知恶意软件后立即从注册表中永久删除了该 crate。还对 crates.io 上的所有 crate 进行了分析,没有发现其他具有类似代码模式的 crate。

请记住,rust_decimal crate 没有被入侵,仍然可以安全使用。

crate 分析

该 crate 自 2022-03-25 首次发布以来,下载量不到 500 次,并且 crates.io 注册表上没有 crate 依赖它。

该 crate 包含与合法的 rust_decimal crate 相同的源代码和功能,除了 Decimal::new 函数。

当调用该函数时,它会检查是否设置了 GITLAB_CI 环境变量,如果设置了,它会将二进制有效负载下载到 /tmp/git-updater.bin 并执行它。二进制有效负载支持 Linux 和 macOS,但不支持 Windows。

无法对二进制有效负载进行分析,因为在执行分析时,下载 URL 已失效。

建议

如果您的项目或组织正在运行 GitLab CI,我们强烈建议您检查您的项目或其依赖项之一是否依赖于 rustdecimal crate,从 2022-03-25 开始。如果您注意到对该 crate 的依赖,您应该认为您的 CI 环境已受到威胁。

一般来说,我们建议定期审核您的依赖项,并且只依赖您信任的作者的 crate。如果您注意到 crate 的源代码中有任何可疑行为,请遵循Rust 安全策略并向 Rust 安全响应工作组报告。

致谢

我们要感谢 GitHub 用户 @safinaskar这个 GitHub 问题中识别出了这个恶意 crate。