Zurück zu den Updates
New releaseAug 27, 2026

threat-finder v0.3.0

Laufzeit-Schwachstellenscanner: findet CVEs in den Diensten, die tatsächlich auf einem Host ausgeführt werden, und stuft sie nach Netzwerkexposition ein.

Teilen

OffSeq Threat Finder

CI crates.io docs.rs license

threat-finder findet die verwundbare Software, die tatsächlich auf einem Host läuft – nicht das, was ein Manifest behauptet – und zeigt Ihnen, welche Ergebnisse netzwerkerreichbar sind. Es löst jeden laufenden Dienst (und mit --scope all auch jedes installierte Betriebssystem-Paket) in eine exakte Package-URL auf und gleicht sie mit dem OffSeq-Radar-Katalog ab, wobei ökosystemnative Versionsregeln verwendet werden, sodass zurückportierte/behobene Builds nicht fälschlich markiert werden.

OffSeq Threat Finder

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.

Installation

brew install offseq/tap/threat-finder   # Homebrew (macOS/Linux), prebuilt
cargo binstall threat-finder            # prebuilt binary, no toolchain
cargo install threat-finder             # from source

Vorgefertigte Archive für Linux/macOS (x86_64 + arm64) und Windows (x86_64) finden Sie auf der Releases-Seite. Für den Build aus dem Quellcode ist Rust ≥ 1.87 erforderlich. Linux, macOS, die BSDs und Windows werden alle unterstützt.

Schnellstart

export OFFSEQ_API_KEY=...    # from https://radar.offseq.com/console
threat-finder

Scannt die laufenden Dienste, gibt eine nach Risiko sortierte Zusammenfassung aus und schreibt den vollständigen JSON-Bericht nach /tmp/threats.json. Fügen Sie --scope all hinzu, um auch jedes installierte Betriebssystem-Paket zu scannen.

Verwendung

threat-finder [OPTIONS]
FlagBeschreibung
-o, --output <PATH>Schreibt den JSON-Bericht nach PATH (Standard: Eingabeaufforderung oder /tmp/threats.json)
--jsonGibt den JSON-Bericht anstelle einer Datei auf stdout aus
--scope <SCOPE>running (Standard) oder all (+ jedes installierte Betriebssystem-Paket)
--severity <LEVEL>Nur Ergebnisse ab critical|high|medium|low melden
--strictKoordinaten-unbestätigte Ergebnisse verwerfen (nur bestätigte melden)
--fail-on <WHAT>Mit Exit-Code 5 beenden, wenn passende Ergebnisse vorliegen: any|critical|high|medium|low|kev|exposed
--sarif <PATH>Zusätzlich einen SARIF-2.1.0-Bericht schreiben (für Code-Scanning-UIs)
--include <GLOB> / --exclude <GLOB>Assets nach Namens-Glob filtern (wiederholbar)
-q, --quietBanner, Fortschritt und Zusammenfassung unterdrücken
--no-colorANSI-Farben deaktivieren
-y, --yesStandardwerte annehmen, nie nachfragen (CI/Cron)
--resetAPI-Schlüssel erneut eingeben, den gespeicherten ignorieren
--registerDen gescannten Host bei Radar zur kontinuierlichen Überwachung registrieren (ohne Nachfrage)
--no-registerBei diesem Lauf nicht registrieren und nicht zur Überwachung auffordern
--host-name <NAME>Anzeigenamen des Hosts, der mit einer Registrierung gesendet wird
--unregisterDie Inventarliste dieses Hosts aus Radar entfernen und beenden
--windows-missing-updates(Windows) Zusätzlich ausstehende Sicherheitsupdates vom Windows Update Agent auflisten (Online-Scan; mit erhöhten Rechten ausführen)
-h, --help / -V, --versionHilfe / Version
# 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

Exit-Codes: 0 ok · 1 Lookup-/E/A-Fehler · 2 kein API-Schlüssel · 3 nicht unterstütztes Betriebssystem · 4 Ratengrenze/Kontingent oder API-Zugriff erforderlich (Upgrade nötig) · 5 --fail-on-Schwelle erreicht.

API-Schlüssel (erhalten Sie einen über die Radar-Konsole), wird in dieser Reihenfolge aufgelöst:

  1. Die Umgebungsvariable OFFSEQ_API_KEY (am besten für CI/Cron).
  2. Der gespeicherte Schlüssel in $XDG_CONFIG_HOME/offseq-rust/config.toml (0600), sofern nicht --reset angegeben ist.
  3. Eine interaktive, verdeckte Eingabeaufforderung auf einem TTY – wird dann für das nächste Mal gespeichert.

Nicht-interaktiv (--yes / kein TTY) ohne verfügbaren Schlüssel endet mit Exit-Code 2.

Setzen Sie OFFSEQ_CONFIG_DIR, um den Speicherort der Konfiguration zu überschreiben (Standard: das betriebssystemspezifische Benutzerkonfigurationsverzeichnis) – praktisch für Container/CI, die einen deterministischen Pfad benötigen.

So funktioniert es

Exakter Koordinaten-Abgleich. Jedes Asset wird zu einem purl mit seiner vollen Version (Epoche + Distro-Revision) und einem ?distro=-Qualifier, z. B. pkg:deb/ubuntu/openssh-server@1:8.9p1-3ubuntu0.6?distro=jammy. Das Inventar wird in gebündelten POST /match/batch-Aufrufen (eine Anfrage pro Block entsprechend der Tarifstufe) serverseitig mit ökosystemnativen Versionsregeln (dpkg/rpm/apk/semver) abgeglichen – so wird ein zurückportierter und behobener Build wie 1.18.0-6+deb11u3 korrekt nicht markiert, und es gibt kein clientseitiges Versionsraten. Ergebnisse werden anhand des confirmed-Flags der API aufgeteilt: Bestätigte Treffer werden gemeldet; Koordinatentreffer, deren Version nicht bestätigt werden kann, werden separat als unbestätigt / Triage angezeigt (vom Zähler, byCve und --fail-on ausgeschlossen; verwerfen Sie sie mit --strict).

Netzwerkexpositions-Korrelation. Manifest-Scanner (Trivy, Grype, osv-scanner) lesen Paketlisten; externe Scanner (Nessus, OpenVAS) benötigen einen zweiten Host. Dieses Tool ordnet den Prozess jedes laufenden Dienstes den Sockets zu, auf denen er lauscht (/proc/net unter Linux, lsof unter den anderen Unix-Systemen, Get-NetTCPConnection / netstat unter Windows) und klassifiziert die Erreichbarkeit – loopback / private / public. Ein verwundbarer Dienst auf 0.0.0.0 ist ein ganz anderes Risiko als einer auf 127.0.0.1: Ergebnisse werden zuerst nach Exposition eingestuft, und --fail-on exposed macht genau das zur CI-Bedingung. Es werden keine Pakete gesendet. Ergebnisse enthalten außerdem CISA KEV und EPSS.

Expositionsbewusste Priorisierung. Jedes Ergebnis erhält einen riskScore (0–100) und ein SSVC-artiges decision-Band – act-now · soon · schedule · track – kombiniert aus Schweregrad, EPSS, KEV und der Netzwerkexposition des zugehörigen Assets. Die Zusammenfassung beginnt jede Zeile mit einem Badge im Stil [ACT-NOW 92] und sortiert danach, sodass die wenigen öffentlich erreichbaren, bekanntermaßen ausgenutzten Probleme auf einem lauten Host nach oben schwimmen. Der Score verwendet lokal und serverseitig dieselbe Formel (die Radar-Überwachungsansicht fügt einen kleinen Bonus hinzu, wenn ein KEV-Ergebnis sein Fälligkeitsdatum überschritten hat – ein Datum, das die CLI nicht kennt) und erscheint in --json und SARIF (properties).

Kontinuierliche Überwachung

Kategorien