
Offline-Single-Binary-Web-App, die CycloneDX-, SPDX- und syft-SBOMs einliest, ein Ensemble von CVE-Scannern ausführt, Ergebnisse mit EPSS, CISA-KEV und nuclei anreichert und SARIF, CSAF und PDF exportiert.
Eine Single-Binary-Offline-Webanwendung zur Untersuchung von SBOM-Dateien (Software Bill of Materials). Laden Sie ein SBOM hoch oder importieren Sie einen Ordner mit solchen, analysieren Sie jedes mit einem Ensemble unabhängiger Werkzeuge, prüfen Sie die normalisierten Befunde in einer lokalen Benutzeroberfläche und exportieren Sie das Ergebnis in acht Formaten. Keine Installation, kein Netzwerkzugriff, keine Telemetrie.
NOASSERTION eines
Lieferanten von einem schlicht fehlenden Feld.Die Startseite (/) listet jedes gespeicherte SBOM auf und bleibt nutzbar,
während der Korpus wächst:
log4j oder openssl jedes SBOM findet, das diese Komponente
enthält. Die Abfrage ist längenbeschränkt und wird nachsichtig geparst.Jedes Werkzeug ist zur Laufzeit optional und wird auf PATH erkannt
(überschreiben Sie das Binary mit SBA_TOOL_<NAME>_BIN). Befunde hängen
niemals von einem einzelnen Werkzeug ab.
| Werkzeug | Rolle |
|---|---|
| syft | SBOM-Normalisierer / CycloneDX-1.6-Konverter |
| grype | CVE-Matcher |
| trivy | Schwachstellenscanner |
| osv-scanner | OSV-Datenbankabfragen |
| bomber | Unabhängiger Ensemble-Matcher |
| bomdrift | Supply-Chain-Drift / Typosquat (SARIF) |
| inspektr | SBOM-Schwachstellenscanner (JSON) |
| shieldbom | Offline-Eingebettet/IoT-CVE-Scanner (SARIF) |
| provenant | Lizenz / Copyright / Provenienz (ScanCode) |
Die ersten acht Werkzeuge liefern CVE-förmige Schwachstellenbefunde;
provenant ist anders — es meldet Lizenz-, Copyright-, Inhaber- und
Autor-Provenienz, die der Auditor speichert und als eigene Befundform
anzeigt (ein Abschnitt „Licence & provenance" pro Lauf, im Markdown-Export
enthalten), statt sie zu verwerfen.
Die Scanner können nicht jedes Format direkt lesen: bomber verarbeitet nur
CycloneDX ≤ 1.6, und keiner der Scanner liest SPDX 3.0 JSON-LD. In beiden
Fällen normalisiert der Auditor die Eingabe zuerst über syft convert nach
CycloneDX und überspringt mit einem dokumentierten Grund, wenn syft nicht
verfügbar ist, statt ein Werkzeug null Pakete melden zu lassen. grypes
Schwachstellendatenbank wird einmal pro Lauf (außer der Reihe) aktualisiert,
sodass eine routinemäßige Veraltung ein frischer Scan ist, kein fehlgeschlagener.
Nach der Analyse wird jeder CVE-förmige Befund mit drei echten Signalen angereichert, die von einem vulnlookup-Dienst bezogen werden (Standard https://vulnlookup.ndaal.eu):
Jeder Befund zeigt seine Werte KEV, Nuclei, EPSS und Source, wobei Source zurück zum vulnlookup-Datensatz verlinkt, und Befunde werden nach Dringlichkeit geordnet — zuerst: bekanntermaßen ausgenutzte (KEV)-Einträge, dann jene mit dem höheren EPSS-Perzentil; Befunde ohne Anreicherung behalten die Reihenfolge bei, in der der Analyzer sie erzeugt hat. Die Anreicherung gelangt in jedes Exportformat — SARIF 2.1 / 2.2, Markdown, ODT, DOCX, PDF und CSAF 2.1 / 2.2, wobei CSAF EPSS als native Metrik trägt und CISA-KEV und nuclei als Notizen aufzeichnet — und das Exportformular setzt nun standardmäßig jedes Format.
Konfigurieren Sie es unter Settings → Vulnerability enrichment: ein Ein/Aus-Schalter (standardmäßig aktiviert) und bis zu drei vulnlookup-Quellen, jede mit einer Basis-URL, einem TCP-Port und einem QUIC-Port (ein leerer Port wird als 443 behandelt). Quellen 1 und 2 verwenden standardmäßig das öffentliche https://vulnlookup.ndaal.eu auf Port 443; Quelle 3 verwendet standardmäßig ein Loopback-https://127.0.0.1 auf den eigenen 8680 (TCP) / 8681 (QUIC)-Ports dieses Hosts, sodass ein co-lokalisiertes vulnlookup out of the box ein funktionierender Fallback ist. Die Quellen werden der Reihe nach versucht — die erste ist primär, die anderen sind Fallbacks.
#![forbid(unsafe_code)];
die Lint-Richtlinie verbietet panikauslösende Abkürzungen, ungeprüfte
Arithmetik und ungeprüfte Indexierung in Produktionscode.--encryption-key-file).--tls-key lehnt einen PKCS#1-RSA-Schlüssel ab
(No-RSA-Richtlinie) und unter Unix eine gruppen- oder weltweit lesbare
Schlüsseldatei.GET /export/download liefert nur Namen
mit einer anerkannten Export- oder Checksum-Sidecar-Endung aus, sodass ein
falsch konfiguriertes Exportverzeichnis keine Systemdatei herausgeben kann.cargo audit
ist sauber.Installieren Sie die veröffentlichte Version von crates.io — cargo install
baut sie aus dem Quellcode, cargo binstall holt das vorgebaute Binary aus dem
GitLab-Release:
cargo install sbom-auditor # build from source
cargo binstall sbom-auditor # prebuilt GitLab-release binary
Oder bauen Sie diesen Checkout direkt (eine aktuelle stabile Rust-Toolchain ist erforderlich):
cargo build --release
./target/release/sbom-auditor
Öffnen Sie dann https://127.0.0.1:8680 (der Browser warnt einmalig wegen des selbstsignierten Zertifikats). Die obere Navigation führt Home, Upload, Import, Export, Components, Tools, Settings, gefolgt vom Dark/Light-Theme-Schalter, Sprachmenü und Info-Menü auf der rechten Seite. Die Oberfläche wird in 49 Sprachen ausgeliefert — Englisch, Deutsch und Französisch plus jede europäische Amtssprache, Norwegisch Nynorsk, die drei in Norwegen offiziellen samischen Sprachen (Nord-, Lule- und Südsamisch) und drei asiatische Ergänzungen — Chinesisch (中文), Hindi (हिन्दी) und Urdu (اردو, rechts-nach-links) — auswählbar über das Sprachmenü (und pro Browser gemerkt). Der Abschnitt Unterstützte GUI-Sprachen unten enthält die vollständige Aufschlüsselung.
--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 bedient die API und Web-UI über TLS 1.3 (HTTP/1.1 + HTTP/2); 8681 ist für einen zukünftigen QUIC-/HTTP-3-Listener reserviert (noch nicht implementiert).
Die Web-UI wird in 49 Sprachen ausgeliefert. Englisch, Deutsch und Französisch sind der gepflegte, von Menschen verfasste Satz und an den Anfang des Sprachumschalters angeheftet; jede andere Sprache folgt in alphabetischer Reihenfolge nach ihrem englischen Namen.
Drei asiatische Sprachen sind in diesem Zyklus hinzugekommen: Chinesisch / 中文
(Mandarin, vereinfacht), Hindi / हिन्दी und Urdu / اردو. Urdu ist
rechts-nach-links — die Anwendung rendert <html dir="rtl">, während es
ausgewählt ist.
Jede Sprache jenseits der angehefteten drei ist maschinell übersetzt und ausstehender muttersprachlicher Prüfung; jede Zeichenkette, die in einer Übersetzung fehlt, fällt automatisch auf Englisch zurück. Der Umschalter auf der Seite listet jede Sprache nach ihrem eigenen einheimischen Endonym auf und ist die maßgebliche Liste — konsultieren Sie diese statt einer Aufzählung hier.
Dies gilt nur für die Web-UI. Die generierten Berichte (SARIF, CSAF und der PDF-Export) und die HTTP-API bleiben ausschließlich englisch.
cargo nextest run # unit + integration suite
cargo test --doc # doctests
Zusätzliche Testumgebungen: loom-harness/ (Nebenläufigkeits-
Permutationsmodelle), test/bruno/ (API-Sammlung), test/playwright/
(Browser-E2E), test/example-corpus/ (API + GUI Upload→Analyse→Export über den
gebündelten example/-SBOM-Korpus) und loadtest/ (Goose-Lastszenarien).
tests/scripts/test_examples_upload_via_api.sh (mit einer Schwester-.bats)
lädt jedes example/-SBOM gegen eine laufende Instanz hoch und prüft, dass
jedes ein SARIF, ein CSAF und ein PDF über das gestreamte POST /export/download-ZIP liefert; TLS wird für Nicht-Loopback-Hosts verifiziert
und für das selbstsignierte Zertifikat von localhost übersprungen, und
--base-url zielt auf jede Instanz (zum Beispiel https://sbom.ndaal.eu/).
Die test/magnitude/-Suite (Magnitude, *.mag.ts) ergänzt KI-gesteuerte
visuelle Prüfungen der Navbar-Reihenfolge und der Export-Standardwerte plus
Start download; sie ergänzt die deterministischen Tests, benötigt ein LLM zum
Ausführen und ist nicht Teil des blockierenden CI-Gates. Das example/-
Verzeichnis enthält 651 öffentliche Test-SBOMs (Git LFS); siehe
example/PROVENANCE.md. Siehe
documentation/structure.md für die Modulkarte
und den Request-Fluss.
Der Code ist unter Apache-2.0 lizenziert. Gebündelte UI-Assets tragen ihre
eigenen Lizenzen (Bootstrap MIT, htmx 0BSD, Roboto OFL-1.1); siehe die
.license-Sidecars pro Datei unter src/static/.