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