Private Beta
.md

BountyHub Docs

CVE Watcher Overview

How CVE Watcher combines CISA KEV, NVD CVSS, and FIRST EPSS into an exploit-focused feed, how CVEs are published and re-announced, and what each plan can do.

CVE Watcher overview

CVE Watcher tracks vulnerabilities that are being exploited, or are likely to be exploited soon, and turns them into an actionable feed. Every entry is enriched with severity, exploitation likelihood, ransomware use, and the CISA remediation deadline.

The feed is open to every BountyHub plan. Push notifications to your own channels require a paid plan — see CVE Watcher push notifications.

#At a glance

QuestionFieldWhere it comes from
Is exploitation confirmed?Exploit tier confirmedCISA KEV
Is there public exploit code?Exploit tier watch / likely, flag ExploitNVD reference tags
How bad is it?Severity and CVSSNVD CVSS v3
How likely is exploitation?EPSSFIRST EPSS
Is it used by ransomware?Flag RansomwareCISA KEV
When must it be fixed?KEV added / DueCISA KEV

#Data sources

SourceAddsRefresh
CISA KEV catalogCVE id, vendor, product, description, KEV added date, remediation due date, known ransomware usePolled every 5 minutes with a conditional request, so an unchanged feed is skipped
NVD CVE API v2CVSS v3 base score, base severity, and Exploit-tagged referencesBatched every minute
FIRST EPSSProbability that the CVE will be exploited in the next 30 daysBatched every minute
NVD exploit sweepCVEs modified recently that already have public exploit code, before CISA catalogs themRuns with the KEV ingest

NVD data is used under its public API terms; CVE Watcher is not endorsed or certified by the NVD.

#Feed columns

Click a row in the feed to open the detail drawer with the full description and an NVD link.

ColumnMeaning
SeverityCVSS bucket: critical, high, medium, low, none, or unknown.
Exploit tierConfidence that this is exploited in the wild — see below.
VulnerabilityCVE id, vendor, product, and a one-line description.
CVSSCVSS v3 base score from 0.0 to 10.0.
EPSSProbability of exploitation in the next 30 days, shown as a percentage. Amber at 50% or higher.
KEV addedDate CISA added the CVE to the KEV catalog. Empty for CVEs found by the exploit sweep that are not KEV-confirmed yet.
DueCISA remediation deadline. Amber when due within 14 days, red when missed in the last 30 days, gray when historical.
FlagsRansomware, Exploit (public exploit code exists), and Updated (re-announced after an upgrade).

#Severity

Severity follows NVD's base severity when NVD provides it. When NVD only provides a score, CVE Watcher derives the same buckets from CVSS v3:

BucketCVSS v3Meaning
Critical9.0 – 10.0Remotely exploitable, usually with high impact.
High7.0 – 8.9Serious impact or easily exploited.
Medium4.0 – 6.9Requires specific conditions or has limited impact.
Low0.1 – 3.9Limited impact or difficult to exploit.
None0.0No security impact recorded.
Unknown—NVD has not published a score.

#Exploit tier

The exploit tier is derived from the current data every time you query the feed, so an entry can move up as new signals arrive.

TierMeaningHow it is derived
ConfirmedExploitation is confirmed in the wild.The CVE is in CISA KEV.
LikelyPublic exploit code exists and exploitation is probable.NVD marks a public exploit reference and EPSS is 0.5 or higher.
WatchPublic exploit code exists, but CISA has not confirmed exploitation.NVD marks a public exploit reference.
NoneNo known exploit signal.None of the above.

Only Confirmed entries are announced by the publish pipeline. Likely and Watch entries appear in the feed as early warning, before CISA adds them to KEV. Use the tier search filter to focus on one signal level — see Search and filters.

#How a CVE reaches you

CVE Watcher uses two scheduled workflows and a strict publish order.

  1. Ingest. Every 5 minutes, the KEV feed is fetched. Each entry is inserted or refreshed with KEV-only data. The same run sweeps recently modified NVD records for CVEs with public exploit code and adds them to the feed without KEV data.
  2. Enrich and publish. Every minute, a batch of CVEs is enriched from NVD (CVSS and exploit references), EPSS probabilities are backfilled in batches, and any KEV-confirmed CVE that is new or materially upgraded is collected for publication.
  3. Public announcement. The whole run's pending CVEs are posted as one digest to BountyHub's public Discord (chunked to Discord's message size). Each CVE is marked public_published.
  4. In-app visibility. The CVE is marked user_visible and appears in every user's feed.
  5. Paid push. The CVE is pushed to the channels assigned by paid users, then marked notified.

The order is structural: a later stage cannot run before an earlier one succeeds. If a stage fails, Temporal retries it; delivery jobs use an idempotency key that includes the CVE version, so a retry does not double-post while a new version is a distinct, re-announced event.

#Why a CVE can be re-announced

A CVE is published as version 1 the first time it is announced. It is published again, as version 2 or later, when its risk materially increases:

  • the severity bucket rises (for example high → critical), or
  • the severity bucket stays the same and the CVSS score rises by at least 1.0.

Downgrades, description-only edits, and other metadata changes do not re-announce. Re-announced entries have updated = true and a higher published_version; the feed shows the Updated flag.

#Cadence

TaskIntervalNotes
KEV ingest + exploit sweep5 minutesConditional If-Modified-Since request; the sweep covers NVD records modified since the last watermark.
NVD enrichment + EPSS + publish1 minute5 CVEs per run without an NVD API key, 50 with one; EPSS backfills up to 100 CVEs per pass.
Public Discord digestPer enrichment run with pending CVEsSkipped when no public webhook is configured.
Paid pushPer published CVE versionOne delivery job per CVE, version, and channel.

Self-hosted deployments can tune the data sources:

VariableEffect
BOUNTYHUB_NVD_API_KEYRaises the NVD batch from 5 to 50 CVEs per minute.
BOUNTYHUB_CVE_PUBLIC_DISCORD_WEBHOOK_URLEnables the public digest to BountyHub's Discord. When unset, the digest is skipped and only in-app visibility and paid push run.

The Temporal schedules are cve-watcher-ingest (300 seconds) and cve-watcher-enrich (60 seconds). Activity and workflow code runs on the cve-watcher task queue.

#Plans and access

CapabilityFreePaid
Browse and search the CVE feedYesYes
Read CVE details and facets through the APIYesYes
Assign Discord, Slack, email, or Telegram push channelsNoYes
Receive push notificationsNoYes, while the paid subscription is active or trialing
  • Push delivery uses one channel per integration kind. Assigning another channel of the same kind replaces the previous one.
  • Assigning a channel requires an active or trialing paid plan. If the plan lapses, the feed stays available but push delivery stops.
  • API access uses the NotificationRo scope for the feed and IntegrationRo / IntegrationRw for channel assignments — see CVE Watcher API and scopes.