サードパーティ クレートの監査
新しいライブラリを追加する場合、Chromium の標準の ポリシー が適用されますが、当然ながらセキュリティ審査の対象にもなります。1 つのクレートだけでなく推移的依存関係も取り込む場合、審査すべきコードが多数存在することがあります。その一方で、安全な 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
およびnet
のAPI が使用されているかどうかを確認します。- 悪意を持って不正に挿入された可能性のある部分がないか探すのに十分なレベルでコードを読みます(多くの場合、コードが多すぎて完璧にチェックすることはできません)。
これらはガイドラインにすぎません。security@chromium.org
の審査担当者と協力して、自信を持ってクレートを使用するための適切な方法を見つけてください。