cargo-audit v0.11:引入 `fix` 功能、撤回 crate 检测以及更多

2020 年 1 月 23 日 · Tony Arcieri 代表 安全代码工作组

cargo-audit 是一个命令行实用程序,它会检查 Cargo.lock 文件并将其与 RustSec 咨询数据库进行比较,这是一个由 Rust 安全代码工作组维护的社区安全漏洞数据库。

本文介绍了 cargo-audit 0.11 版本中的新功能。

cargo audit fix:自动更新易受攻击的依赖项

作为我们最需要的功能之一(尤其是类似 npm audit fix 命令的粉丝),新的 cargo audit fix 子命令将尝试自动将易受攻击的依赖项的版本要求更新为非易受攻击的版本。

请注意,这是一个实验性的新功能,默认情况下不启用。要试用它,请使用以下命令安装 cargo-audit

$ cargo install cargo-audit --features=fix

这将首先执行与 cargo audit 相同的审计过程,然后尝试将修复应用于您的 Cargo.toml

cargo audit fix screenshot

在底层,它使用 cargo-edit(作为一个库)来修改您的 Cargo.toml 文件,使用咨询中列出的修复版本要求来尝试对每个咨询自动升级到依赖项的非易受攻击版本。

再次注意,这是一个新的、实验性的功能,因此肯定会有错误。如果您担心,可以使用 cargo audit fix --dry-run 仅执行一次干运行。如果您确实遇到错误,请提交错误报告

我们要感谢 Reza Fatahi 和 Hanif Ariffin 为贡献此功能所做的工作。

撤回 crate 的警告

正如您在上面的屏幕截图中所看到的,cargo audit 现在会针对 crates.io 索引检查您的 Cargo.lock 文件中的每个 crate,以确定它们中是否有任何被撤回。如果它们被撤回,它将发出如上所示的警告。

如果您希望将撤回的 crate 作为硬性失败,则可以使用 -D 命令行参数运行 cargo audit

$ cargo audit -D

或者,如果您更喜欢更明确的方式

$ cargo audit --deny-warnings

Cargo.lock 的新 “V2” 格式的兼容性

Rust 1.39 发布了对新的合并友好的 Cargo.lock 格式的支持。

cargo audit 直接使用 Cargo.lock,虽然 V2 格式的更改没有破坏 cargo audit 的核心漏洞审计功能,但由于这一点,一些小功能退化了,例如显示易受攻击的依赖项的依赖树。

此版本还升级到 cargo-lock crate 的 4.0 版本,其中包括对 V2 Cargo.lock 格式的全面支持,并构建一个在 V1 和 V2 格式中相同的 lockfile 表示。

如果您在升级到 V2 Cargo.lock 格式后注意到依赖树未能显示,它们现在应该再次正常工作了!

感谢您的阅读,我们希望您喜欢 cargo-audit 0.11!