Build1 distinct publisher3 min readPublished
CVE-2026-45871 was made up for a test and turned out to exist. The check resolved it against a global namespace rather than against the project it was meant to defend.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A resolved CVE identifier carries more weight in triage than any other line in a report, because it looks like the one claim that was checked by someone outside the project. That is exactly the check with no project in it: the lookup goes to a global namespace that holds no opinion about which repository is under discussion [5]. What came back described a Linux kernel TPM fix [3], and for a report filed against the author's own project the honest output was never "real". It was "this identifier belongs to something else". Existence and relevance were collapsed into one boolean, and the boolean pointed the fabricator's way.
The same collapse runs in the other direction, and that one is more expensive. curl declares its options inside a macro call, and the C grammar has no rule for a macro-wrapped enumerator, so tree-sitter error-recovers and the boundary of the recovered ERROR node lands where it lands: two entries with identical syntax, 22 lines apart in one enum, gave opposite answers about whether the name was declared [13]. Older releases are worse. Through curl 7.62 the option names were assembled by the preprocessor, so CURLOPT_SSL_VERIFYPEER appears zero times in the header that declares it, and a grep-driven file chooser kept finding the docs that mention it instead [15]. A maintainer who gets a bare miss on a true claim does not read it as a wrong claim. They read it as a broken tool [14], and that reading is what gets software uninstalled [12].
So the measurement matters more than the demo. curl's 206 published advisories are human-written and were accepted as valid, and every claim in them was true of the release described [10], which makes any miss a false positive by construction, with the single controllable exception of checking an advisory against the wrong revision [11]. Running each one against HEAD and against the release it names is 412 runs [17], and the gap between those two rows prices the habit of not saying which release you mean [21]. Repairing the parser and the file selection took the pinned row from 24.0% unexplained to 3.1% [16]: 20.9 points, leaving roughly an eighth of the original error [18]. The four survivors are internal functions curl has since renamed or removed [16], which is the residue you would expect rather than the kind that ends trust. Documentation would have been the easier corpus and the wrong one, since it drifts and cites other projects [20].
Both bugs are one bug. A string was found somewhere, and the finding was reported as a fact about the project. One version of that mistake flatters a fabricated report and the other insults an honest one, and only the second gets reported back, because the triager who was reassured by a green CVE line has no reason to go looking [7].
Ranked by verification strength, evidence, and original report placement.
The tool reported that CVE-2026-45871 was real: a Linux kernel TPM bug, "st33zp24: Fix missing cleanup on get_burstcount() error". The author had invented a number and hit a live one.
Fixing both the parser and the file selection took the pinned advisory row from 24.0% unexplained to 3.1%, and the four remaining misses are internal functions curl has since renamed or removed.
The author is building a tool that checks whether the claims in a bug report correspond to anything that exists: whether the file it names is in the repository, whether the function is declared, whether the version was ever tagged. It does not attempt to detect whether the report is AI-generated.
To test the tool end to end, the author wrote a deliberately fabricated security report against one of his own projects containing a fake file, fake function, fake commit hash, and a CVE number invented on the spot: CVE-2026-45871.
Every other fabricated claim in the test report was correctly flagged; the CVE, the one claim a triager would most want challenged, came back green and read like corroboration.
The author's diagnosis: the tool was asking "does this identifier exist" when the question that mattered was "does it have anything to do with this project".
Follow any of these and your For You feed starts watching them — no settings page required.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Specific and mechanistically detailed, but wholly self-reported
The failure mechanisms are described at a level that a reader could reproduce: named macro patterns, quoted code, an identified parser-recovery behaviour, and a public ground-truth corpus (curl's 206 OSV advisories) with before/after unexplained-miss rates. That is well above anecdote. It is capped by being one first-person post with no independent verification of the central CVE collision, no published harness output, and author-defined metrics.
Pre-1.0 artifact, no evidenced third-party use
There is a shippable artifact — an Apache-2.0 GitHub Action at v0.1.4 with a pinned SHA — which is more than a blog-post prototype. But the only evaluation is a replay over archived advisories, the author explicitly states no maintainer has run it against real inbound traffic, and the cluster contains no downstream users, stars, installs, or maintainer testimony.
Slightly understated relative to its own evidence
The headline ('I invented a CVE number to test my tool. It was real') is attention-shaped, but the body under-sells rather than over-sells: the author volunteers that all numbers are replays, flags the 32% docs rate as the figure he would attack, concedes the tool cannot catch well-grounded fabrications, and makes no efficacy claim for live triage. No capability or adoption claim in the cluster outruns the supplied evidence, so the gap sits modestly negative rather than at zero.
Promotional interest, largely offset by adverse disclosure
The author is publishing about a tool he owns, ends with an install snippet, and solicits maintainers to run it — a clear promotional interest. It is discounted because the piece is structured around its own failures, the project is Apache-2.0 with no pricing or vendor relationship disclosed in the cluster, and the disclosures (no live traffic, cannot detect grounded fabrications, contested docs metric) work against the promotion.
Moderate: internally coherent, single-source, unreplicated
One publisher and one self-published author supply every fact, so there is no cross-source corroboration and no way here to confirm the CVE collision or the benchmark numbers. Confidence is nonetheless above the floor because the technical mechanisms are specific, mutually consistent, and stated against a public corpus that a third party could re-run.
security
Vulnerability disclosures bent upward in 2026. Algorithm records did not.1 distinct publisher
build
A guard that reads workflow files proves the schedule is in git, not that the job ran1 distinct publisher
build
Fabricated SQLite CVEs cleared NVD, CISA ADP and Red Hat before anyone ran the code1 distinct publisher
build
A file-copy Allure adapter for Katalon, and the history IDs that make retries useful1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 26, 2026