CVE-2026-92903 Overview
CVE-2026-92903 is an improper input validation vulnerability in Snowflake CLI versions prior to 3.27.0. The flaw allows unsanitized user-controlled values to be interpolated into SQL strings executed as multi-statement queries. An attacker who supplies a malicious project configuration file or crafted command-line input can execute arbitrary SQL statements in the context of the victim's active Snowflake session and role. The vulnerability is categorized under [CWE-89] (SQL Injection) and impacts confidentiality, integrity, and availability of data accessible to the executing role.
Critical Impact
Attackers with write or pull-request access to a repository whose CI/CD pipeline runs Snowflake CLI under an elevated service account can execute attacker-controlled SQL against production Snowflake environments.
Affected Products
- Snowflake CLI versions prior to 3.27.0
- CI/CD pipelines invoking Snowflake CLI under elevated service account roles
- Automation wrappers that pass untrusted input to Snowflake CLI
Discovery Timeline
- 2026-09-17 - CVE-2026-92903 published to NVD
- 2026-09-17 - Last updated in NVD database
Technical Details for CVE-2026-92903
Vulnerability Analysis
Snowflake CLI constructs SQL statements by interpolating user-controlled values directly into query strings. The CLI executes these strings as multi-statement queries against the target Snowflake account. Because no sanitization or parameterization occurs before execution, an attacker who controls project configuration values or command-line arguments can inject additional SQL statements. The injected statements run under the currently authenticated session and role, inheriting all privileges assigned to that role.
The practical exploitation path centers on CI/CD environments. Continuous integration pipelines commonly invoke Snowflake CLI using long-lived service account credentials bound to elevated roles. An attacker who submits a malicious pull request containing a poisoned project configuration file can trigger injection when the pipeline runs the CLI. Impact scales directly with the privileges of the configured role at execution time.
Root Cause
The root cause is missing input validation and unsafe SQL string interpolation in the Snowflake CLI codebase. User-controlled values from configuration files or command arguments are concatenated into SQL statements without escaping or use of bound parameters. Multi-statement query execution amplifies the impact by allowing attackers to append entirely new statements rather than only manipulate existing ones.
Attack Vector
Exploitation requires local invocation of the CLI, low privileges on the host, and user interaction such as a pipeline execution triggered by a merge or pull request. The attacker must either supply a malicious project configuration file consumed by the CLI or provide untrusted input to automation that wraps CLI commands. Successful exploitation results in scope change: the attacker's code executes within the security boundary of the Snowflake account rather than the local host.
See the Snowflake CLI v3.27.0 release notes for remediation details.
Detection Methods for CVE-2026-92903
Indicators of Compromise
- Snowflake query history entries showing unexpected multi-statement queries originating from CI/CD service accounts
- Project configuration files (snowflake.yml, snowflake.local.yml) containing SQL metacharacters, semicolons, or comment sequences in identifier or parameter fields
- CLI invocations from build agents referencing pull requests from external contributors
- New role grants, warehouse creations, or data exfiltration queries executed under service account sessions
Detection Strategies
- Audit Snowflake QUERY_HISTORY for statements executed by CLI service accounts that deviate from established deployment patterns
- Enable and review Snowflake ACCESS_HISTORY to identify unexpected object access by pipeline roles
- Scan repository configuration files for suspicious characters in fields consumed by Snowflake CLI templating
- Correlate CI/CD job logs with Snowflake session IDs to attribute injected queries to source pipelines
Monitoring Recommendations
- Alert on Snowflake CLI processes invoked with the --project flag pointing at attacker-controllable paths
- Monitor for privilege-modifying SQL (GRANT, CREATE ROLE, CREATE USER) executed by automation accounts
- Track pull request events that modify Snowflake project configuration files and require security review before pipeline execution
How to Mitigate CVE-2026-92903
Immediate Actions Required
- Upgrade Snowflake CLI to version 3.27.0 or later on all developer workstations and CI/CD runners
- Rotate credentials for any Snowflake service account role used by pipelines that ran vulnerable CLI versions against untrusted input
- Reduce privileges of Snowflake roles bound to CI/CD service accounts to the minimum required for deployment tasks
- Require code review approval before executing pipelines triggered by external pull requests
Patch Information
Snowflake released the fix in Snowflake CLI version 3.27.0, which also addresses several additional security findings. Users must manually upgrade the CLI. Refer to the Snowflake CLI v3.27.0 release for full patch notes and installation guidance.
Workarounds
- Restrict pipeline execution on pull requests from forks or untrusted contributors until CLI upgrades complete
- Use dedicated Snowflake roles with narrowly scoped privileges for each pipeline rather than shared elevated service accounts
- Validate and sanitize project configuration values in a pre-commit or pipeline pre-flight step to reject SQL metacharacters
- Isolate Snowflake CLI execution in ephemeral runners with no persistent credentials
# Upgrade Snowflake CLI to the patched version
pip install --upgrade "snowflake-cli>=3.27.0"
# Verify installed version
snow --version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.