
रनटाइम भेद्यता स्कैनर: होस्ट पर वास्तव में चल रही सेवाओं में CVE ढूंढता है और उन्हें नेटवर्क एक्सपोज़र के आधार पर रैंक करता है।
threat-finder उस कमजोर सॉफ़्टवेयर को ढूँढता है जो होस्ट पर वास्तव में चल रहा है — न कि वह जो मैनिफ़ेस्ट दावा करता है — और बताता है कि कौन-से निष्कर्ष नेटवर्क-पहुंच योग्य हैं।
यह हर चालू सेवा को (और --scope all के साथ, हर इंस्टॉल किया गया OS पैकेज) एक सटीक Package-URL में हल करता है और OffSeq Radar कैटलॉग से इकोसिस्टम-नेटिव वर्शन नियमों का उपयोग करके मिलान करता है, ताकि बैकपोर्टेड/फिक्स्ड बिल्ड गलत तरीके से फ़्लैग न हों।
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
Linux/macOS (x86_64 + arm64) और Windows (x86_64) के लिए प्रीबिल्ट आर्काइव releases page पर हैं। सोर्स से बनाने के लिए Rust ≥ 1.87 आवश्यक है। Linux, macOS, BSD और Windows सभी समर्थित हैं।
export OFFSEQ_API_KEY=... # from https://radar.offseq.com/console
threat-finder
चालू सेवाओं को स्कैन करता है, जोखिम-क्रमबद्ध सारांश प्रिंट करता है, और पूरी JSON रिपोर्ट /tmp/threats.json पर लिखता है। हर इंस्टॉल किए गए OS पैकेज को स्कैन करने के लिए --scope all जोड़ें।
threat-finder [OPTIONS]
| Flag | Description |
|---|---|
-o, --output <PATH> | JSON रिपोर्ट PATH पर लिखें (डिफ़ॉल्ट: प्रॉम्प्ट, या /tmp/threats.json) |
--json | JSON रिपोर्ट फ़ाइल के बजाय stdout पर प्रिंट करें |
--scope <SCOPE> | running (डिफ़ॉल्ट) या all (+ हर इंस्टॉल किया गया OS पैकेज) |
--severity <LEVEL> | केवल critical|high|medium|low या उससे ऊपर के निष्कर्ष रिपोर्ट करें |
--strict | समन्वय-अपुष्ट निष्कर्ष हटाएँ (केवल पुष्टि किए गए रिपोर्ट करें) |
--fail-on <WHAT> | यदि मेल खाते निष्कर्ष मौजूद हों तो 5 से बाहर निकलें: any|critical|high|medium|low|kev|exposed |
--sarif <PATH> | SARIF 2.1.0 रिपोर्ट भी लिखें (कोड-स्कैनिंग UI के लिए) |
--include <GLOB> / --exclude <GLOB> | एसेट को नाम ग्लॉब द्वारा फ़िल्टर करें (दोहराने योग्य) |
-q, --quiet | बैनर, प्रगति और सारांश छिपाएँ |
--no-color | ANSI रंग अक्षम करें |
-y, --yes | डिफ़ॉल्ट मान लें, कभी प्रॉम्प्ट न करें (CI/cron) |
--reset | API key फिर से दर्ज करें, सेव किए गए को अनदेखा करें |
--register | स्कैन किए गए होस्ट को निरंतर निगरानी के लिए Radar में पंजीकृत करें (बिना प्रॉम्प्ट) |
--no-register | इस रन में निगरानी के लिए पंजीकरण या प्रॉम्प्ट न करें |
--host-name <NAME> | पंजीकरण के साथ भेजने हेतु मित्रवत होस्टनाम |
--unregister | इस होस्ट की इन्वेंट्री Radar से हटाएँ और बाहर निकलें |
--windows-missing-updates | (Windows) Windows Update Agent से लंबित सुरक्षा अपडेट भी सूचीबद्ध करें (ऑनलाइन स्कैन; एलिवेटेड चलाएँ) |
-h, --help / -V, --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
एग्ज़िट कोड: 0 ठीक · 1 लुकअप/IO त्रुटि · 2 API key नहीं · 3 असमर्थित OS · 4 रेट लिमिट/कोटा, या API एक्सेस आवश्यक (अपग्रेड चाहिए) · 5 --fail-on सीमा पूरी हुई।
API key (एक Radar Console से प्राप्त करें), इस क्रम में हल किया जाता है:
OFFSEQ_API_KEY एनवायरनमेंट वेरिएबल (CI/cron के लिए सर्वोत्तम)।$XDG_CONFIG_HOME/offseq-rust/config.toml में सेव की गई key (0600), जब तक --reset न दिया गया हो।बिना key उपलब्ध और गैर-इंटरैक्टिव (--yes / कोई TTY नहीं) होने पर 2 से बाहर निकलता है।
OFFSEQ_CONFIG_DIR सेट करें ताकि कॉन्फ़िग का स्थान ओवरराइड हो (डिफ़ॉल्ट: OS का प्रति-उपयोगकर्ता कॉन्फ़िग डीआईआर) — कंटेनर/CI के लिए उपयोगी, जिन्हें निश्चित पथ चाहिए।
सटीक-समन्वय मिलान। हर एसेट एक purl बन जाता है जिसमें उसका पूरा संस्करण (epoch + distro revision) और एक ?distro= क्वालिफ़ायर होता है, जैसे pkg:deb/ubuntu/openssh-server@1:8.9p1-3ubuntu0.6?distro=jammy. इन्वेंट्री का मिलान बैच किए गए POST /match/batch कॉल्स में होता है (प्रति टियर-आकार चंक एक अनुरोध) सर्वर-साइड, इकोसिस्टम-नेटिव वर्शन नियमों (dpkg/rpm/apk/semver) के साथ — इसलिए 1.18.0-6+deb11u3 जैसा बैकपोर्टेड-और-फिक्स्ड बिल्ड सही रूप से फ़्लैग नहीं होता, और क्लाइंट-साइड वर्शन अनुमान नहीं लगाया जाता। निष्कर्ष API के confirmed फ़्लैग से विभाजित होते हैं: पुष्टि किए गए मिलान रिपोर्ट होते हैं; जिन समन्वय मिलानों का वर्शन पुष्ट नहीं किया जा सकता, उन्हें अलग से unconfirmed / triage के रूप में दिखाया जाता है (गिनती, byCve और --fail-on से बाहर रखा गया; --strict से हटाएँ)।
नेटवर्क-एक्सपोज़र सहसंबंध। मैनिफ़ेस्ट स्कैनर (Trivy, Grype, osv-scanner) पैकेज सूचियाँ पढ़ते हैं; बाहरी स्कैनर (Nessus, OpenVAS) को दूसरे होस्ट की ज़रूरत होती है। यह टूल हर चालू सेवा की प्रोसेस को उन सॉकेट्स से मैप करता है जिन पर वह listening है (/proc/net Linux पर, अन्य Unix पर lsof, Windows पर Get-NetTCPConnection / netstat) और रीचबिलिटी को वर्गीकृत करता है — loopback / private / public। 0.0.0.0 पर एक कमजोर सेवा 127.0.0.1 पर मौजूद सेवा से बहुत अलग जोखिम है: निष्कर्ष पहले-exposed को रैंक करते हैं और --fail-on exposed CI को ठीक इसी पर गेट करता है। कोई पैकेट नहीं भेजा जाता। निष्कर्ष CISA KEV और EPSS भी रखते हैं।
एक्सपोज़र-जागरूक प्राथमिकता। हर निष्कर्ष को एक riskScore (0–100) और SSVC-शैली decision बैंड मिलता है — act-now · soon · schedule · track — जो severity, EPSS, KEV और मालिक एसेट के नेटवर्क एक्सपोज़र से मिलकर बनता है। सारांश हर पंक्ति की शुरुआत [ACT-NOW 92]-शैली के बैज से करता है और उसी के अनुसार सॉर्ट करता है, ताकि कुछ public-facing, known-exploited समस्याएँ शोर भरे होस्ट के ऊपर तैरती दिखें। यह स्कोर स्थानीय और सर्वर-साइड दोनों जगह एक ही फ़ॉर्मूले का उपयोग करता है (Radar monitoring दृश्य थोड़ा बोनस जोड़ता है जब KEV निष्कर्ष अपनी नियत तिथि पार कर चुका हो — एक तारीख जो CLI के पास नहीं होती), और --json तथा SARIF (properties) में दिखता है।
एक बार का स्कैन एक समय-बिंदु है। किसी होस्ट को एक बार पंजीकृत करें और Radar देखता रहता है: जब कोई नया-प्रकाशित CVE उसके किसी समन्वय को प्रभावित करता है, तो आपको एक अलर्ट मिलता है (email + Console), जिसे एक्सपोज़र के आधार पर प्राथमिकता दी जाती है — दोबारा स्कैन की ज़रूरत नहीं।
इंटरैक्टिव स्कैन के बाद, टूल पूछता है:
Add these 42 services to Radar for continuous monitoring & alerts? [Y/n/never]
Y इस होस्ट को पंजीकृत करता है; n इस रन को छोड़ देता है; never आपकी पसंद याद रखता है (यह कॉन्फ़िग में सेव हो जाती है और आपसे दोबारा नहीं पूछा जाएगा)। दोबारा स्कैन पर यह drift (+added / -removed / ~changed) और आपके पिछले स्कैन के बाद से नए निष्कर्ष भी रिपोर्ट करता है। Radar Console में Inventory के अंतर्गत अपने होस्ट प्रबंधित करें — निगरानी टॉगल करें, निष्कर्ष देखें, deregister करें।