Skip to main content

SQLBot EUVDEUVD-2026-82561

| CVE-2026-53554 HIGH
Path Traversal (CWE-22)
2026-09-17 security-advisories@github.com
7.3
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to SQLBot datasource API
  2. Delivery
    Submit crafted multipart parseExcel upload
  3. Exploit
    Path/double-extension write into alembic/versions
  4. Execution
    Malicious .py persists despite parse error
  5. Persist
    Startup or migration imports module
  6. Impact
    Module-level code executes in runtime

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the ability to submit a multipart upload to the POST /api/v1/datasource/parseExcel endpoint (a datasource-management feature, so an authenticated account with datasource access per the vendor's PR:H), and a crafted filename that combines path components with a double extension so the write lands in /opt/sqlbot/app/alembic/versions/ as a Python source file. Critically, code execution is DEFERRED: it only occurs when SQLBot is subsequently restarted or an Alembic migration is processed, so successful exploitation depends on that operational event happening (reflected as UI:P/AC:H/AT:P). The endpoint returns an error after the write due to spreadsheet parse failure, but the planted file remains - so a failed API response does NOT mean failed exploitation. Limiting factors: authenticated/privileged access, the double-extension and path manipulation must survive processing, and a startup/migration trigger is needed. Fixed in 1.9.0, which strips path components from the filename.

Impact

This is a genuine remote-code-execution vulnerability dressed as a path-traversal (CWE-22) issue: the primitive is arbitrary file write into /opt/sqlbot/app/alembic/versions/, but the payoff is module-level Python execution when Alembic imports the planted file at the next SQLBot startup or migration. The vendor CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:H/UI:P, VC:H/VI:H/VA:H = 7.3) already tempers the raw impact with high complexity, a present attack requirement, high privileges, and passive user interaction - and those brakes are real. Exploitation is not fire-and-forget: it depends on the double-extension trick surviving parse, the write landing in the versions directory, and then a deferred trigger (restart or migration run by an operator) to actually execute. No EPSS score, no CISA KEV listing, and no public POC are present in the supplied data, so there is no public exploit identified at time of analysis and no evidence of active exploitation. Net: a high-impact, RCE-capable flaw whose real-world urgency is moderated by authentication, complexity, and the need for a deferred execution event - a patch-promptly issue rather than a drop-everything emergency, especially given the product's limited deployment footprint.

Exploit ScenarioDerived

An authenticated user with access to the datasource feature submits a crafted multipart upload to POST /api/v1/datasource/parseExcel whose filename abuses path components and a double extension, causing the backend to write attacker-controlled content into /opt/sqlbot/app/alembic/versions/ as a .py file - even though spreadsheet parsing then fails and the endpoint returns an error. The planted module persists on disk; at the next SQLBot startup or Alembic migration run, the module is imported and its top-level statements execute in the application runtime, yielding code execution. No public proof-of-concept is identified in the available data.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 17, 2026

Authenticated remote code execution in SQLBot (dataease/SQLBot) versions prior to 1.9.0 lets an attacker with datasource-management privileges plant an arbitrary Python module inside the application's Alembic migration directory by abusing attacker-controlled multipart filenames on the POST /api/v1/datasource/parseExcel endpoint, a technique that masquerades as a CWE-22 path-traversal issue but yields module-level code execution on the next SQLBot startup or migration run. Exploitation is not immediate: the upload is written to disk before spreadsheet parsing and validation complete, so the endpoint can return a parse error while the planted file survives, and code execution is deferred until Alembic imports the module (independent assessment scores CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H). Vendor-released patch: 1.9.0; no public exploit identified at time of analysis, though the upstream advisory and fix commits are public.

RemediationAI

Upgrade SQLBot to version 1.9.0 or later, which is the vendor-released patch for this issue (see https://github.com/dataease/SQLBot/releases/tag/v1.9.0 and advisory GHSA-wxv4-pw5w-wx79); the fix commits 4bfd0f49e8cd3df8540dd9d51d40d0e056eeeec4 and 92c5aea70b2eba9c1f429017639017041556843b sanitize the uploaded filename by stripping path components. If immediate upgrade is not possible, compensating controls must target the write primitive rather than a stable exploit: mount /opt/sqlbot/app/alembic/versions/ read-only or remove write permission for the SQLBot runtime user, with the trade-off that Alembic autogenerate/migration-file creation performed inside the container will fail (normal startup migrations that read existing revisions still work), and restrict access to POST /api/v1/datasource/parseExcel to the smallest set of trusted accounts, since the endpoint is a privileged datasource-management feature. Additionally, have the reverse proxy or gateway reject multipart filenames containing path separators, '..', or double extensions, and alert on unexpected .py files appearing under alembic/versions or on SQLBot startup importing unfamiliar revision modules; note that a failed parseExcel response with a spreadsheet parse error does not indicate the write failed, so log retention around that endpoint should be extended. Because execution is deferred until the next restart or migration, blocking restarts is not a viable mitigation and may cause the planted file to execute later under a less observable condition.

Affected VersionsENISA

SQLBot < 1.9.0

Affected Packages

euvd sqlbot fix: 1.9.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

SQLBot is an LLM/RAG-based Text-to-SQL system whose backend is a Python/FastAPI application, with Alembic managing database schema revisions from the directory /opt/sqlbot/app/alembic/versions/. The vulnerable handler is parse_excel in backend/apps/datasource/api/datasource.py, which handled an uploaded multipart file by deriving the on-disk name directly from file.filename using split('.') on the first and last components and appending a truncated SHA-256/UUID token. Because no path-component stripping occurred, the attacker-controlled filename could carry traversal segments (CWE-22), and because the content was persisted before the spreadsheet was parsed and validated, a malformed payload produced an error response after the write had already landed. By chaining a traversal path with a double extension, the attacker could force a file ending in .py into the Alembic versions directory; Alembic imports every module in that directory at startup or during migration processing, so module-level statements in the planted file execute in the SQLBot application runtime. The upstream fix in commit 4bfd0f49e8cd3df8540dd9d51d40d0e056eeeec4 (with related commit 92c5aea70b2eba9c1f429017639017041556843b) sanitizes the filename by applying .split('/')[-1] to the base component, discarding directory components before the name is used on disk.

Know when Python 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 (github) PRIMARY 7.3 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Network-reachable authenticated upload (PR:L; vendor chose PR:H) with high complexity/timing for the double-extension write plus deferred import trigger (AC:H); successful import yields full RCE in the app runtime (C/I/A:H).

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 23:04 EUVD
CVE Published
Sep 17, 2026 - 22:16 cve.org
HIGH 7.3

DescriptionCVE.org

SQLBot is an intelligent Text-to-SQL system based on large language models and RAG. Prior to 1.9.0, the POST /api/v1/datasource/parseExcel endpoint in backend/apps/datasource/api/datasource.py uses attacker-controlled multipart filename data when selecting where uploaded content is stored, writes the content before spreadsheet parsing and validation finish, and can transform a double-extension filename into a Python source file. An attacker able to submit a crafted multipart upload can use these behaviors to place attacker-controlled content in /opt/sqlbot/app/alembic/versions/ even when a spreadsheet parsing failure after the file write causes the endpoint to return an error. The planted file remains on disk, and subsequent SQLBot startup or migration processing causes Alembic to import the module and execute its module-level statements in the SQLBot application runtime. This issue is fixed in version 1.9.0.

Technical POC Analysis

Evidence note: the supplied advisory (GHSA-wxv4-pw5w-wx79) contains a full raw-HTTP PoC but no patch diff, no commit hash, and lists "No CWEs." The CVE record supplied alongside it maps the issue to…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

SQLBot versions prior to 1.9.0 carry a high-severity authenticated remote code execution vulnerability that could allow a privileged user to compromise the analytics platform. No public exploit identified at time of analysis, but the impact on confidentiality, integrity, and availability is high, risking sensitive data exposure, service disruption, and regulatory consequences. Leadership should prioritize upgrading to 1.9.0 and tightening access to datasource-management functions.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche open-source LLM Text-to-SQL/BI tool, limited production footprint
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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

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

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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