SQLite Critical CVEs or LLM Slop?
Genuine SQLite Vulnerabilities or Just LLM Slop?
By Afek Berger, JFrog Security Researcher | Published July 30, 2026
Recently, a new GitHub repository—programmervuln/cveadvisory-—released a series of vulnerability advisories targeting SQLite. These were part of a larger batch of over 50 CVEs, the vast majority of which JFrog suspects are "LLM slop" (AI-generated hallucinations), with perhaps only one exception.
Despite the dubious origins, the National Vulnerability Database (NVD) quickly categorized these as critical, a sentiment initially echoed by CISA's ADP. However, upon closer inspection by JFrog's security team, the claims evaporated. The cited code was either non-existent in the specified versions or completely unrelated to the described logic.
"The official SQLite advisory page remains the gold standard for tracking actual vulnerabilities; notably, none of these CVEs appear there."
The "AI Slop" Evidence
Our team questioned the legitimacy of these reports based on several red flags:
- PoC Failure: The provided Proof-of-Concept (PoC) payloads failed to trigger any crashes.
- AI Detection: When processed through
Gptzero, the advisories were flagged as AI-generated. - Aggregation Warning: Combining all advisories into a single document triggered immediate AI-content warnings.
- Score Volatility: We observed Red Hat initially assigning CVE-2026-51302 a perfect (Critical), only to downgrade it to (High) a day later.
Analysis Matrix: Debunking the Claims
| CVE | Reported Flaw | CVSS | NVD Metadata | Audit Finding |
|---|---|---|---|---|
CVE-2026-51302 | UAF in exprComputeOperands() | Pinned CPE: 3.41.0 | References non-existent functions. | |
CVE-2026-51303 | UAF in ExprListDelete() | Contradictory metadata | Claims fixes exist where there are none. | |
CVE-2026-51300 | UAF in sqlite3ExprDelete() | n/a placeholders | Cited lines are unrelated to the flaw. | |
CVE-2026-51297 | UAF via jsonBlobEdit() | 8.8 HIGH | Pinned CPE: 3.41.0 | References non-existent functions. |
CVE-2026-51296 | UAF in jsonRemoveFunc | 7.5 HIGH | Populated CPE: 3.41.0 | Cited lines do not exist. |
CVE-2026-51304 | UAF via pOrderBy->nExpr | 7.5 HIGH | Vendor/Product: n/a | Real function, but wrong argument count. |
Investigation Methodology
To ensure a rigorous verification process, we implemented the following workflow:
Verification Checklist:
- Source code inspection against specific tags.
- Clean-room compilation to avoid environment noise.
- Verbatim PoC execution under memory instrumentation.
- Metadata audit of CPE patterns.
Deep Dive: Case Studies in Hallucination
1. CVE-2026-51302: The Phantom Logic
The Claim: A heap use-after-free (UAF) occurs when sqlite3ReleaseTempReg() leaves a dangling pointer in regFree1, which is then accessed by exprComputeOperands().
The Reality:
- The function
exprComputeOperands()did not exist in SQLite 3.41; it was introduced in mid-2025 (see commitse24f20aand280559b). sqlite3ReleaseTempReg()does not perform heap deallocation. It simply manages register indices in an array.
/* expr.c:6562, SQLite 3.41.0 */
void sqlite3ReleaseTempReg(Parse *pParse, int iReg){
if( iReg ){
sqlite3VdbeReleaseRegisters(pParse, iReg, 1, 0, 0);
if( pParse->nTempReg < ArraySize(pParse->aTempReg) ){
pParse->aTempReg[pParse->nTempReg++] = iReg;
}
}
}
Result: The PoC ran perfectly. No crash.
2. CVE-2026-51303: The Ghost Patch
The Claim: ExprListDelete() fails to clear back-references in parent structures, a bug allegedly patched in version 3.51.3.
The Reality:
- No back-reference pointers exist in
Expr,Select, orWindowstructures. - A
diffbetween versions 3.51.2 and 3.51.3 reveals zero changes tosrc/expr.c.
Result: The PoC provided was invalid SQL and failed at the parser level.
3. CVE-2026-51300: Misplaced Pointers
The Claim: A UAF in sqlite3ExprDelete() occurs because a left-hand expression pointer isn't cleared, citing specific lines in expr.c.
The Reality: The cited lines (1012 and 1026) are merely a comment and a memory allocation call. They have no relation to pLeft or deletion logic.
/* expr.c:1330, SQLite 3.41.0 */
void sqlite3ExprDelete(sqlite3 *db, Expr *p){
if( p ) sqlite3ExprDeleteNN(db, p);
}
Result: The query executed successfully with no memory leaks.
4. CVE-2026-51297: Version Mismatch
The Claim: jsonParseFree() leaves dangling references accessed by jsonBlobEdit().
The Reality: jsonBlobEdit() was not present in version 3.41.0; it was added later for JSONB support. In 3.41.0, jsonParseFree() is used in destructors where the structure is immediately discarded.
Result: The PoC triggered a "malformed JSON" error and never reached the target logic.
5. CVE-2026-51296: Impossible Coordinates
The Claim: Reports a UAF based on specific line numbers in the source code.
The Reality: The line numbers cited simply do not exist or do not contain the logic described.
Summary: This incident highlights the danger of trusting automated CVE submissions without manual verification. When the "evidence" consists of non-existent functions and imaginary line numbers, we are dealing with LLM slop, not security threats.