针对虚构的 SQLite 漏洞发布关键 CVE
SQLite Critical CVEs or LLM Slop?

原始链接: https://research.jfrog.com/post/sqlite-critical-cves-or-llm-slops/

JFrog 安全研究人员揭露了一波针对 SQLite 的虚假“大语言模型垃圾(LLM slop)”CVE。一个名为 `programmervuln/cveadvisory-` 的 GitHub 仓库发布了 50 多条虚假漏洞公告,这些公告被美国国家漏洞库(NVD)和美国网络安全与基础设施安全局(CISA)错误地标记为“严重”。 严谨的测试表明,这些报告完全是伪造的: * **代码不存在:** 公告中引用的函数和行号在指定的 SQLite 版本中根本不存在。 * **验证失败:** 所提供的概念验证(PoC)载荷未能触发任何崩溃或内存错误。 * **虚假修复:** 没有任何官方的 SQLite 安全补丁对应这些漏洞声明。 此事件凸显了当前漏洞报告流程中的严重缺陷。自 NVD 在 2024 年减少人工审核以来,该系统已变得极易受到自动化 AI 生成垃圾信息的干扰。由于 CVE 的提交缺乏身份验证和概念验证要求,这些“垃圾”报告可以轻易渗入企业扫描器和自动化修复工作流中。 为降低风险,安全团队应忽略未经核实的 CVE,优先参考厂商官方安全页面而非第三方数据库,并在投入资源修补不存在的威胁之前,对任何“严重”级别的漏洞进行独立验证。

这份 Hacker News 讨论聚焦于日益严重的“AI 垃圾内容”问题,特别是那些不准确甚至完全虚构的 AI 生成 CVE(通用漏洞披露)报告。 **讨论要点:** * **核心问题:** 恶意行为者或缺乏经验的用户正在利用大语言模型(LLM)大规模生成漏洞报告。这些“幻觉”报告往往指向不存在的代码或漏洞,却经常被自动化系统和扫描器接受,给维护者和安全团队带来了沉重的管理负担。 * **系统性失灵:** 参与者认为目前的 CVE 系统存在“设计缺陷”。由于该流程缺乏强制性的人工验证概念验证(PoC)要求,低质量的自动报告可以轻易充斥整个系统,掩盖合法的安全警报。 * **人为问责:** 讨论达成共识:虽然 LLM 是强大的辅助工具,但它们本质上是概率性的文本预测引擎,而非真正的智能。验证责任必须始终由人类承担。 * **行业影响:** 一些企业要求修补“所有严重 CVE”的安全策略正被这些杂乱信息所利用,导致安全团队被迫浪费资源去调查假威胁,而非应对真实的零日漏洞。 这场讨论反映了对“AI 热潮”更广泛的挫败感:在追求自动化的过程中,相关验证和质量控制机制的发展往往严重滞后。
相关文章

原文

Over the past few days, a newly created GitHub repo (programmervuln/cveadvisory-) published a batch of SQLite vulnerability advisories (as part of other 50+ CVEs which we believe are also LLM slop except from one). NVD quickly flagged these as critical, and CISA's ADP agreed. But when JFrog security researchers dug in to verify, the claims fell apart:

  1. The cited code didn't even exist in those versions or referenced unrelated logic.
  2. When testing the PoC payloads they didn’t work (not triggering any crash).
  3. None of these CVEs are listed on SQLite’s official advisory page (which is a gold standard for tracking actual vulnerabilities).
  4. All advisories in this repo seem AI generated when testing them with Gptzero

Combining all advisories into one file triggers AI-generated content warnings

This made us question the reliability of these CVEs as well as understanding that these CVEs may be LLM slop.

While investigating one of the CVEs yesterday, CVE-2026-51302, we saw that Red Hat initially assigned it a 10.0 Critical severity score:

Looking at the CVE again today, we noticed that the score has since been downgraded to 7.6 High.

CVE Reported Flaw CVSS NVD Metadata Audit Finding
CVE-2026-51302 UAF in exprComputeOperands() 9.8 CRITICAL Pinned CPE: 3.41.0 The advisory mentions non-existing functions.
CVE-2026-51303 UAF in ExprListDelete() back-refs 9.8 CRITICAL Contradictory metadata The advisory said there are non-existent fixes.
CVE-2026-51300 UAF in sqlite3ExprDelete() 9.1 CRITICAL n/a placeholders Advisory cited lines that are unrelated to the vulnerability.
CVE-2026-51297 UAF via jsonBlobEdit() 8.8 HIGH Pinned CPE: 3.41.0 The advisory mentions non-existing functions.
CVE-2026-51296 UAF in jsonRemoveFunc 7.5 HIGH Populated CPE: 3.41.0 Advisory cited lines that do not exist.
CVE-2026-51304 UAF via pOrderBy->nExpr post-free 7.5 HIGH Vendor/Product: n/a Advisory showed a real function with a wrong argument number.

To verify these reports thoroughly, we established an isolated testing workflow:

  • Source Inspection: We cloned the official sqlite/sqlite repository and checked out the target tags (version-3.41.0, version-3.51.2, and version-3.51.3). We compared the reported vulnerability mechanics against the actual source code.
  • Clean Environment Build: Compiled the official SQLite releases directly inside isolated Docker containers to prevent environmental contamination.
  • PoC Execution: Feed each advisory's PoC SQL statements verbatim into the compiled SQLite binaries under AddressSanitizer (ASan) instrumentation to detect memory bugs.
  • NVD & Metadata Audit: Evaluated the CPE patterns and advisory metadata across NVD and GHSA feeds to cross-check tracking accuracy.

Reported Vulnerability: The advisory claims a heap use-after-free occurs when sqlite3ReleaseTempReg() leaves a dangling pointer in regFree1, which is later dereferenced by exprComputeOperands().

Finding: The primary issue here is that exprComputeOperands() didn't exist in SQLite 3.41. It was added in the middle of 2025 (commits e24f20a, 280559b). Furthermore, the mechanics of sqlite3ReleaseTempReg() do not involve heap deallocation. The function simply recycles register indices into an array for reuse, making a UAF impossible by design.

/* 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;
    }
  }
}

PoC Testing: The query ran successfully without triggering a crash because the bug does not exist.

Reported Vulnerability: Claims that ExprListDelete() fails to clear back-references in parent structures when releasing child nodes, allegedly patched in version 3.51.3.

Finding: There is no evidence of back-reference pointers in the Expr, Select, or Window structures that could lead to such a state. Most tellingly, a diff between 3.51.2 and 3.51.3 shows absolutely no changes to src/expr.c. The "patch" was entirely fabricated.

PoC Testing: The PoC is invalid SQL and fails at the parser stage, never actually hitting the execution logic.

Reported Vulnerability: Claims a UAF occurs in sqlite3ExprDelete() because a left-hand expression pointer is not cleared, referencing specific line numbers in expr.c.

Finding: The cited line numbers (1012 and 1026) are a comment and a memory allocation call respectively, neither has anything to do with pLeft or deletion logic. While the function is called during OOM error handling, it occurs at the end of a scope where the pointer is never reused, preventing any potential UAF.

/* expr.c:1330, SQLite 3.41.0 */
void sqlite3ExprDelete(sqlite3 *db, Expr *p){
  if( p ) sqlite3ExprDeleteNN(db, p);
}

PoC Testing: Executed successfully as a valid SQL query, returning expected output with zero memory leaks or errors.

Reported Vulnerability: Claims jsonParseFree() leaves dangling references that are later accessed by jsonBlobEdit().

Finding: Similar to the first case, jsonBlobEdit() was not present in the reported target version (3.41.0). It was only introduced later as part of the JSONB implementation. In the target version, jsonParseFree() is used strictly in destructors where the surrounding structure is immediately discarded.

PoC Testing: The PoC hits a malformed JSON error immediately, meaning the code never reaches the JSON modification logic where the vulnerability supposedly exists.

Reported Vulnerability: Reports a UAF in jsonRemoveFunc specifically at lines 3555 and 3575 of json.c.

Finding: In version 3.41.0, src/json.c is only 2706 lines long. The cited line numbers don't exist. The actual implementation of the function was found roughly 2000 lines earlier, and an audit of that code showed no memory management flaws.

PoC Testing: The payload fails during JSON parsing, leaving the memory untouched.

Reported Vulnerability: Claims sqlite3ExprListDelete(pOrderBy) frees the ordering list while subsequent code reads pOrderBy->nExpr.

Finding: The single-argument signature reported in the advisory does not exist. the actual signature requires a pointer to the database context (sqlite3 *db). Furthermore, SQLite explicitly nulls pointers immediately after deletion:

/* select.c:3761, SQLite 3.41.0 */
sqlite3ExprListDelete(db, pPrior->pOrderBy);
pPrior->pOrderBy = 0;   /* Pointer immediately cleared; impossible to dereference */

PoC Testing: The PoC payload executed against a 20-column ORDER BY query processed normally, returning sorted results with no issues.

The CVE submission process via MITRE's public form lacks any real identity verification, meaning virtually anyone can submit a vulnerability description and propose a CVSS score.

Historically, NIST acted as a reliable safety net for this system, experts at the National Vulnerability Database (NVD) manually analyzed, validated, and enriched incoming CVEs before giving them a stamp of approval. But that safety net broke in February 2024.

Hit by a massive surge in vulnerability reports, NIST effectively hit pause on deep analysis. CISA and other Authorized Data Publishers (ADPs) tried to step in with their own enrichment efforts, but the global pipeline is now fragmented and drowning in a massive backlog. Because no step in today's system actually requires a proof-of-concept or bug reproduction, a plausible-sounding fake advisory can slide right through the pipeline and end up in GHSA, downstream databases, and enterprise scanners.

This incident demonstrates a systemic issue with automated vulnerability ingestion. A broader audit of 55 advisories published by the same GitHub account revealed that 54 were completely fabricated, while one contained a real bug wrapped in unverified CVE metadata.

Red Flags to Spot Slop CVEs:

  • Missing Vendor Corroboration: No mention of the issue on official maintainer security pages (e.g., sqlite.org/cves.html).
  • Absent Commit History: No commit hash or pull request linked in reference fields.
  • Metadata Contradictions: Empty CPE product definitions or version ranges that conflict with the advisory narrative.
  • Non-existent Code References: Citing functions that do not exist in the claimed target version or line numbers past EOF.

These LLM slop CVEs can cause organizations to waste time investigating and patching vulnerabilities that do not actually exist, as well as polluting vulnerability databases. In environments where Critical vulnerabilities are automatically prioritized or tickets are opened based on vulnerability scores, such fabricated CVEs can turn into a real burden.

In environments where AI is used to automate vulnerability triage and remediation this becomes even more concerning. An AI agent that encounters a fabricated CVE may attempt to locate the vulnerable function, generate a patch, or recommend changes based on code that does not even exist. Instead of helping security teams remediate real vulnerabilities, it can lead them down a completely wrong path, potentially introducing unnecessary changes and wasting time.

To avoid being affected by this kind of vulnerability noise:

  • Don't blindly trust newly published CVEs by unknown/unvalidated sources.
  • Investigate such critical CVEs to understand whether the score matches the vulnerability.
  • Check if your environment is truly affected by the CVE.
  • Reproduce the reported issue with the provided PoC whenever possible in a safe environment.

We have also formally reported these findings to GHSA, Redhat and NVD to assist in the remediation of these records.

联系我们 contact @ memedata.com