Auditoria de Crates de Terceiros
A adição de novas bibliotecas está sujeita às políticas padrão do Chromium (https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Third_party-review), mas, é claro, também está sujeita à verificação de segurança. Como você pode estar trazendo não apenas um único crate, mas também dependências transitivas, pode haver muito código para revisar. Por outro lado, o código Rust seguro pode ter efeitos colaterais negativos limitados. Como você deve revisá-lo?
Ao longo do tempo, o Chromium visa a migrar para um processo baseado em cargo vet.
Enquanto isso, para cada nova adição de crate, estamos verificando o seguinte:
- Entenda por que cada crate é usado. Qual é a relação entre os crates? Se o sistema de compilação de cada crate contiver um
build.rs
ou macros procedurais, descubra para que servem. Eles são compatíveis com a maneira como o Chromium é normalmente construído? - Verifique se cada crate parece estar razoavelmente bem mantido
- Use
cd third-party/rust/chromium_crates_io; cargo audit
para verificar se há vulnerabilidades conhecidas (primeiro você precisarácargo install cargo-audit
, o que ironicamente envolve baixar muitas dependências da internet2) - Certifique-se de que qualquer código
unsafe
seja bom o suficiente para a Regra de Dois - Verifique se há uso de APIs
fs
ounet
- Leia todo o código em um nível suficiente para procurar qualquer coisa fora do lugar que possa ter sido inserida maliciosamente. (Você não pode realisticamente visar 100% de perfeição aqui: muitas vezes há simplesmente muito código).
Estas são apenas diretrizes — trabalhe com revisores do security@chromium.org
para descobrir a maneira certa de se tornar confiante no crate.