Skip to main content

SQLite FTS5 CVE-2026-119373

| EUVDEUVD-2026-113784 HIGH
Out-of-bounds Write (CWE-787)
2026-10-30 VulnCheck GHSA-mw7g-h5m4-mrxh
8.5
CVSS 4.0 · Vendor: VulnCheck
Temporal: 7.8
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain SQL execution access to the application's SQLite
  2. Delivery
    Create or use detail=none FTS5 table
  3. Exploit
    Insert row with large negative rowid
  4. Execution
    Run prefix MATCH query
  5. Impact
    Overflow 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

SQLite 0 <3.54.0

Affected Packages

euvd sqlite fix: 3.54.0

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

Vendor (VulnCheck) PRIMARY 8.5 HIGH
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
CIRCL (temporal) 7.8 HIGH
vuln.today AI 6.8 MEDIUM

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.

3.1 AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Ubiquitous
SQLite is embedded almost everywhere; only FTS5 detail=none builds are affected
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Sqlite

View all
CVE-2015-5895 CRITICAL POC
10.0 Sep 18

Multiple unspecified vulnerabilities in SQLite before 3.8.10.2, as used in Apple iOS before 9, have unknown impact and a

CVE-2019-8457 CRITICAL
9.8 May 30

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

CVE-2022-35737 HIGH POC
7.5 Aug 03

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

CVE-2017-10989 CRITICAL
9.8 Jul 07

The getNodeSize function in ext/rtree/rtree.c in SQLite through 3.19.3, as used in GDAL and other products, mishandles u

CVE-2025-6965 HIGH POC
7.2 Jul 15

Memory corruption in SQLite versions before 3.50.2 allows network-based attackers with low privileges to manipulate aggr

CVE-2019-5018 HIGH POC
8.1 May 10

An exploitable use after free vulnerability exists in the window function functionality of Sqlite3 3.26.0. Rated high se

CVE-2025-71316 CRITICAL POC
9.2 Jun 04

Arbitrary DLL loading in SQLite's sqldiff.exe utility on Windows allows attackers to achieve code execution by abusing t

CVE-2026-11822 MEDIUM POC
6.8 Jun 09

Memory corruption in SQLite versions before 3.53.2 enables attackers to crash processes, exhaust memory, or potentially

CVE-2020-13871 HIGH POC
7.5 Jun 06

SQLite 3.32.2 has a use-after-free in resetAccumulator in select.c because the parse tree rewrite for window functions i

CVE-2020-11655 HIGH POC
7.5 Apr 09

SQLite through 3.31.1 allows attackers to cause a denial of service (segmentation fault) via a malformed window-function

CVE-2021-36690 HIGH POC
7.5 Aug 24

A segmentation fault can occur in the sqlite3.exe command-line component of SQLite 3.36.0 via the idxGetTableInfo functi

CVE-2026-87016 HIGH POC
8.1 Sep 09

OAuth and SCIM identity confusion in Open WebUI 0.6.41-0.10.x (SQLite-backed deployments only) allows unauthenticated re

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy