Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Аудит сторонних крейтов

Добавление новых библиотек подчиняется стандартным политикам 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, чтобы выяснить правильный способ убедиться в безопасности крейта.