
Scanner di vulnerabilità runtime: individua le CVE nei servizi effettivamente in esecuzione su un host e le classifica in base all'esposizione di rete.
threat-finder individua il software vulnerabile effettivamente in esecuzione su un host — non ciò che un manifest dichiara — e ti dice quali risultati sono raggiungibili in rete. Risolve ogni servizio in esecuzione (e, con --scope all, ogni pacchetto di sistema operativo installato) in un Package-URL esatto e lo confronta con il catalogo OffSeq Radar usando regole di versione native dell'ecosistema, così le build backportate/corrette non vengono segnalate erroneamente.
Vulnerability summary (highest risk first):
openssh-server@1:8.9p1-3ubuntu0.6 — 1 finding(s) [PUBLIC tcp 0.0.0.0:22]
[ACT-NOW 92] HIGH CVE-2024-6387 [KEV] regreSSHion: remote code execution in OpenSSH
→ fix: 1:8.9p1-3ubuntu0.10 https://radar.offseq.com/threat/…
[email protected] — 1 finding(s)
[SCHEDULE 41] MED CVE-2023-44487 HTTP/2 Rapid Reset
2 confirmed finding(s) across 2 asset(s); 1 exposed, 1 known-exploited.
brew install offseq/tap/threat-finder # Homebrew (macOS/Linux), prebuilt
cargo binstall threat-finder # prebuilt binary, no toolchain
cargo install threat-finder # from source
Gli archivi precompilati per Linux/macOS (x86_64 + arm64) e Windows (x86_64) sono nella pagina delle release. Per compilare dai sorgenti è richiesto Rust ≥ 1.87. Sono supportati Linux, macOS, i BSD e Windows.
export OFFSEQ_API_KEY=... # from https://radar.offseq.com/console
threat-finder
Analizza i servizi in esecuzione, stampa un riepilogo ordinato per rischio e scrive il report JSON completo in /tmp/threats.json. Aggiungi --scope all per analizzare anche ogni pacchetto di sistema operativo installato.
threat-finder [OPTIONS]
| Flag | Description |
|---|---|
-o, --output <PATH> | Scrive il report JSON in PATH (predefinito: richiesta, o /tmp/threats.json) |
--json | Stampa il report JSON su stdout invece che su un file |
--scope <SCOPE> | running (predefinito) o all (+ ogni pacchetto di sistema operativo installato) |
--severity <LEVEL> | Segnala solo i risultati con livello pari o superiore a critical|high|medium|low |
--strict | Scarta i risultati la cui coordinata non è confermata (riporta solo i confermati) |
--fail-on <WHAT> | Esce con codice 5 se esistono risultati corrispondenti: any|critical|high|medium|low|kev|exposed |
--sarif <PATH> | Scrive anche un report SARIF 2.1.0 (per interfacce di code-scanning) |
--include <GLOB> / --exclude <GLOB> | Filtra gli asset tramite glob sul nome (ripetibile) |
-q, --quiet | Sopprime il banner, l'avanzamento e il riepilogo |
--no-color | Disabilita i colori ANSI |
-y, --yes | Accetta i valori predefiniti, non chiede mai conferma (CI/cron) |
--reset | Richiede di nuovo la chiave API, ignorando quella salvata |
--register | Registra l'host analizzato su Radar per il monitoraggio continuo (senza richieste) |
--no-register | Non registrare e non chiedere il monitoraggio in questa esecuzione |
--host-name <NAME> | Hostname descrittivo da inviare con una registrazione |
--unregister | Rimuove l'inventario di questo host da Radar ed esce |
--windows-missing-updates | (Windows) Elenca anche gli aggiornamenti di sicurezza in sospeso da Windows Update Agent (scansione online; eseguire con privilegi elevati) |
-h, --help / -V, --version | Aiuto / versione |
# CI: only high+ findings, JSON to stdout, no prompts
OFFSEQ_API_KEY=… threat-finder --yes --json --severity high > report.json
# Fail the build only when a network-exposed service has a known-exploited CVE
OFFSEQ_API_KEY=… threat-finder --yes --quiet --fail-on exposed
Codici di uscita: 0 ok · 1 errore di lookup/IO · 2 chiave API mancante · 3 sistema operativo non supportato · 4 limite di frequenza/quota, o accesso API richiesto (è necessario l'upgrade) · 5 soglia --fail-on raggiunta.
Chiave API (ottienila dalla Radar Console), risolta in quest'ordine:
OFFSEQ_API_KEY (ottima per CI/cron).$XDG_CONFIG_HOME/offseq-rust/config.toml (0600), a meno che non venga specificato --reset.Una sessione non interattiva (--yes / nessuna TTY) senza chiave disponibile esce con 2.
Imposta OFFSEQ_CONFIG_DIR per sovrascrivere la posizione della configurazione (predefinita: la directory di configurazione per utente del sistema operativo) — utile per container/CI che necessitano di un percorso deterministico.
Corrispondenza a coordinate esatte. Ogni asset diventa un purl che porta la sua versione completa (epoch + revisione della distribuzione) e un qualificatore ?distro=, ad es. pkg:deb/ubuntu/openssh-server@1:8.9p1-3ubuntu0.6?distro=jammy. L'inventario viene confrontato in chiamate batch POST /match/batch (una richiesta per blocco delle dimensioni del tier) lato server, con regole di versione native dell'ecosistema (dpkg/rpm/apk/semver) — così una build backportata e corretta come 1.18.0-6+deb11u3 non viene segnalata erroneamente, e non c'è alcuna supposizione di versione lato client. I risultati sono suddivisi dal flag confirmed dell'API: i riscontri confermati vengono riportati; i riscontri per coordinate la cui versione non può essere confermata vengono mostrati separatamente come non confermati / triage (esclusi dal conteggio, da byCve e da --fail-on; puoi eliminarli con --strict).
Correlazione con l'esposizione di rete. Gli scanner di manifest (Trivy, Grype, osv-scanner) leggono gli elenchi dei pacchetti; gli scanner esterni (Nessus, OpenVAS) richiedono un secondo host. Questo strumento mappa il processo di ogni servizio in esecuzione sui socket su cui è in ascolto (/proc/net su Linux, lsof sugli altri Unix, Get-NetTCPConnection / netstat su Windows) e classifica la raggiungibilità — loopback / private / public. Un servizio vulnerabile su 0.0.0.0 è un rischio molto diverso da uno su 127.0.0.1: i risultati vengono ordinati prima per esposizione e --fail-on exposed vincola la CI esattamente a questo. Non viene inviato alcun pacchetto. I risultati includono anche KEV CISA ed EPSS.
Prioritizzazione sensibile all'esposizione. Ogni risultato riceve un riskScore (0–100) e una fascia decision in stile SSVC — act-now · soon · schedule · track — derivati dalla combinazione di severità, EPSS, KEV ed esposizione di rete dell'asset proprietario. Il riepilogo fa precedere ogni riga da un badge in stile [ACT-NOW 92] e ordina in base a esso, così i pochi problemi pubblici e noti come sfruttati emergono in cima a un host rumoroso. Il punteggio usa la stessa formula in locale e lato server (la vista di monitoraggio di Radar aggiunge un piccolo bonus quando un risultato KEV è oltre la data di scadenza — una data che la CLI non ha), e compare in --json e SARIF (properties).