Auditing Third Party Crates

添加新库须遵守 Chromium 的标准 政策,当然也要遵守安全审核标准。您可能不仅要引入单个 crate,而且还要引入传递依赖项,因此可能需要审核大量代码。另一方面,安全的 Rust 代码可能产生的副作用有限。应如何对其进行审核?

随着时间的推移,Chromium 计划逐步采用以 cargo vet 为核心的处理流程。

与此同时,每当添加新的 crate 时,我们都会检查以下内容:

  • 了解每个 crate 的用途。crate 之间存在什么关系?如果每个 crate 的构建系统都包含 build.rs 或过程宏,请确定它们的用途。它们能否与 Chromium 的正常构建方式相兼容。
  • 检查每个 crate 是否得到合理维护。
  • 使用 cd third-party/rust/chromium_crates_io; cargo review 检查已知漏洞(首先需要运行 cargo install cargo-audit,令人意外的是,这个过程中需要从互联网下载大量的依赖项 2
  • 确保所有 unsafe 代码都符合 两大规则 的要求
  • 检查是否使用了 fsnet API
  • 尽可能地仔细阅读所有代码,查找任何可能属于恶意插入,稍显异常的地方。(但现实中,您不可能做到百无遗漏,因为代码量通常太庞大了。)

以下只是一些指导建议,请与 security@chromium.org 的审核者合租,共同找出能够确保 crate 安全的正确方法。