Skip to main content

SQLite CVE-2026-119591

| EUVDEUVD-2026-113835 MEDIUM
Uncontrolled Recursion (CWE-674)
2026-10-30 VulnCheck GHSA-24xm-6g3f-6mqq
6.8
CVSS 4.0 · Vendor: VulnCheck
Temporal: 5.5
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted SQL or malicious SQLite DB with crafted view
  2. Delivery
    Issue count(*) over large multi-row VALUES clause
  3. Exploit
    Count-of-view optimization builds deeply nested TK_PLUS expression tree
  4. Execution
    Recursive sqlite3ExprDeleteNN() exhausts C stack
  5. Impact
    Host process crashes (denial of service)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitation requires the attacker to control SQL submitted to SQLite, or to supply a SQLite database file containing a crafted view, such that a count(*) is evaluated over a large multi-row VALUES clause - the specific trigger that drives the count-of-view optimization into deeply nested TK_PLUS expressions and overflows the C stack during recursive expression freeing. Limiting factors per the CVSS 4.0 vector: the vector is Local (AV:L) with passive user interaction (UI:P), so the malicious SQL or database file must reach and be parsed by a SQLite instance - applications that only ever run trusted, fixed queries over trusted databases are not reachable. Impact is denial of service only (VA:H, with VC:N/VI:N): a crash of the host process, with no confidentiality or integrity effect and no code execution.

Impact

This is a medium-severity denial-of-service issue, and the signals are consistent rather than conflicting. The vendor CVSS 4.0 base score is 6.8 with vector AV:L/AC:L/AT:N/PR:N/UI:P and impact confined to availability (VA:H; VC:N/VI:N) - i.e. a crash, not code execution or data compromise, matching CWE-674 (uncontrolled recursion). The attack vector is Local with passive user interaction, so this is not a remotely-reachable network bug by default; it requires the attacker's SQL or database file to actually reach a SQLite instance that will parse it. There is no CISA KEV listing and no EPSS score in the supplied data, so there is no evidence of active or widespread exploitation. The vuln.today decision label is 'this_month', indicating a routine-but-non-ignorable patch priority rather than an emergency. Net assessment: real but bounded risk - genuinely exploitable and reliable where an application feeds untrusted SQL or opens untrusted SQLite database files, but low urgency where SQLite only ever processes trusted, application-controlled queries. The headline worry is SQLite's enormous deployment footprint, not the per-instance severity.

Exploit ScenarioDerived

An application lets an attacker influence SQL (e.g. an analytics/query feature) or open an attacker-supplied SQLite database file containing a crafted view. The attacker issues a count(*) over a very large multi-row VALUES clause, which the count-of-view optimization turns into a deeply nested chain of TK_PLUS expressions; recursive teardown in sqlite3ExprDeleteNN() exhausts the C stack and crashes the host process. A public research write-up (abraxaslabs.tech) and a VulnCheck advisory describe the issue, but the input does not confirm packaged working exploit code.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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

Denial of service in SQLite before 3.54.0 allows an attacker who can submit SQL or supply a crafted database file to crash the host process by forcing count(*) to be evaluated over a large multi-row VALUES clause. The count-of-view optimization then builds a deeply nested TK_PLUS expression whose recursive destruction in sqlite3ExprDeleteNN() exhausts the C stack. The issue is local under the CVSS 4.0 vector (AV:L, UI:P) and affects availability only; it is not listed in CISA KEV and no public exploit code is identified in the available data at time of analysis.

RemediationAI

Upgrade to SQLite 3.54.0 or later; the fix is in the 3.54.0 release and in upstream commit https://github.com/sqlite/sqlite/commit/eff50a067c55f972909e7780e506e91382d08de2 (src info https://sqlite.org/src/info/ab621a3e11ee4acc), with release notes at https://sqlite.org/releaselog/3_54_0.html. For embedded deployments, update the bundled SQLite library and rebuild the application; confirming the bundled version is at least 3.54.0 is necessary because updating only the host application does not update SQLite. If immediate upgrade is not possible, reduce exposure by refusing untrusted SQL and not opening untrusted SQLite database files, since those are the two described attack vectors; this is a containment measure that leaves the recursion bug present and may break functionality for applications that legitimately accept user-supplied queries or database files. No other vendor workaround is specified in the available references.

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 query planner contains a count-of-view optimization in src/select.c, countOfViewOptimization(), that handles count(*) queries over views. With a view built from a large multi-row VALUES clause, the optimization can generate an expression tree containing deeply nested TK_PLUS nodes. When the statement is torn down, sqlite3ExprDeleteNN() frees that tree recursively; at sufficient nesting depth the C stack is exhausted and the host process crashes. This maps to CWE-674, uncontrolled recursion, in the recursive expression-freeing path. The upstream fix, commit eff50a067c55f972909e7780e506e91382d08de2 (src info ab621a3e11ee4acc), adds an error check in countOfViewOptimization() so the generated expression is deleted and cleared if parsing has already failed; the manifest entry describes preventing the count-of-view expression from getting too deep and causing a CPU stack overflow. The affected CPE is cpe:2.3:a:sqlite:sqlite:*:*:*:*:*:*:*:* for versions before 3.54.0.

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
CIRCL (temporal) 5.5 MEDIUM
vuln.today AI 5.5 MEDIUM

Attacker-supplied SQL or DB file must be processed locally by the app (AV:L, UI:R); no auth needed to craft the input (PR:N); 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 stack exhaustion vulnerability in countOfViewOptimization() that allows attackers to crash the host process via count(*) over a large multi-row VALUES clause. Attackers supplying SQL or a database file with a crafted view can trigger deeply nested TK_PLUS expressions whose recursive freeing in sqlite3ExprDeleteNN() exhausts the C stack, causing denial of service.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Ubiquitous
SQLite is embedded in nearly all OSes, browsers, mobile apps and devices
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

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

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