Commit Graph
100 Commits
Author SHA1 Message Date
0xMarcio 8c739f44e5 Reskin to GitHub Primer dark
Every colour is now a Primer dark_default token. The header band, its four
capability pills and the heading above the trending table are gone, so the
search field is the first thing on the page and the switcher labels its own
table. Rows tighten to 10px, descriptions clamp to two lines, and the PoC
list loses its box for a hairline rule.

Blue is the only thing you can click. Amber means 500 stars or more and red
means known-exploited, and nothing else carries a hue: the star glyph is
dimmed at every value so the column reads as numbers rather than symbols.

The handoff's placeholder wanted an em dash. It reads "Search CVE, vendor,
product or keyword, exclude with -windows" with the middot the count line
already uses, and the six em dashes I had left in code comments are gone
too.
2026-08-31 04:00:54 +02:00
0xMarcio 6822fdbfbc Fix three ways the index misread its own data
An advisory copied from a GitHub Security Advisory opens with "### Impact"
or "### Summary". The section parser treated any heading as a boundary, so
those descriptions ended themselves and reached the site empty. Only the
four headings an entry actually uses end a section now, and leading heading
markers are stripped when the text is rendered.

A trailing slash made exploit-db.com/exploits/41034 and .../41034/ two
different links, which put 53 duplicate rows in front of readers.

github.com also serves attachments and advisories, and 103 of those were
being parsed as owner/repo -- rendering "user-attachments / files" with an
empty star column instead of the PoC archive they point to.
2026-08-31 00:22:44 +02:00
0xMarcio 1aa51fa852 Mark the CVEs attackers are actually using
CISA publishes a catalogue of vulnerabilities observed being exploited in
the wild, and 1,111 of its 1,685 entries are CVEs this index already holds
PoCs for. That is the one fact a reader most wants before opening an
exploit, and it was nowhere on the page.

The weekly audit stores the catalogue, the build trims it to the CVEs the
index carries, and a result row shows a KEV chip -- with the ransomware
flag where CISA records one, which covers 352 of them. 37 KB served.

A failed fetch keeps the stored catalogue rather than dropping the badge
off every entry. The chip reuses the header pill's treatment: the palette
still spends green on things you can click and amber on star counts only.
2026-08-31 00:13:01 +02:00
0xMarcio 79da26dd45 Stop searching the index on every keystroke
A pass over 104,043 entries costs 25-125ms, which is fast enough to feel
instant once but not nine times in a row while a word is typed. Coalesce a
burst at 160ms, skip single-character queries that match most of the index
without narrowing anything, and total the PoC count during the scan rather
than walking the matches again to display it.
2026-08-30 23:24:19 +02:00
0xMarcio 368a784fe1 Rank PoC links by what they are about, not by how big they are
Sorting a CVE's links on stars alone handed the top of Log4Shell to
ThreatMapper, Viper, afrog and Awesome-OSINT-For-Everything: large tools
that mention the CVE somewhere. Rank repositories named after the CVE
first and only order those by stars, which puts CVE-2025-32463_chwoot
above a 2.5k-star general sudo toolkit.

A term no advisory text uses leaves every match tied at the weakest tier,
where newest-first is meaningless; searching log4shell led with text4shell
and then a CVE holding a single incidental link. Break those ties on how
many of the linked PoCs carry the term instead, which is only consulted
when nothing matched a description, so product searches are unchanged.

Also drop two controls that could not do anything: an expander on a
description already short enough to fit, and a footer offering to expand
a list of one.
2026-08-30 22:18:49 +02:00
0xMarcio 066ddf4400 Rebuild the frontend to the refit design
Space Grotesk for prose, IBM Plex Mono for every identifier, and the flat
hairline-bordered surfaces from the handoff. Green marks what you can act
on and amber only ever means a star count; nothing else is coloured.

Three changes to how the same data reads. Descriptions clamp to three lines
behind an expander, so a kernel CVE no longer pushes the links people came
for below the fold. Raw URLs become owner / repo rows carrying stars and
last-commit age, ranked best first, five at a time. And an empty search box
now keeps the trending PoCs on screen with a TRENDING / RECENT toggle
rather than showing an empty page.

The search grammar, ranking and negation are unchanged.
2026-08-30 21:53:31 +02:00
0xMarcio 85fe2b3ad4 Retire the abandoned second pipeline
Ten modules totalling 2,206 lines, reachable from no workflow and no live
script, alongside 18 MB of github-all.txt and references-all.txt that
nothing reads and 400 KB of stale api/v1 output that shipped in every
Pages artifact. scripts/README.md documented this as the build process.

utils.py existed for one caller and duplicated functions build_site.py
already had, so it folds into it. Nothing imports a third-party package
any more, and requirements.txt goes with it.
2026-08-30 21:09:37 +02:00
0xMarcio 78ad23cf78 Say the CVE list is still loading instead of finding nothing
Typing before the payload arrives searched an empty dataset and reported
no results, then the loader hid the table and left a blank page, so the
query had to be typed a second time. Show that data is loading and run
the pending query once it lands.
2026-08-30 17:39:01 +02:00
0xMarcio 56a945f9bb Rank on how well the query matches, not just whether it does
Unquoted words were scored independently, so "active directory" matched a
description holding "active session" and "working directory" as strongly
as a real AD advisory, and the newest-first tie-break then put the wrong
one on top. Reward the words appearing together.

Plain substring matching also meant "rce" hit "open source" and "sudo"
hit "pseudo"; require a term to start a word, while still allowing it to
match into one so "word" finds "wordpress". Weight matches near the start
of a description, in coarse buckets so a few characters never outweigh
recency: "log4j rce" now leads with Log4j2 rather than GeoTools.
2026-08-30 17:15:58 +02:00
0xMarcio 28ca54289c Untrack the generated trending file
It is rebuilt from README.md during the Pages build like CVE_list.json,
so the committed copy only ever added churn.
2026-08-30 17:00:09 +02:00
0xMarcio 7e8c22ad5f Rank search results by recency and cut page load cost
Scores were boosted by how many PoC links matched, which promoted old
CVEs with large link piles above recent findings; searching WordPress led
with 2015-2018. Rank on match quality alone and break ties by CVE year
and number, newest first.

Only the id and description are needed for every comparison, so PoC text
is derived on demand: preparing 108934 entries drops from 2.9s to 0.6s.
Dropping no-store lets the browser revalidate the 53 MB payload instead
of refetching it on every visit; the 5 KB trending file stays uncached.
Build result rows directly, since String.replace reads $& in the
replacement as a pattern, and escape link text like every other cell.
2026-08-30 16:59:43 +02:00
0xMarcio f9fc5ae28d Stop tracking generated site data
Pages builds from the workflow artifact, so the committed CVE_list.json
was never served while adding a fresh 53 MB blob to history every day.
Generate it during the Pages build instead and drop the duplicate
generator; scripts/build_site.py is now the only thing that writes it.

The jinja2 templates re-rendered a trending table that logic.js replaces
on load, so the page shell goes back to being a plain static file and the
Pages build no longer installs anything. Shallow-clone the sync job too:
it never reads git history, and the three-day lookback already recovers
a skipped day.
2026-08-30 16:59:31 +02:00
CVE-BOT b1ae59882e Update CVE PoCs 2026-08-30 2026-08-30 08:21:21 +00:00
CVE-BOT 0d71150385 Update CVE PoCs 2026-08-29 2026-08-29 09:06:17 +00:00
0xMarcio c8fbbc40b2 Clean and verify CVE PoC sources 2026-08-29 04:29:03 +02:00
0xMarcio a62cda8ec8 Automate CVE PoC ingestion 2026-08-29 00:21:06 +02:00
0xMarcio 4b56d8a455 Add star emoji to trending CVEs table rows 2025-12-19 18:14:54 +01:00
0xMarcio 1651ab9a0d improved term normalization and scoring logic 2025-12-18 10:36:27 +01:00
0xMarcio 93186218d4 Add search term normalization and enhance dataset filtering logic 2025-12-18 10:19:09 +01:00
0xMarcio 5726299eff Refactor dataset preparation logic to remove outdated CVE year filtering 2025-12-18 10:07:17 +01:00
0xMarcio db97e50d1e Remove redundant search description from hero section 2025-12-18 09:54:37 +01:00
0xMarcio 4ccfcddef0 Update hero section titles and enhance styling for improved visibility 2025-12-18 07:36:05 +01:00
0xMarcio 5c78e585a1 Simplify site to search + trending 2025-12-18 07:13:08 +01:00
0xMarcio 8f76f94f78 Update search interface to simplify descriptions and adding new filter options 2025-12-18 04:03:42 +01:00
0xMarcio 5cb3a28aeb Restore README trending tables and auto-build site 2025-12-17 21:39:16 +01:00
0xMarcio 0afef5597e Restore multi-year trending PoCs with 4-day filter 2025-12-17 21:14:24 +01:00
0xMarcio 722d7261ba Filter trending PoCs to current-year updates 2025-12-17 21:06:33 +01:00
0xMarcio 23be2e0751 Fix trending PoCs rendering and simplify frontend 2025-12-17 20:54:34 +01:00
0xMarcio 0bd6c7ceda Align trending PoCs and filter to recent data 2025-12-17 20:24:46 +01:00
0xMarcio da14307c37 Filter to PoC-backed CVEs and fix trending PoCs 2025-12-17 19:39:59 +01:00
0xMarcio 64e895579d Highlight PoC-heavy CVEs and filter KEV lists 2025-12-17 19:12:21 +01:00
0xMarcio 4a2f6f679a Improve CVE detail layout and search performance 2025-12-17 18:54:18 +01:00
0xMarcio 2581c9ff12 Add detail card for CVE description and enhance metadata rendering 2025-12-17 18:40:01 +01:00
0xMarcio 0f18fc5736 Refresh KEV and EPSS pages for cleaner signal 2025-12-17 18:24:55 +01:00
0xMarcio 1ae3d7e711 Fix search layout and add dynamic CVE pages 2025-12-17 17:38:30 +01:00
0xMarcio 224d673b96 Redesign CVE search UI and fix data path 2025-12-17 17:09:25 +01:00
0xMarcio 62777e27b6 Polish EPSS wording, no GPT-y labels 2025-12-17 16:21:43 +01:00
0xMarcio 213673f0db Fix PoC search data path and clean naming 2025-12-17 16:19:35 +01:00
0xMarcio 6a8a659c51 Fix PoC search and unify site theme 2025-12-17 16:08:35 +01:00
0xMarcio 1f0cd8e78b Add PoC pipeline with blacklist filtering and Pages build 2025-12-17 15:53:37 +01:00
0xMarcio b1085c10f5 Add legacy PoC search page and nav link 2025-12-17 15:04:14 +01:00
0xMarcio aac323de9b Add KEV/EPSS static site generator 2025-12-17 13:59:41 +01:00
0xMarcio 2da222ca15 Updated CVEs JSON 2025-09-29 21:33:15 +02:00
0xMarcio 7d6a509d5b Update CVE list 2025-09-29 19:11 2025-09-29 19:11:50 +00:00
0xMarcio 93476d6c37 Update CVE list 2025-09-29 16:09 2025-09-29 16:09:17 +00:00
0xMarcio 0c3e517733 Automate CVE sync and daily PoC refresh 2025-09-19 00:48:01 +02:00
0xMarcio fb587c6f31 Update CVE list 2025-02-03 09:19 2025-02-03 09:19:37 +00:00
0xMarcio 1862b30dfb Update CVE list 2024-09-27 12:58 2024-09-27 12:58:33 +00:00
0xMarcio 89b3f7c6ef Update CVE list 2024-08-31 19:53 2024-08-31 19:53:13 +00:00
0xMarcio f1a78b840a Update CVE list 2024-08-30 20:53 2024-08-30 20:53:59 +00:00