Skip to main content

SQLite EUVDEUVD-2026-113788

| CVE-2026-119377 LOW
Incorrect Authorization (CWE-863)
2026-10-30 VulnCheck GHSA-qqg5-vxjp-68gf
2.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Gain ability to submit SQL to the authorizer-protected app
  2. Exploit
    Craft RIGHT/FULL JOIN on a shared USING column of a restricted table
  3. Execution
    Authorizer check skipped for non-first USING terms in lookupName()
  4. Impact
    Read column values denied by SQLITE_READ restriction

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: 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 a specific non-default stack: (1) the host application must call sqlite3_set_authorizer() and use it to deny SQLITE_READ access to particular columns - SQLite performs no such read restriction by default; (2) the attacker must be able to submit or influence SQL executed against that connection; and (3) the attacker must construct a RIGHT or FULL OUTER JOIN whose USING clause names the restricted column, since the flaw lies in lookupName() invoking the authorizer only for the first joined table's USING column. Limiting factors: impact is confined to reading values of a shared USING column that the authorizer should have denied (confidentiality only, no write or DoS); the vulnerable JOIN syntax requires SQLite 3.39.0+ where RIGHT/FULL JOIN exists; and the attacker needs at least enough privilege to issue SQL (PR:L), so it is not an unauthenticated-by-default flaw. Fixed in SQLite 3.54.0; the vendor remediation is to update.

Impact

This is a low-priority issue across every available signal. The vendor CVSS 4.0 base score is 2.0 (Low), with AV:L (local), AT:P (a specific precondition must hold), PR:L (the attacker must already be able to submit SQL), and impact limited to VC:L (minor confidentiality) with no integrity or availability effect. The vuln.today decision label is 'monitor', the weakest urgency tier, and this is consistent with the low CVSS. No CISA KEV listing and no EPSS score were provided in the input, so there is no signal of active or probable exploitation; absence of these is not itself an error but means widespread-exploitation evidence is simply not present. A public technical writeup/PoC reference exists (abraxaslabs research and the VulnCheck advisory), and the vendor commit ships a reproducing test case, so the trigger is well understood - but a reference is not confirmation of active exploitation, and the two signals should not be conflated. The real-world risk is gated hard by preconditions: exploitation only matters for applications that both accept attacker-supplied SQL and use sqlite3_set_authorizer() with SQLITE_READ column restrictions, which is a non-default, relatively uncommon deployment. Net: a genuine authorization-bypass bug, but a low-severity, narrow-scope confidentiality issue rather than an emergency.

Exploit ScenarioDerived

An application embeds SQLite and uses sqlite3_set_authorizer() to deny reads of specific sensitive columns, while allowing a user to submit (or influence) SQL queries. The attacker issues a RIGHT or FULL JOIN that references the denied column as a shared USING column; because lookupName() invoked the authorizer only for the first joined table's USING term, the restricted column's values are returned instead of being blocked. A public technical writeup and vendor test case demonstrate the trigger, though the input does not confirm weaponized exploit code.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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

SQLite before 3.54.0 can disclose column values that an application explicitly denied through sqlite3_set_authorizer() SQLITE_READ restrictions when a RIGHT or FULL JOIN is used with a USING clause naming the restricted column. Only applications that register an authorizer callback and use it to block specific column reads are exposed, and the attacker must be able to submit SQL to that connection; the impact is limited to confidentiality of the shared USING column, with no write or denial-of-service effect. The vendor-released fix is SQLite 3.54.0, and this is a low-priority issue across every available signal; exploit code references exist in the public advisories and research writeup, but active exploitation is not indicated.

RemediationAI

Vendor-released patch: SQLite 3.54.0. Upgrade embedded SQLite to 3.54.0 or later, per https://sqlite.org/releaselog/3_54_0.html, since the vendor's remediation is to update; the specific upstream changes are check-ins https://sqlite.org/src/info/bbd69ce274620008 and https://sqlite.org/src/info/2cb22877683680c1 (GitHub commits 7ff247c5b9ead3ad8a69c26d3fd264878e127237 and 5694c3bb2a6a40770ecd2f65910eea756734dfd8), which make lookupName() invoke the authorizer for every USING-clause term of a RIGHT JOIN and add auth-9.x regression tests. Applications that cannot update immediately can avoid exposing column restrictions through shared USING columns, for example by rewriting affected queries to use explicit ON conditions and fully-qualified column references so each column read is authorized individually, at the cost of query rewrites; disabling RIGHT and FULL JOIN support at build time (SQLITE_OMIT_RIGHT_JOIN) removes the vulnerable code path but breaks any legitimate use of outer joins. Neither workaround substitutes for the 3.54.0 update, and the underlying exposure requires the host application to rely on sqlite3_set_authorizer() for column-level read control.

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 sqlite3_set_authorizer() interface lets a host application veto individual SQL actions, including SQLITE_READ on named columns, which is a common building block for application-level row/column sandboxing. During name resolution in resolve.c, lookupName() handles a USING clause by calling sqlite3AuthRead() for the joined column, but in vulnerable builds the RIGHT/FULL JOIN path invoked the authorizer only for the first table's USING expression and then took a branch that skipped the read check for the remaining matched expressions. The correction replaces that single-expression handling with a loop over every pFJMatch->nExpr entry, invoking sqlite3AuthRead() for each, and adds regression coverage in test/auth.test (auth-9.x) that asserts SQLITE_READ is raised for both t1.x and t2.x in a FULL JOIN USING(x). The root cause class is CWE-863, incorrect authorization, since the authorization callback is invoked incompletely rather than a memory-safety defect; the prerequisite RIGHT/FULL OUTER JOIN support exists only from SQLite 3.39.0 onward, and no authorizer-based read restriction is applied by default.

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

Attacker must already be able to submit SQL against an app that configures the authorizer (PR:L, AT/AC reflects the required config), it is a local library (AV:L), and impact is a limited confidentiality read only (C:L, I:N, A:N).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

SQLite before 3.54.0 contains an authorization bypass vulnerability in lookupName() that invokes the authorizer only for the first joined table's USING column. Attackers able to submit SQL can query a shared USING column in a RIGHT or FULL JOIN to read columns denied via sqlite3_set_authorizer() SQLITE_READ restrictions.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Ubiquitous
SQLite is among the most widely deployed database engines worldwide
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 LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
High

Priority Score

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

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