サードパーティのクレートの監査
新しいライブラリの追加は Chromium の標準ポリシーに従いますが、もちろんセキュリティレビューの対象でもあります。単一のクレートだけでなく推移的依存関係も取り込む可能性があるため、レビューすべきコード量はかなり多くなることがあります。一方で、安全な Rust コードであれば負の副作用は限定的です。では、どのようにレビューすべきでしょうか。
Chromium は将来的に、cargo vet を中心としたプロセスへ移行することを目指しています。
それまでの間、新しいクレートを追加するたびに、次の点を確認しています。
- 各クレートがなぜ使われているのかを理解する。クレート同士の関係は何か。各クレートのビルドシステムに
build.rsや手続きマクロが含まれている場合は、それらが何のためのものかを把握する。Chromium の通常のビルド方法と互換性があるか。 - 各クレートが適切にメンテナンスされているように見えるかを確認する
- 既知の脆弱性を確認するために
cd third-party/rust/chromium_crates_io; cargo auditを使用する(その前にcargo install cargo-auditが必要ですが、皮肉なことにこれにはインターネットから大量の依存関係をダウンロードすることが含まれます2) - あらゆる
unsafeコードが Rule of Two の基準を満たすことを確認する fsまたはnetAPI の使用がないか確認する- 悪意を持って挿入された可能性のある不自然なものがないかを探すため、十分な粒度でコード全体を読む。(ここで 100% の完全性を現実的に目指すことはできません。コード量が多すぎることがよくあるためです。)
これらはあくまでガイドラインです — security@chromium.org のレビュー担当者と協力して、そのクレートを信頼できると確信するための適切な方法を見つけてください。