Application web hors ligne à binaire unique qui ingère les SBOM CycloneDX, SPDX et syft, exécute un ensemble de scanners CVE, enrichit les résultats avec EPSS, CISA-KEV et nuclei, et exporte en SARIF, CSAF et PDF.
Une application web hors ligne à binaire unique pour analyser des fichiers SBOM (Software Bill of Materials). Importez un SBOM ou un dossier de SBOM, analysez chacun avec un ensemble d'outils indépendants, examinez les résultats normalisés dans une interface locale unique et exportez le résultat dans huit formats. Aucune installation, aucun accès réseau, aucune télémétrie.
NOASSERTION explicite d'un fournisseur d'un
champ simplement absent.La page d'accueil (/) liste tous les SBOM stockés et reste utilisable à
mesure que le corpus grandit :
log4j ou openssl trouve
chaque SBOM qui embarque ce composant. La requête est limitée en longueur et
analysée avec indulgence.Chaque outil est optionnel à l'exécution et détecté sur le PATH (remplacez
le binaire avec SBA_TOOL_<NAME>_BIN). Les résultats ne dépendent jamais d'un
seul outil.
| Outil | Rôle |
|---|---|
| syft | Normaliseur SBOM / convertisseur CycloneDX 1.6 |
| grype | Correspondance CVE |
| trivy | Scanner de vulnérabilités |
| osv-scanner | Recherches dans la base OSV |
| bomber | Correspondance d'ensemble indépendante |
| bomdrift | Dérive de chaîne d'approvisionnement / typosquat (SARIF) |
| inspektr | Scanner de vulnérabilités SBOM (JSON) |
| shieldbom | Scanner CVE embarqué/IoT hors ligne (SARIF) |
| provenant | Licence / copyright / provenance (ScanCode) |
Les huit premiers outils contribuent à des résultats de vulnérabilité de
forme CVE ; provenant est différent — il rapporte la provenance de
licence, copyright, détenteur et auteur, que l'auditeur stocke et affiche
comme sa propre forme de résultat (une section « Licence & provenance » par
exécution, incluse dans l'export Markdown) plutôt que de la rejeter.
Les scanners ne peuvent pas lire tous les formats directement : bomber ne
consomme que CycloneDX ≤ 1.6, et aucun des scanners ne lit SPDX 3.0 JSON-LD.
Dans les deux cas, l'auditeur normalise d'abord l'entrée en CycloneDX via
syft convert, et saute avec une raison documentée lorsque syft est
indisponible plutôt que de laisser un outil signaler zéro paquet. La base de
données de vulnérabilités de grype est actualisée une fois par exécution (hors
bande), de sorte qu'une obsolescence de routine donne lieu à une analyse
fraîche, et non à une analyse échouée.
Après l'analyse, chaque résultat de forme CVE est enrichi de trois signaux réels tirés d'un service vulnlookup (par défaut https://vulnlookup.ndaal.eu) :
Chaque résultat affiche ses valeurs KEV, Nuclei, EPSS et Source, où Source renvoie à l'enregistrement vulnlookup, et les résultats sont ordonnés du plus urgent au moins urgent : les entrées connues-exploitées (KEV) en tête, puis celles ayant le percentile EPSS le plus élevé ; les résultats sans enrichissement conservent l'ordre dans lequel l'analyseur les a produits. L'enrichissement se retrouve dans chaque format d'export — SARIF 2.1 / 2.2, Markdown, ODT, DOCX, PDF et CSAF 2.1 / 2.2, où CSAF porte l'EPSS comme métrique native et enregistre CISA-KEV et nuclei comme notes — et le formulaire d'export coche désormais chaque format par défaut.
Configurez-le sous Settings → Vulnerability enrichment : un interrupteur on/off (activé par défaut) et jusqu'à trois sources vulnlookup, chacune avec une URL de base, un port TCP et un port QUIC (un port vide est traité comme 443). Les sources 1 et 2 pointent par défaut vers le service public https://vulnlookup.ndaal.eu sur le port 443 ; la source 3 pointe par défaut vers un service loopback https://127.0.0.1 sur les ports 8680 (TCP) / 8681 (QUIC) de cet hôte, de sorte qu'un vulnlookup co-localisé constitue un repli fonctionnel dès l'installation. Les sources sont essayées dans l'ordre — la première est primaire, les autres sont des replis.
#![forbid(unsafe_code)] ; la
politique de lint interdit les raccourcis paniquants, l'arithmétique non
vérifiée et l'indexation non vérifiée dans le code de production.--encryption-key-file).--tls-key refuse une clé RSA PKCS#1
(politique no-RSA) et, sous Unix, un fichier de clé lisible par le groupe ou
par tous.GET /export/download
ne sert que des noms ayant une extension d'export ou de fichier de hachage
annexe reconnue, de sorte qu'un répertoire d'export mal configuré ne peut
pas distribuer un fichier système.cargo audit
est propre.Installez la version publiée depuis crates.io — cargo install la compile
depuis les sources, cargo binstall récupère le binaire précompilé depuis la
release GitLab :
cargo install sbom-auditor # build from source
cargo binstall sbom-auditor # prebuilt GitLab-release binary
Ou compilez directement cette copie de travail (une chaîne d'outils Rust stable récente est requise) :
cargo build --release
./target/release/sbom-auditor
Ouvrez ensuite https://127.0.0.1:8680 (le navigateur avertira une fois au sujet du certificat auto-signé). La navigation supérieure propose Home, Upload, Import, Export, Components, Tools, Settings, suivis du sélecteur de thème sombre/clair, du menu de langue et du menu d'informations à droite. L'interface est livrée en 49 langues — anglais, allemand et français plus toutes les langues officielles européennes, le norvégien nynorsk, les trois langues sames officielles en Norvège (same du Nord, de Lule et du Sud), et trois ajouts asiatiques — le chinois (中文), l'hindi (हिन्दी) et l'ourdou (اردو, de droite à gauche) — sélectionnables depuis le menu de langue (et mémorisés par navigateur). La section Supported GUI languages ci-dessous en donne la répartition complète.
--port <PORT> Listen port (default 8680, env SBA_PORT)
--bind <ADDR> Bind address (default 127.0.0.1, env SBA_BIND)
--data-dir <DIR> Data directory (SQLite store + stored SBOMs)
--db <PATH> Database path (default <data-dir>/auditor.db)
--encryption-key-file <F> Enable storage encryption with this 32-byte key
--tls-cert <F> --tls-key <F> Operator certificate instead of self-signed
--allow-non-loopback Permit binding a non-loopback address
--check-update Check gitlab.com for a newer release, then exit
--self-update Download + verify + install the latest release
--help Full option list
Ports : 8680 sert l'API et l'interface web sur TLS 1.3 (HTTP/1.1 + HTTP/2) ; 8681 est réservé à un futur écouteur QUIC / HTTP-3 (pas encore implémenté).
L'interface web est livrée en 49 langues. L'anglais, l'allemand et le français constituent l'ensemble maintenu, rédigé par des humains, et sont épinglés en tête du sélecteur de langue ; toutes les autres langues suivent par ordre alphabétique selon leur nom anglais.
Trois langues asiatiques ont rejoint ce cycle : le chinois / 中文 (mandarin,
simplifié), l'hindi / हिन्दी et l'ourdou / اردو. L'ourdou s'écrit de droite à
gauche — l'application rend <html dir="rtl"> tant qu'il est sélectionné.
Toutes les langues au-delà des trois épinglées sont traduites automatiquement et en attente de révision native ; toute chaîne manquante dans une traduction revient automatiquement à l'anglais. Le sélecteur intégré à la page liste chaque langue par son propre endonyme et constitue la liste faisant autorité — consultez-le plutôt qu'une énumération ici.
Cela s'applique uniquement à l'interface web. Les rapports générés (SARIF, CSAF et l'export PDF) et l'API HTTP restent en anglais uniquement.
cargo nextest run # unit + integration suite
cargo test --doc # doctests
Harnais supplémentaires : loom-harness/ (modèles de permutation de
concurrence), test/bruno/ (collection d'API), test/playwright/ (E2E
navigateur), test/example-corpus/ (API + GUI import→analyse→export sur le
corpus SBOM example/ embarqué) et loadtest/ (scénarios de charge Goose).
tests/scripts/test_examples_upload_via_api.sh (avec un .bats frère)
importe chaque SBOM de example/ contre une instance en cours d'exécution et
vérifie que chacun produit un SARIF, un CSAF et un PDF via le ZIP diffusé par
POST /export/download ; TLS est vérifié pour les hôtes non-loopback et ignoré
pour le certificat auto-signé de localhost, et --base-url cible n'importe
quelle instance (par exemple https://sbom.ndaal.eu/). La suite
test/magnitude/ (Magnitude, *.mag.ts) ajoute des vérifications visuelles
pilotées par IA de l'ordre de la barre de navigation et des valeurs par défaut
d'export plus Start download ; elle complète les tests déterministes, nécessite
un LLM pour s'exécuter et ne fait pas partie du portail CI bloquant. Le
répertoire example/ contient 651 SBOM de test publics (Git LFS) ; voir
example/PROVENANCE.md. Voir
documentation/structure.md pour la carte des
modules et le flux des requêtes.
Le code est sous licence Apache-2.0. Les ressources d'interface embarquées
portent leurs propres licences (Bootstrap MIT, htmx 0BSD, Roboto OFL-1.1) ;
voir les fichiers annexes .license par fichier sous src/static/.