安全公告:恶意 crate rustdecimal

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

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

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

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

请记住,rust_decimal crate 受损,并且仍然可以安全使用。

crate 分析

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

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

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

无法对二进制负载进行分析,因为执行分析时下载 URL 已不再工作。

建议

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

通常,我们建议定期审计您的依赖项,并且只依赖您信任其作者的 crate。如果您在 crate 的源代码中发现任何可疑行为,请遵循Rust 安全策略并向 Rust 安全响应工作组报告。

致谢

我们要感谢 GitHub 用户@safinaskar此 GitHub issue中识别出恶意 crate。