CVE-2025-8709
Python vulnerability analysis and mitigation

Overview

CVE-2025-8709 is a SQL injection vulnerability in LangGraph's SQLite store implementation within the langchain-ai/langgraph repository. It affects langgraph-checkpoint-sqlite version 2.0.10 and earlier, and was disclosed on October 26, 2025, with a patched version (2.0.11) released the same day. The vulnerability carries a CVSS v3.0 base score of 7.3 (High), assigned by huntr.dev (Github Advisory, Red Hat).

Technical details

The root cause is CWE-89 (Improper Neutralization of Special Elements used in an SQL Command), arising from direct string concatenation when processing filter operators ($eq, $ne, $gt, $lt, $gte, $lte) in the SQLite store's query construction logic — without using parameterized queries or prepared statements. An attacker with low-privilege local access can craft malicious filter values that are injected directly into SQL statements, bypassing application-level security filters. The fix is tracked in the LangGraph repository via commit bc9d45b and pull request #5666 (Github Advisory, huntr.com).

Impact

Successful exploitation allows an attacker to inject arbitrary SQL commands into the SQLite database, resulting in unauthorized access to all stored documents, exfiltration of sensitive fields such as passwords and API keys, and a complete bypass of application-level security filters. The confidentiality impact is rated High and the integrity impact Low, with no availability impact. The scope is marked as Changed, meaning the vulnerability can affect resources beyond the directly vulnerable component (Github Advisory, Red Hat).

Exploitability

As of the disclosure date, there is no public proof-of-concept exploit and no evidence of in-the-wild exploitation. The EPSS score is approximately 0.018% (5th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires low-privilege local access, which limits the attack surface compared to remotely exploitable vulnerabilities (Github Advisory, huntr.com).

Exploitation steps

  1. Identify target: Locate an application using langgraph-checkpoint-sqlite version 2.0.10 or earlier with local or application-level access to the SQLite store's filter interface.
  2. Craft malicious filter input: Construct a filter value using one of the vulnerable operators (e.g., $eq, $ne, $gt) that embeds SQL metacharacters or subqueries — for example, a value like ' OR '1'='1 or a UNION-based payload.
  3. Submit the payload: Pass the crafted filter through the application's LangGraph store query interface, which directly concatenates the operator value into the SQL query without sanitization.
  4. Exploit SQL injection: The injected SQL executes within the SQLite context, allowing the attacker to enumerate all stored documents, extract sensitive fields (passwords, API keys), or manipulate query logic to bypass access controls.
  5. Exfiltrate data: Use UNION SELECT or similar techniques to retrieve data from other tables or columns not intended to be accessible (Github Advisory, huntr.com).

Indicators of compromise

  • Logs: Application logs showing unusual or malformed filter query strings containing SQL metacharacters (e.g., single quotes, OR, UNION, SELECT) passed to LangGraph store operations.
  • Database: SQLite query logs (if enabled) reflecting unexpected UNION, OR, or subquery constructs in filter-related SQL statements.
  • File System: Unexpected data exports or files containing sensitive fields (API keys, passwords) in directories accessible to the application process.
  • Process Behavior: Anomalous read activity on the SQLite database file from processes not normally associated with database access.

Mitigation and workarounds

Upgrade langgraph-checkpoint-sqlite to version 2.0.11 or later, which replaces direct string concatenation with proper SQL parameterization. The fix is available via PyPI and is referenced in the LangGraph GitHub release for checkpointsqlite==2.0.11. Until patching is possible, restrict local access to the application and avoid exposing the LangGraph store filter interface to untrusted inputs (Github Advisory, Red Hat).

Community reactions

The vulnerability was reported through the huntr.dev bug bounty platform and received standard coverage from vulnerability aggregators including VulnDB, CIRCL, and ENISA's EUVD. Red Hat opened a tracking bug (Bugzilla #2406382) and classified it as high severity. No notable researcher commentary or significant social media discussion beyond automated CVE feeds has been observed (Red Hat Bugzilla, ENISA EUVD).

Additional resources


SourceThis report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-50027CRITICAL9.8
  • Python logoPython
  • mcp-memory-service
NoYesAug 14, 2026
CVE-2026-49986HIGH7.1
  • Python logoPython
  • neuro-cortex-memory
NoYesAug 14, 2026
CVE-2026-53708MEDIUM6.6
  • Python logoPython
  • mcp-contextforge-gateway
NoYesAug 14, 2026
CVE-2026-47192LOW2.1
  • Python logoPython
  • kas
NoYesAug 14, 2026
CVE-2026-47191LOW2.1
  • Python logoPython
  • kas
NoYesAug 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management