{"api_version":"1","generated_at":"2026-11-06T23:49:06+00:00","cve":"CVE-2026-123859","urls":{"html":"https://cve.report/CVE-2026-123859","api":"https://cve.report/api/cve/CVE-2026-123859.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-123859","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-123859"},"summary":{"title":"SQL Injection via unescaped DataFrame column names in Snowflake Connector for Python and Snowflake Connector for Python (Universal Core)","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.","state":"PUBLISHED","assigner":"SNOWFLAKE","published_at":"2026-11-06 17:17:25","updated_at":"2026-11-06 21:15:29"},"problem_types":["CWE-89","CWE-89 Improper Neutralization of Special Elements used in an SQL Command"],"metrics":[{"version":"3.1","source":"412d305a-227d-44f9-a262-a31ba44f2aea","type":"Secondary","score":"8.1","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"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"}},{"version":"3.1","source":"CNA","type":"CVSS","score":"8.1","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":8.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-520-nov-4-2026","name":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-520-nov-4-2026","refsource":"412d305a-227d-44f9-a262-a31ba44f2aea","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-481-oct-26-2026","name":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-481-oct-26-2026","refsource":"412d305a-227d-44f9-a262-a31ba44f2aea","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-123859","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123859","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Snowflake","product":"Snowflake Connector for Python","version":"affected 2.3.4 4.8.1 python","platforms":[]},{"source":"CNA","vendor":"Snowflake","product":"Snowflake Connector for Python (Universal Core)","version":"affected 5.0.0b1 5.2.0 python","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-123859","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","timestamp":"2026-11-06T16:43:26.090519Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-11-06T16:45:01.480Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"collectionURL":"https://pypi.org","defaultStatus":"unaffected","packageName":"snowflake-connector-python","product":"Snowflake Connector for Python","repo":"https://github.com/snowflakedb/snowflake-connector-python","vendor":"Snowflake","versions":[{"lessThan":"4.8.1","status":"affected","version":"2.3.4","versionType":"python"}]},{"collectionURL":"https://pypi.org","defaultStatus":"unaffected","packageName":"snowflake-connector-python","product":"Snowflake Connector for Python (Universal Core)","repo":"https://github.com/snowflakedb/drivers","vendor":"Snowflake","versions":[{"lessThan":"5.2.0","status":"affected","version":"5.0.0b1","versionType":"python"}]}],"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."}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":8.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-89","description":"Improper Neutralization of Special Elements used in an SQL Command","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-11-06T16:11:51.526Z","orgId":"412d305a-227d-44f9-a262-a31ba44f2aea","shortName":"SNOWFLAKE"},"references":[{"name":"Snowflake Connector for Python Release Notes","url":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-481-oct-26-2026"},{"name":"Snowflake Connector for Python (Universal Core) Release Notes","url":"https://docs.snowflake.com/en/release-notes/clients-drivers/python-connector-2026#version-520-nov-4-2026"}],"title":"SQL Injection via unescaped DataFrame column names in Snowflake Connector for Python and Snowflake Connector for Python (Universal Core)","x_generator":{"engine":"cvelib 1.8.0"}}},"cveMetadata":{"assignerOrgId":"412d305a-227d-44f9-a262-a31ba44f2aea","assignerShortName":"SNOWFLAKE","cveId":"CVE-2026-123859","datePublished":"2026-11-06T16:11:51.526Z","dateReserved":"2026-11-06T16:06:29.814Z","dateUpdated":"2026-11-06T16:45:01.480Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-11-06 17:17:25","lastModifiedDate":"2026-11-06 21:15:29","problem_types":["CWE-89","CWE-89 Improper Neutralization of Special Elements used in an SQL Command"],"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"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"123859","Ordinal":"1","Title":"SQL Injection via unescaped DataFrame column names in Snowflake ","CVE":"CVE-2026-123859","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"123859","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"SQL Injection via unescaped DataFrame column names in Snowflake "}]}}}