A self-contained HTML app with all Known Exploited Vulnerabilities embedded inline.
Run build.py to pull the latest data — then open the HTML in any browser, anywhere.
The project is two files. build.py is a Python script that fetches
the latest KEV JSON from CISA's live feed and bakes every vulnerability record
directly into a standalone HTML file. The resulting cisa-kev-browser.html
needs no server, no network connection, and no dependencies to run.
count field against actual entries received.
Sorts all vulnerabilities newest-first before embedding.
CATALOG constant — no network call needed.
It populates the vendor and CWE dropdowns, displays the latest
entry date in the stats bar, and renders the first page of results instantly.
End-to-end data flow from CISA's CDN through build.py
into the standalone HTML app and its interactive UI layers.
kev.json if network is unavailableurllib, json, ssl)| Step | Actor | Action | Output |
|---|---|---|---|
| 1 | build.py | Construct cache-busted URL with Unix timestamp + random nonce | CISA_URL?_=1744034291&nocache=873227 |
| 2 | build.py | HTTP GET with no-cache headers + fresh SSL context | Raw JSON bytes from CISA CDN |
| 3 | build.py | Parse JSON, cross-check count vs len(vulnerabilities) |
Validated catalog dict |
| 4 | build.py | Sort vulnerabilities[] by dateAdded descending |
Newest entry at index [0] |
| 5 | build.py | Serialize to compact JSON, inject into HTML template via token replacement | cisa-kev-browser.html written to disk |
| 6 | Browser | Parse const CATALOG = {...} on page load |
1,558+ objects in memory |
| 7 | Browser | Populate vendor + CWE dropdowns, set latest-entry stat | UI ready state |
| 8 | Browser | Run applyFilters() → sort() → renderPage() |
First 50 rows rendered, newest CVE visible at row 1 |
| 9 | User | Type in search, change dropdowns, click column headers | Instant in-memory filter/sort — no network |
| 10 | User | Click CVE ID → detail modal opens | Full metadata, NVD/CISA/vendor links, ← → navigation |
build.py.build.py defeats CDN caching with timestamp + nonce URLs and no-cache headers, guaranteeing a fresh pull from CISA on every run.build.py and cisa-kev-browser.html into the same folder.build.py to pull the latest KEV datacisa-kev-browser.html, or:build.py and reload the HTML. No other steps needed.| Field | Value |
|---|---|
| Source | CISA Known Exploited Vulnerabilities Catalog |
| JSON Feed URL | https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json |
| Update Frequency | Multiple times per week |
| Format | JSON — fields: cveID, vendorProject, product, vulnerabilityName, dateAdded, dueDate, knownRansomwareCampaignUse, cwes, shortDescription, requiredAction, notes |
| Schema | CISA KEV JSON Schema |