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 ou net
  • 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.