稽核第三方 Crate

新增程式庫時必須遵守 Chromium 的標準政策,不過當然也須接受安全性審查。您可能不只引入一個 Crate,還會傳入遞移依附元件,因此可能有許多程式碼需要審查。另一方面,安全的 Rust 程式碼不會產生多少負面副作用。應如何審查呢?

隨著時間推移,Chromium 的目標是移至以 cargo vet 為基礎的程序。

同時,我們會針對每個新增的 Crate 檢查以下項目:

  • 瞭解使用各個 Crate 的原因。Crate 之間的關係為何?如果每個 Crate 的建構系統都包含 build.rs 或程序巨集,請思考 Crate 的用途。這些 Crate 是否與 Chromium 平常的建構方式相容?
  • 檢查每個 Crate 的維護情況是否合理良好
  • 使用 cd third-party/rust/chromium_crates_io; cargo audit 檢查是否有已知的安全漏洞 (您首先需要執行 cargo install cargo-audit,諷刺的是,這麼做需要從網際網路下載大量依附元件2)
  • 確保所有 unsafe 程式碼都妥善符合兩個項目的規則
  • 檢查是否使用 fsnet API
  • 請在足夠的層級閱讀所有程式碼,檢查是否出現任何可能是惡意插入的錯誤內容 (實務上很難達到 100% 完美的成果,畢竟通常會有太多程式碼。)

上述內容只是指南,請與 security@chromium.org 的審查人員合作,瞭解如何正確地確保 Crate 是可信的。