CVE-2023-30535

7.3 HIGH

📋 TL;DR

This CVE describes a command injection vulnerability in Snowflake JDBC drivers that allows remote code execution. An attacker can trick users into connecting to a malicious server via crafted SSO URLs, executing arbitrary code on the victim's machine. All users of vulnerable Snowflake JDBC drivers are affected.

💻 Affected Systems

Products:
  • Snowflake JDBC Driver
Versions: All versions before 3.13.29
Operating Systems: All platforms running Java applications with Snowflake JDBC driver
Default Config Vulnerable: ⚠️ Yes
Notes: Affects any Java application using vulnerable Snowflake JDBC driver versions for database connectivity.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise of the client machine, allowing attacker to execute arbitrary commands with user privileges, potentially leading to data theft, lateral movement, or ransomware deployment.

🟠

Likely Case

Attacker gains control of the user's local machine, potentially accessing sensitive data, credentials, or using the machine as a pivot point into the network.

🟢

If Mitigated

With proper network segmentation and user awareness, impact is limited to isolated client machines without access to critical systems.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires social engineering to trick users into visiting malicious URLs, but technical execution is straightforward once the malicious server is established.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.13.29

Vendor Advisory: https://github.com/snowflakedb/snowflake-jdbc/security/advisories/GHSA-4g3j-c4wg-6j7x

Restart Required: Yes

Instructions:

1. Identify all applications using Snowflake JDBC driver. 2. Update driver dependency to version 3.13.29 or later. 3. Rebuild and redeploy affected applications. 4. Restart application services.

🔧 Temporary Workarounds

Network Restriction

all

Restrict outbound connections from client machines to only trusted Snowflake endpoints

User Awareness Training

all

Train users not to click on untrusted database connection URLs

🧯 If You Can't Patch

  • Implement strict network controls to prevent client machines from connecting to untrusted servers
  • Use application allowlisting to prevent execution of unauthorized processes on client machines

🔍 How to Verify

Check if Vulnerable:

Check the JDBC driver version in your application's dependencies or classpath. Versions before 3.13.29 are vulnerable.

Check Version:

Check your build configuration (Maven pom.xml, Gradle build.gradle) or run: java -cp snowflake-jdbc.jar snowflake.client.jdbc.internal.jdbc.core.SFDriver --version

Verify Fix Applied:

Confirm that all applications are using Snowflake JDBC driver version 3.13.29 or later.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected outbound connections to non-Snowflake domains from JDBC clients
  • Java process spawning unexpected child processes

Network Indicators:

  • Client machines connecting to unusual domains on ports 80/443
  • SSO authentication requests to non-standard endpoints

SIEM Query:

source="*jdbc*" AND (url="*malicious*" OR domain!="*.snowflakecomputing.com")

🔗 References

📤 Share & Export