Skip to main content

llmware CVE-2026-85689

| EUVDEUVD-2026-71138 HIGH
SQL Injection (CWE-89)
2026-09-04 VulnCheck GHSA-xw8g-m37q-fhx8
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege API caller
  2. Delivery
    Submit crafted filter value with UNION payload to text_query_with_custom_filter
  3. Exploit
    Filter key passes allow-list; injected value enters raw SQL WHERE clause
  4. Execution
    PostgreSQL executes UNION query
  5. Persist
    Retrieve rows outside authorized collection scope
  6. Impact
    Exfiltrate arbitrary database contents

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

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 valid API caller identity with at least low-level access to the llmware query API (PR:L per the CVSS 4.0 vector). The specific exploitable entry points are Library.block_lookup and Query.text_query_with_custom_filter / text_query_by_author_or_speaker in resources.py. UNION-based full data extraction requires a PostgreSQL backend; the SQLite backend limits impact to cross-document or cross-collection row disclosure by neutralizing scope filters. No special non-default configuration is required - any llmware deployment using these API methods and either backend is affected. The exploitation is limited in practice to deployments where the API is reachable by callers who should only have partial access to the data store; fully-trusted single-user deployments have no meaningful exposure.

Impact

The provided CVSS 4.0 score of 7.1 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N) is well-calibrated: the attack is network-reachable, low complexity, and requires only API-level credentials, while impact is purely confidentiality-oriented (no integrity or availability effect). No public exploit code has been identified and the CVE is absent from CISA KEV, indicating no confirmed active exploitation at time of analysis. However, UNION-based SQL injection exploits of this class are straightforward to construct for any researcher with API access, and the GitHub issue disclosure (https://github.com/llmware-ai/llmware/issues/1304) is public, lowering the development barrier. Real-world risk is highly deployment-dependent: single-user or fully-trusted internal deployments face minimal practical exposure, whereas multi-tenant or SaaS deployments that scope different callers to different document collections are directly threatened by cross-collection data exfiltration. PostgreSQL deployments are materially higher risk than SQLite due to UNION extraction capability.

Exploit ScenarioDerived

An authenticated API caller with low-privilege access crafts a filter value containing a UNION SELECT payload and submits it to Query.text_query_with_custom_filter against a PostgreSQL-backed llmware instance. The filter key passes the allow-list check while the injected value causes the PostgreSQL backend to execute a UNION query, returning rows from tables outside the caller's authorized document collection - including potentially all rows accessible to the database account. No public exploit code is required; the injection point and SQL context are fully described in the public VulnCheck advisory and GitHub issue.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 04, 2026

SQL injection in llmware 0.4.6's collection-database abstraction layer allows an authenticated API caller to disclose rows from collections they are scoped out of, with full UNION-based data extraction possible on PostgreSQL backends. The flaw resides in resources.py, where attacker-controlled filter values are string-interpolated directly into SQL WHERE clauses without parameterization; the filter validator checks only key names against an allow-list but never sanitizes values. Affected public API entry points are Library.block_lookup and Query.text_query_with_custom_filter / text_query_by_author_or_speaker. No public exploit code has been identified and this CVE is not listed in CISA KEV at time of analysis.

RemediationAI

No vendor-released patch has been identified at time of analysis; the issue was disclosed via GitHub (https://github.com/llmware-ai/llmware/issues/1304) without a corresponding tagged fix release. Monitor the llmware repository (https://github.com/llmware-ai/llmware) for a release that parameterizes the SQL WHERE clause construction in resources.py and upgrade immediately once one is available. As compensating controls, restrict access to Library.block_lookup and the Query.text_query_with_custom_filter / text_query_by_author_or_speaker methods exclusively to fully trusted, internal callers - do not expose these endpoints to partially-trusted or user-facing input. For PostgreSQL deployments, apply database-level least-privilege restrictions so the llmware database account can access only the specific tables it legitimately requires, limiting the blast radius of any UNION-based extraction. Consider adding an application-layer value sanitization or rejection layer for all filter dict values as an interim measure, though parameterization at the SQL layer is the only robust fix.

Affected VersionsENISA

llmware 0 ≤0.4.6

Affected Packages

euvd llmware no fix

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

llmware is a Python framework for building LLM-powered retrieval-augmented generation (RAG) and document-AI applications; its collection-database layer in resources.py supports both SQLite and PostgreSQL backends. CWE-89 (SQL Injection) is triggered because filter and lookup values supplied by callers are concatenated directly into SQL WHERE clause strings - for example via f-string or string format interpolation - rather than being passed as parameterized query placeholders (e.g., cursor.execute with a parameters tuple). The allow-list validation guards only the key names of the filter dict, not the corresponding values, so any attacker-supplied value reaching those methods bypasses validation entirely. On SQLite the impact is limited to neutralizing scope filters to expose cross-collection rows; on PostgreSQL the richer SQL dialect permits boolean-blind and UNION-based injection capable of dumping arbitrary tables. The CPE cpe:2.3:a:llmware-ai:llmware:*:*:*:*:*:*:*:* with a wildcard version field suggests the design flaw is not version-local and may predate 0.4.6.

Know when Llmware 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 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Network-accessible API requiring API-level authentication (PR:L); purely confidentiality impact via SQL extraction with no integrity or availability effect described.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

llmware 0.4.6 contains an SQL injection vulnerability in the collection-database layer (llmware/resources.py) where filter and lookup values are directly string-interpolated into SQL WHERE clauses without parameterization or escaping, in both the SQLite and PostgreSQL backends. The filter validator only checks keys against an allow-list and never sanitizes values. Attacker-controlled filter values reaching the public API via Library.block_lookup and Query.text_query_with_custom_filter / text_query_by_author_or_speaker can neutralize the intended filter to disclose rows the caller was scoped out of (cross-document/cross-collection disclosure); on PostgreSQL the flaw permits boolean- and UNION-based SQL injection.

Executive ViewAI

Why It Matters

llmware 0.4.6 contains a SQL injection vulnerability in its collection-database abstraction layer that allows authenticated API users to extract database rows from collections outside their authorized scope. Organizations using llmware with PostgreSQL backends and role-based collection access controls face potential unauthorized data disclosure from compromised API credentials or malicious insiders with legitimate database access.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) deploy Web Application Firewall rules to block SQL metacharacters and keywords in filter parameter values; (2) add application-layer validation to reject filter inputs matching regex patterns for UNION clauses and SQL comments; (3) enforce principle of least privilege-restrict API consumer credentials to minimum collection scopes and disable Library.block_lookup and text_query_with_custom_filter where not essential; (4) implement real-time database query auditing to alert on SELECT statements with unusual WHERE clause patterns; (5) restrict PostgreSQL network access to application servers only via firewall rules.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
specialized AI/LLM Python framework, niche enterprise footprint
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.3%
Patch available No
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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

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

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

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