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-edit(作为一个库)来修改您的 Cargo.toml
文件,利用安全咨询中列出的固定版本要求,尝试对每个咨询中的依赖执行自动升级到无漏洞版本。
再次注意,这是一个新的实验性功能,因此很可能存在 bug。如果您担心,可以使用 cargo audit fix --dry-run
只执行空运行(dry run)。如果您确实遇到 bug,请提交 bug 报告。
我们要感谢 Reza Fatahi 和 Hanif Ariffin 为贡献此功能所做的工作。
被撤回(yanked)的 crate 的警告
如上方的截图所示,cargo audit
现在会根据 crates.io 索引检查您 Cargo.lock
文件中的每个 crate,以确定其中是否有任何 crate 已被撤回(yanked)。如果已被撤回,它将如上图所示发出警告。
如果您希望将被撤回的 crate 视为硬性错误(hard failure),可以在运行 cargo audit
时加上 -D
命令行参数:
$ 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 格式下都一致的锁文件表示。
如果您在升级到 V2 Cargo.lock
格式后发现依赖树无法显示,现在它们应该又能正常工作了!
感谢阅读,希望您喜欢 cargo-audit
0.11!