← Back to CVE Explorer

CVE-2026-123859

Full vulnerability record from the local CVENow database.

Description

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.

Severity
HIGH
CVSS score
8.1 (v3.1)
Vulnerability status
Received
Source identifier
412d305a-227d-44f9-a262-a31ba44f2aea
Published
2026-11-06 17:17:25.323000
Last modified
2026-11-06 17:17:25.323000
View original CVE JSON
{
  "id": "CVE-2026-123859",
  "sourceIdentifier": "412d305a-227d-44f9-a262-a31ba44f2aea",
  "published": "2026-11-06T17:17:25.323",
  "lastModified": "2026-11-06T17:17:25.323",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    }
  ],
  "affected": [
    {
      "source": "412d305a-227d-44f9-a262-a31ba44f2aea",
      "affectedData": [
        {
          "vendor": "Snowflake",
          "product": "Snowflake Connector for Python",
          "defaultStatus": "unaffected",
          "collectionURL": "https://pypi.org",
          "packageName": "snowflake-connector-python",
          "repo": "https://github.com/snowflakedb/snowflake-connector-python",
          "versions": [
            {
              "version": "2.3.4",
              "lessThan": "4.8.1",
              "versionType": "python",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Snowflake",
          "product": "Snowflake Connector for Python (Universal Core)",
          "defaultStatus": "unaffected",
          "collectionURL": "https://pypi.org",
          "packageName": "snowflake-connector-python",
          "repo": "https://github.com/snowflakedb/drivers",
          "versions": [
            {
              "version": "5.0.0b1",
              "lessThan": "5.2.0",
              "versionType": "python",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "412d305a-227d-44f9-a262-a31ba44f2aea",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 8.1,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.2,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-11-06T16:43:26.090519Z",
          "id": "CVE-2026-123859",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "412d305a-227d-44f9-a262-a31ba44f2aea",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-89"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-481-oct-26-2026",
      "source": "412d305a-227d-44f9-a262-a31ba44f2aea"
    },
    {
      "url": "https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-520-nov-4-2026",
      "source": "412d305a-227d-44f9-a262-a31ba44f2aea"
    }
  ]
}