Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain SQL execution access to the application's SQLite
-
DeliveryCreate or use detail=none FTS5 table
-
ExploitInsert row with large negative rowid
-
ExecutionRun prefix MATCH query
-
ImpactOverflow merge buffer in fts5MergeRowidLists, corrupt heap and crash process
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a build of SQLite that includes the FTS5 extension, an FTS5 virtual table created with the non-default detail=none option, the attacker's ability to insert rows carrying negative rowids (the regression test uses -9223372036854775808), and the ability to run a prefix MATCH query (e.g. 'a*') against that table. Limiting factors: FTS5 is an optional compile-time extension and detail=none is a non-default table configuration, so default SQLite deployments without such a table are not exposed; the CVSS vector is AV:L, so the attacker needs local SQL-execution capability against the table rather than remote unauthenticated reach; and only versions before 3.54.0 are affected. Applications that never expose a detail=none FTS5 table to attacker-controlled rowids and queries are not exploitable. |
| Impact | The input CVSS 4.0 base score is 8.5 (HIGH), but the vector itself tempers the headline number: AV:L means this is a local/SQL-access flaw, not a remotely reachable network vulnerability. Exploitation requires an attacker who can already run crafted SQL (create or use a detail=none FTS5 table, insert rows with negative rowids, and issue a prefix MATCH query), so the realistic attacker population is whoever can submit arbitrary SQL or controlled content into an FTS5-enabled application. There is no CISA KEV listing (so not confirmed actively exploited) and no EPSS score was provided in the input, so probabilistic exploitation likelihood cannot be quantified here. A public research writeup exists (abraxaslabs.tech) describing the bug, but the input does not mark it as 'Publicly available (confirmed)' exploit code, so it should be treated as a public PoC/research reference that is not verified as working exploit code. A conflict worth flagging: the vendor-supplied vector rates full VC:H/VI:H/VA:H (complete confidentiality, integrity and availability impact), yet the description only demonstrates heap memory corruption and a process crash - i.e. denial of service - with no demonstrated information disclosure; the H/H/H rating reflects the theoretical potential of a CWE-787 out-of-bounds write rather than demonstrated code execution or data theft, so verify before treating this as a confirmed RCE. The vuln.today decision label is 'this_week', consistent with a serious-but-not-emergency, patch-promptly posture rather than drop-everything urgency. |
| Exploit ScenarioDerived | An attacker who can execute SQL against an application's SQLite database creates or uses a detail=none FTS5 virtual table, inserts a row with a very negative rowid (e.g. -9223372036854775808), then runs a prefix MATCH query such as 'a*'; merging the prefix doclists overflows the undersized output buffer in fts5MergeRowidLists(), corrupting the heap and crashing the process. A public research writeup describing the flaw exists, but the input does not confirm weaponized working exploit code. Because the CVSS vector is AV:L, this is a local/SQL-access scenario rather than unauthenticated remote exploitation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Heap buffer overflow in SQLite's FTS5 full-text extension, fixed in SQLite 3.54.0, lets an attacker who can write to and query a detail=none FTS5 table overflow the allocation used to merge prefix doclists, corrupting heap memory and crashing the process. Preconditions are narrow: a SQLite build that includes FTS5, a virtual table created with the non-default detail=none option, rows carrying negative rowids (the upstream regression test uses -9223372036854775808) and a prefix MATCH query such as 'a*' against that table; default builds without such a table are not exposed, and the input CVSS 4.0 vector is AV:L, matching the independent assessment of CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H with availability impact dominant. No public exploit code has been identified at time of analysis and there is no CISA KEV listing; the vendor fix is already available, so remediation is scheduled for this week.
RemediationAI
Vendor-released patch: upgrade to SQLite 3.54.0 (https://sqlite.org/releaselog/3_54_0.html); for source builds, apply commit https://github.com/sqlite/sqlite/commit/e1c9934f9f11a499029abb020ea715a08970da80 or the equivalent Fossil check-in https://sqlite.org/src/info/a7f8c92f62, both of which add the 9-byte slack to the merge buffer and switch the delta arithmetic to unsigned. Embedded-SQLite consumers should rebuild against 3.54.0 or backport that diff, since the flaw lives in the vendored amalgamation. Until the upgrade is deployed, reduce reach: restrict INSERT/UPDATE paths so no attacker-controlled negative rowids can reach detail=none FTS5 tables (application-side validation or a BEFORE INSERT trigger rejecting rowid < 0), which blocks the documented trigger at the cost of rejecting legitimate negative rowid schemes; alternatively migrate affected tables to the default detail=full configuration, which does not take the vulnerable detail=none prefix merge path but increases index size and storage cost. Builds that do not use full-text search can be compiled without FTS5 to remove the affected code entirely, at the cost of losing FTS functionality. Given the this_week priority label, budget the upgrade for the current patch cycle.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
FTS5 stores document lists as delta-encoded varints. When a prefix index (or a detail=none table, which persists only rowids and no positions) is queried with a prefix MATCH, the engine must merge two sorted doclists inside fts5MergeRowidLists() in ext/fts5/fts5_index.c (the vulnerable code is around line 6107 in the version-3.53.4 blob referenced in the advisory). The pre-fix code sized the destination buffer with sqlite3Fts5BufferSize(&p->rc, &out, p1->n + p2->n) and then re-appended each rowid as the varint delta (iRowid - iOut). Because deltas are re-encoded across the merge boundary, the encoded output can be longer than the combined length of the two input lists, so the write runs past the allocation (CWE-787, out-of-bounds write). The upstream commit e1c9934f9f11a499029abb020ea715a08970da80 (Fossil check-in a7f8c92f62) fixes this by adding 9 bytes of slack - the maximum varint width - to the buffer size request and by casting the delta subtraction to u64, which makes the encoding well-defined for the negative rowids that the input description identifies as the trigger. The trigger path beyond that (which exact negative rowid/delta combination produces the longest varint) is only partially described in the available sources; the accompanying test fts5prefix2.test inserts 55 rows with rowid 1..55 plus a row at -9223372036854775808 and runs a 'a*' prefix query.
Know when Sqlite gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Requires local ability to run crafted SQL against a detail=none FTS5 table; demonstrated impact is heap corruption and a process crash, so A:H with limited I:L and no confidentiality.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
SQLite before 3.54.0 built with FTS5 contains a heap buffer overflow in fts5MergeRowidLists() that undersizes the output buffer when merging detail=none prefix doclists. Attackers who can populate a detail=none FTS5 table with negative rowids and run a prefix MATCH query can write past the allocation, corrupting heap memory and crashing the process.
Executive ViewAI
A heap buffer overflow vulnerability in SQLite's FTS5 full-text extension (CVE-2026-119373) affects systems using non-default configurations with negative rowids, potentially causing process crashes and availability disruption. The narrow preconditions limit exposure, but any affected database-driven application could suffer unexpected downtime, impacting service reliability and business continuity.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Multiple unspecified vulnerabilities in SQLite before 3.8.10.2, as used in Apple iOS before 9, have unknown impact and a
SQLite3 from 3.6.0 to and including 3.27.2 is vulnerable to heap out-of-bound read in the rtreenode() function when hand
SQLite 1.0.12 through 3.39.x before 3.39.2 sometimes allows an array-bounds overflow if billions of bytes are used in a
The getNodeSize function in ext/rtree/rtree.c in SQLite through 3.19.3, as used in GDAL and other products, mishandles u
Memory corruption in SQLite versions before 3.50.2 allows network-based attackers with low privileges to manipulate aggr
An exploitable use after free vulnerability exists in the window function functionality of Sqlite3 3.26.0. Rated high se
Arbitrary DLL loading in SQLite's sqldiff.exe utility on Windows allows attackers to achieve code execution by abusing t
Memory corruption in SQLite versions before 3.53.2 enables attackers to crash processes, exhaust memory, or potentially
SQLite 3.32.2 has a use-after-free in resetAccumulator in select.c because the parse tree rewrite for window functions i
SQLite through 3.31.1 allows attackers to cause a denial of service (segmentation fault) via a malformed window-function
A segmentation fault can occur in the sqlite3.exe command-line component of SQLite 3.36.0 via the idxGetTableInfo functi
OAuth and SCIM identity confusion in Open WebUI 0.6.41-0.10.x (SQLite-backed deployments only) allows unauthenticated re
EUVD-2026-113784
GHSA-mw7g-h5m4-mrxh
NVD
CVE.org
EPSS
Exploit-DB