← Back to news

SQLite Critical CVEs or LLM Slop?

research.jfrog.com|639 points|266 comments|by ymir_e|Aug 3, 2026

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 CVSS=10.0\text{CVSS} = 10.0 (Critical), only to downgrade it to 7.67.6 (High) a day later.

Analysis Matrix: Debunking the Claims

CVEReported FlawCVSSNVD MetadataAudit Finding
CVE-2026-51302UAF in exprComputeOperands()9.8 CRITICALPinned CPE: 3.41.0References non-existent functions.
CVE-2026-51303UAF in ExprListDelete()9.8 CRITICALContradictory metadataClaims fixes exist where there are none.
CVE-2026-51300UAF in sqlite3ExprDelete()9.1 CRITICALn/a placeholdersCited lines are unrelated to the flaw.
CVE-2026-51297UAF via jsonBlobEdit()8.8 HIGHPinned CPE: 3.41.0References non-existent functions.
CVE-2026-51296UAF in jsonRemoveFunc7.5 HIGHPopulated CPE: 3.41.0Cited lines do not exist.
CVE-2026-51304UAF via pOrderBy->nExpr7.5 HIGHVendor/Product: n/aReal 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 commits e24f20a and 280559b).
  • 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, or Window structures.
  • A diff between versions 3.51.2 and 3.51.3 reveals zero changes to src/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.

AI Hallucination Concept


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.