Skip to main content

SQLite R-Tree CVE-2026-119378

| EUVDEUVD-2026-113789 MEDIUM
Use After Free (CWE-416)
2026-10-30 VulnCheck GHSA-gf9q-68cx-3mq4
6.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft DB with %_node WITHOUT ROWID or RAISE(IGNORE) trigger
  2. Delivery
    Deliver database to target application using R-Tree
  3. Exploit
    INSERT causes node split, last_insert_rowid returns 0
  4. Execution
    nodeWrite() hashes freed node as 0
  5. Impact
    Use-after-free crashes process (denial of service)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
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

Exploitation requires the victim application to be built with the R-Tree extension (SQLITE_ENABLE_RTREE) and to open/process an attacker-supplied SQLite database whose %_node shadow table has been corrupted - specifically declared WITHOUT ROWID, or given a BEFORE INSERT trigger that calls RAISE(IGNORE) - so that sqlite3_last_insert_rowid() returns 0 after an INSERT. The crash only occurs once the application performs INSERTs large enough to cause an R-Tree node split, making nodeWrite() hash the node with iNode==0. Limiting factors: this is a local vector (AV:L) requiring delivery of a malicious database and application processing of it (UI:P); it does not apply to deployments that never load untrusted databases or that are compiled without R-Tree; and impact is confined to a process crash (denial of service), with no confidentiality or integrity effect.

Impact

This is a medium-severity, denial-of-service-only issue, not a high-priority emergency. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, score 6.8) tells a consistent story: exploitation is local and requires passive user interaction - the victim application must open and process an attacker-supplied SQLite database - and the only impact is availability (VA:H), with no confidentiality or integrity impact (VC:N/VI:N). Despite the CWE-416 use-after-free classification, the supplied evidence (description, commit message, and test case) shows the observed outcome is a process crash after R-Tree node splits, not code execution; the sources do not demonstrate the UAF being steered toward RCE. The vuln.today decision label is 'this_month' rather than act_now/emergency, consistent with a moderate-urgency fix. No CISA KEV listing is present, so there is no confirmation of active exploitation, and no EPSS score was supplied, so exploitation probability cannot be quantified from this data. A public PoC reference exists (the AbraxasLabs research write-up and the vendor's own regression test reproducing the crash), but it is not verified as working weaponized exploit code. Net: a real, patchable bug worth addressing on a normal cycle, bounded by the need for an attacker-controlled database, an application compiled with the R-Tree extension, and DoS-only impact - not a widespread drive-by threat.

Exploit ScenarioDerived

An attacker crafts a malicious SQLite database in which the %_node shadow table is redefined (as WITHOUT ROWID, or carrying a BEFORE INSERT RAISE(IGNORE) trigger) so that after a successful INSERT sqlite3_last_insert_rowid() returns 0. A victim application that uses the R-Tree extension opens this database and performs inserts that cause an R-Tree node split, at which point nodeWrite() hashes the node as 0 and the application reuses freed heap memory, crashing the process. A public PoC reference exists (the vendor regression test and the AbraxasLabs research write-up), though it is not verified as working exploit code.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 30, 2026

Denial of service in SQLite's R-Tree extension before 3.54.0 allows an attacker who supplies a crafted database to crash the application process by manipulating the %_node shadow table so sqlite3_last_insert_rowid() returns 0 and nodeWrite() hashes a node with iNode==0 after an R-Tree node split. This is a local, medium-severity, denial-of-service-only issue that requires the victim application to be built with SQLITE_ENABLE_RTREE and to process the malicious database; it has no confidentiality or integrity impact. No public exploit has been identified at time of analysis.

RemediationAI

Upgrade to SQLite 3.54.0 or later; the vendor-released patch is in commit https://github.com/sqlite/sqlite/commit/d21bd37c7cfc1b85b17a6703555f0926b6236e04 (upstream check-in https://sqlite.org/src/info/6a9e1415659f9e75) and the 3.54.0 release log at https://sqlite.org/releaselog/3_54_0.html. If upgrading is not immediately possible, do not open or process untrusted SQLite databases, and if R-Tree functionality is not required, build SQLite without SQLITE_ENABLE_RTREE; the trade-off is loss of R-Tree virtual-table support, and avoiding untrusted databases reduces but does not eliminate exposure for applications that still enable R-Tree. See https://www.vulncheck.com/advisories/sqlite-before-3.54.0-use-after-free-in-r-tree-nodewrite.

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

SQLite's R-Tree extension is a virtual-table implementation used for spatial indexing. The %_node shadow table stores R-Tree nodes, and during nodeWrite() SQLite inserts nodes into an in-memory hash table keyed by iNode; the hash logic assumes iNode0 means the node is not yet part of the hash table. If an attacker crafts a database where %_node is declared WITHOUT ROWID or has a BEFORE INSERT trigger calling RAISE(IGNORE), an INSERT can leave sqlite3_last_insert_rowid() returning 0, so nodeWrite() hashes the node as iNode 0. After later node splits, the code can operate on freed heap memory, producing a CWE-416 use-after-free and a process crash. The vendor fix in 3.54.0 checks for pNode->iNode0 and returns SQLITE_CORRUPT_VTAB instead of inserting the node into the hash. CPE data identifies sqlite:sqlite, and EUVD lists SQLite 0 <3.54.0 as affected.

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 6.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.5 MEDIUM

Attacker supplies a crafted database processed locally by the victim app (AV:L, UI:R), needs no privileges (PR:N), and impact is a DoS crash only, so C:N/I:N/A:H.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/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
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

SQLite before 3.54.0 contains a use-after-free vulnerability in the R-Tree extension that allows attackers to make applications use freed heap memory by manipulating the %_node shadow table. Attackers can supply a database declaring %_node WITHOUT ROWID or with a RAISE(IGNORE) trigger so nodeWrite() hashes nodes as 0, crashing the process after node splits.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Ubiquitous
SQLite is the most widely embedded database engine, in browsers, OSes, apps
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

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.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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