Les développeurs Rust utilisent cargo-geiger pour trouver du code non sûr dans un crate et ses dépendances avant qu'un audit ne commence.
Les équipes Rust utilisent cargo-geiger pour compter le Rust unsafe dans une crate et son graphe de dépendances, offrant aux mainteneurs un point de départ pour les audits de code.

Le projet se situe dans une partie sensible de l’écosystème Rust. Rust commercialise la sécurité mémoire comme une promesse centrale, pourtant de nombreuses crates utiles nécessitent des blocs unsafe pour communiquer avec les systèmes d’exploitation, appeler des bibliothèques C, optimiser les performances ou construire des abstractions bas niveau. Cargo Geiger fournit aux équipes un rapport qu’elles peuvent examiner avant de décider où consacrer du temps de révision.
Le README présente l’outil comme une entrée d’audit. Les développeurs exécutent cargo geiger dans le même répertoire qu’un Cargo.toml, et le plugin rapporte des statistiques pour la crate locale et ses dépendances. Cette sortie peut alimenter le travail de révision dans des outils tels que cargo-crev ou safety-dance.
L’installation suit le modèle Cargo attendu par les utilisateurs Rust. Les développeurs peuvent exécuter cargo install --locked cargo-geiger et utiliser une bibliothèque OpenSSL système, ou ajouter la fonctionnalité vendored-openssl pour intégrer OpenSSL dans l’exécutable. Les mainteneurs publient également des binaires précompilés via les releases GitHub.

Cargo Geiger expose aussi des bibliothèques pour les équipes qui souhaitent consommer les données dans d’autres outils. Le README répertorie cargo-geiger, cargo-geiger-serde et geiger. Le premier expose des internes avec une API instable. Le second fournit des types de rapport sérialisables. Le troisième contient des composants Cargo découplés utilisés par l’outil en ligne de commande.
Le signal d’adoption provient du problème qu’il cible. Les équipes Rust ont élargi leurs graphes de dépendances, et les mainteneurs ont besoin de moyens rapides pour voir le risque avant de commencer une révision manuelle. Une seule crate peut entraîner des dizaines de paquets. Un bloc unsafe dans une dépendance transitive peut avoir plus d’impact que du code dans le dépôt de l’application, selon le niveau de confiance que l’équipe accorde à cette dépendance.
Cargo Geiger ne dit pas aux développeurs qu’une crate contient une vulnérabilité. Il compte l’utilisation du unsafe. Cette distinction compte pour les utilisateurs Rust car unsafe marque une frontière contractuelle, pas un défaut. Un bloc unsafe bien revu peut protéger une API de haut niveau. Un wrapper sûr mais négligent peut tout de même exposer une insécurité mémoire via une mauvaise abstraction.
L’argument contraire vient de cette même distinction. Certains mainteneurs craignent que le comptage du unsafe crée une stigmatisation autour des crates qui traitent de travaux systèmes complexes. Une crate contenant plus de code unsafe peut mériter plus de révision, mais le nombre seul ne peut pas classer la qualité. Les réviseurs doivent toujours inspecter les invariants, les frontières FFI, les tests et les pratiques du mainteneur.
L’outil fonctionne le mieux lorsque les équipes traitent le rapport comme une carte de triage. Vous pouvez l’exécuter avant d’adopter une dépendance, avant de publier une crate sensible à la sécurité ou lors d’un audit périodique. Vous pouvez comparer les versions, repérer les nouvelles utilisations de unsafe et décider quelle dépendance mérite une révision humaine.
Cargo Geiger reflète une habitude mature de sécurité Rust : mesurer d’abord, puis inspecter. Le comptage lance la conversation, et les ingénieurs la terminent en lisant le code.

Commentaires
Connectez-vous ou inscrivez-vous pour participer à la discussion