feat(tools): get_exposure_window — CVE exposure window calculator + CLI subcommand (+102 tests) - #190
Open
manus-use wants to merge 1 commit into
Open
feat(tools): get_exposure_window — CVE exposure window calculator + CLI subcommand (+102 tests)#190manus-use wants to merge 1 commit into
manus-use wants to merge 1 commit into
Conversation
…LI subcommand (+102 tests)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
New tool and CLI subcommand that computes the vulnerability exposure window for a CVE — the elapsed time between CVE disclosure and patch availability. Gives security teams concrete metrics for SLA compliance, risk reporting, and remediation prioritisation.
Motivation
During vulnerability management, teams need to answer: "How long were systems vulnerable?" and "Is the exposure window still open?" Currently, this requires manually correlating dates from NVD, CISA KEV, GHSA, and EPSS. This tool automates that correlation and produces actionable timing metrics.
How it differs from existing tools
cve-timeline(#53)vendor-response(#149)temporal-priority(#186)exposure-window(new)This fills a gap where the project can detect patches and score urgency but cannot answer the quantitative question: "How many days was the exposure window open?"
Features
CLI Subcommand:
exposure-windowTool:
get_exposure_windowStrands TOOL_SPEC-compliant module-based tool for agent integration.
Data Sources
Output Metrics
disclosure_date— When the CVE was first publishedpatch_date— Earliest detected patch availability (NVD refs + GHSA)exposure_days— Days between disclosure and patch (or days since disclosure if unpatched)status—patched|unpatchedkev_date— When CISA added to KEV (if applicable)kev_exposure_days— Days from KEV addition until patchcurrent_epss— Current EPSS scorerisk_label— Contextual exposure risk (critical/high/moderate/low)Risk Label Logic
criticalcriticalcriticalTests
102 new tests covering:
Full suite: 1260 passed (baseline 1158 + 102 new), 3 deselected, 3 warnings, 0 failures.
No external dependencies added
Uses only
requests(already a project dependency) and thestrandsSDK@tooldecorator.Open PRs checked for overlap (no duplicates)
Checked all 100+ open PRs (#79–#189). Closest PRs:
cve-timeline— event sequence reconstruction (no duration metrics)vendor-response— patch status classification (no timing computation)temporal-priority— urgency score (no exposure duration)cve-enrich— multi-source enrichment dump (no timing analysis)predict-exploitation— exploitation probability (no exposure window)None compute concrete exposure window duration metrics or produce the open/closed window status with KEV-to-patch gap analysis.