Skip to main content

Snowflake Python Connector EUVDEUVD-2026-118319

| CVE-2026-123859 HIGH
SQL Injection (CWE-89)
2026-11-06 SNOWFLAKE GHSA-wfjf-896m-7r59
8.1
CVSS 3.1 · Vendor: SNOWFLAKE
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted DataFrame column name via app input
  2. Delivery
    Reach write_pandas() with identifier escaping disabled
  3. Exploit
    Column name chains additional SQL statement
  4. Execution
    Statement executes under application's Snowflake role
  5. Impact
    Read, modify, or delete accessible data

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

Two conditions must both hold: (1) the Snowflake Connector for Python or Universal Core must be running with identifier escaping disabled, which the vendor states is a non-default configuration; and (2) the calling application must pass attacker-controlled DataFrame column names into the write_pandas() data-loading function. Exploitation is therefore limited to deployments that have explicitly turned off identifier escaping AND whose application code routes untrusted input into column names of DataFrames passed to write_pandas(); default-configuration installations that escape identifiers are not exploitable. Impact is bounded by the privileges of the application's Snowflake role. The only complete fix per the vendor is upgrading to Connector for Python 4.8.1 or Universal Core 5.2.0, and users must upgrade manually.

Impact

This is a genuine high-severity injection flaw (CVSS 8.1, CWE-89) but one whose real-world exploitability is sharply constrained by preconditions, so it should be treated as important-to-patch rather than a drop-everything emergency. The vuln.today decision label is 'this_week', consistent with a serious-but-conditional issue. No EPSS score, no CISA KEV listing, and no proof-of-concept or exploit reference were supplied - the only references are Snowflake's own release notes - so there is no public exploit identified at time of analysis and no evidence of active exploitation. The CVSS vector (AV:N/AC:H/PR:N/UI:N) reports no privileges required, but AC:H reflects the two stacked conditions the description makes explicit: the connector must be run with identifier escaping disabled via a non-default configuration, AND the calling application must pass attacker-controlled DataFrame column names into write_pandas(). The full C:H/I:H/A:H impact is credible because successful injection runs arbitrary SQL under the application's Snowflake role, which can read, modify, or delete any data that role can reach. Net: the signals are internally consistent - a high potential impact gated behind a non-default configuration and an application data-flow precondition - so prioritize it where those conditions can occur, but it is not a wormable, default-configuration remote exploit.

Exploit ScenarioDerived

An application using the Snowflake Connector for Python, configured with identifier escaping disabled, builds a pandas DataFrame from a source whose column names come from untrusted input (e.g. an uploaded CSV header or a user-defined schema) and loads it via write_pandas(). An attacker sets a column name containing SQL syntax that chains an additional statement onto the generated INSERT/load SQL, which then executes under the application's Snowflake role to exfiltrate or delete data. No public exploit code is identified, and the high attack complexity reflects the non-default configuration plus the requirement that the application funnel attacker-controlled column names into this path.

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 – Nov 06, 2026

SQL injection in the Snowflake Connector for Python and Snowflake Connector for Python (Universal Core) can let unauthenticated remote attackers chain additional SQL through crafted DataFrame column names passed to write_pandas(), potentially reading, modifying, or deleting data available to the application's Snowflake role. Exploitation requires a non-default configuration in which identifier escaping is disabled and an application that routes attacker-controlled column names into write_pandas(); default installations with identifier escaping enabled are not exploitable. No public exploit has been identified at time of analysis, and the vendor has released fixes in Connector for Python 4.8.1 and Universal Core 5.2.0, which users must apply manually.

RemediationAI

Upgrade manually to Snowflake Connector for Python 4.8.1 or Snowflake Connector for Python (Universal Core) 5.2.0; the vendor states this is the only complete fix, and users must upgrade manually rather than relying on an automatic update. Consult the vendor release notes at https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-481-oct-26-2026 and https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-520-nov-4-2026. Deployments that keep identifier escaping enabled, the default, do not meet the vulnerable configuration described, and applications that do not pass attacker-controlled DataFrame column names into write_pandas() do not meet the second precondition; both conditions must hold for exploitation. Because the fix requires a manual upgrade, inventory both connector packages and prioritize the upgrade for applications that have disabled identifier escaping or that route untrusted input into DataFrame column names.

Affected VersionsENISA

Snowflake Connector for Python (Universal Core) 5.0.0b1 <5.2.0
Snowflake Connector for Python 2.3.4 <4.8.1

Affected Packages

euvd snowflake_connector_for_python fix: 4.8.1
euvd snowflake_connector_for_python_universal_core fix: 5.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The issue is CWE-89 SQL injection in the write_pandas() data-loading path of the Snowflake Connector for Python and the Universal Core variant. When identifier escaping is disabled, a non-default configuration, DataFrame column names are incorporated into generated SQL without escaping; a crafted column name can therefore append or chain additional SQL statements. The CPE data identifies both snowflake:snowflake_connector_for_python and snowflake:snowflake_connector_for_python_(universal_core) with wildcard versions, and the vendor release notes identify the fixed releases as 4.8.1 and 5.2.0. The assessed vector is CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (8.1), with no privileges required and high attack complexity consistent with the two preconditions: the connector must be running with identifier escaping disabled, and the calling application must pass attacker-controlled DataFrame column names into write_pandas(). Impact is bounded by the privileges of the application's Snowflake role. The trigger is described in the supplied sources; no additional mechanism should be inferred.

Know when Snowflake Connector For 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 (SNOWFLAKE) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

Non-default escaping-disabled config plus the app-must-pass-attacker-controlled-column-names precondition justify AC:H; no Snowflake privileges needed gives PR:N; arbitrary SQL under the app role yields C:H/I:H/A:H.

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

Primary rating from Vendor (SNOWFLAKE).

CVSS VectorVendor: SNOWFLAKE

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Nov 06, 2026 - 17:18 EUVD
CVE Published
Nov 06, 2026 - 16:11 cve.org
HIGH 8.1

DescriptionCVE.org

When identifier escaping is disabled through a non-default configuration, the write_pandas() data-loading functionality in the Snowflake Connector for Python and the Snowflake Connector for Python (Universal Core) did not escape DataFrame column names before including them in generated SQL, which could allow SQL injection. In both products, a crafted column name could have been used to chain additional SQL statements onto the generated statement, potentially allowing an attacker to read, modify, or delete other data accessible to the application's Snowflake role. Exploitation required an application to pass attacker controlled column names into this functionality. The fix is available in Snowflake Connector for Python version 4.8.1 and Snowflake Connector for Python (Universal Core) version 5.2.0. Users must upgrade manually.

Executive ViewAI

Why It Matters

Snowflake's Python connectors contain a high-severity SQL injection flaw that could let attackers read, modify, or delete data accessible to the application's Snowflake role, but only under a non-default configuration with identifier escaping disabled. Organizations using write_pandas() with attacker-controlled column names are at risk; default installations are not exploitable. Leadership should prioritize inventorying affected deployments and applying the vendor's fixed versions to prevent potential data compromise.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Medium
widely-used Snowflake client library, but limited to Snowflake ecosystem deployments
Data Quality
4 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.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
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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