Аудит сторонних крейтов
Добавление новых библиотек подчиняется стандартным политикам Chromium, а также, разумеется, проверке безопасности. Поскольку вы можете подключать не только один крейт, но и его транзитивные зависимости, кода для проверки может быть много. С другой стороны, безопасный код Rust может иметь ограниченные побочные эффекты. Как его проверять?
Со временем Chromium стремится перейти к процессу, основанному на cargo vet.
А пока для каждого добавляемого крейта мы проверяем следующее:
- Поймите, зачем используется каждый крейт. Какова связь между крейтами? Если в системе сборки каждого крейта есть
build.rsили процедурные макросы, разберитесь, для чего они. Совместимы ли они с тем, как обычно собирается Chromium? - Убедитесь, что каждый крейт поддерживается достаточно хорошо
- Используйте
cd third-party/rust/chromium_crates_io; cargo audit, чтобы проверить наличие известных уязвимостей (сначала понадобитсяcargo install cargo-audit, что по иронии связано с загрузкой множества зависимостей из интернета2) - Убедитесь, что любой
unsafeкод соответствует Правилу двух - Проверьте использование API
fsиnet - Прочитайте весь код на достаточном уровне, чтобы заметить что-то неуместное, что могло быть злонамеренно вставлено. (На практике нельзя добиться 100% идеальности: кода часто слишком много.)
Это лишь рекомендации — работайте с рецензентами из security@chromium.org, чтобы выяснить правильный способ убедиться в безопасности крейта.