CVE-2023-38646 Overview
CVE-2023-38646 is a critical pre-authentication Remote Code Execution (RCE) vulnerability affecting Metabase, a popular open-source business intelligence and analytics platform. The vulnerability allows unauthenticated attackers to execute arbitrary commands on the server at the server's privilege level. Due to the lack of authentication requirements, this vulnerability poses an extreme risk to any exposed Metabase instance.
Critical Impact
Unauthenticated attackers can achieve full system compromise by executing arbitrary commands on vulnerable Metabase servers without any prior authentication, potentially leading to data exfiltration, lateral movement, and complete infrastructure takeover.
Affected Products
- Metabase Open Source versions before 0.46.6.1, 0.45.4.1, 0.44.7.1, and 0.43.7.2
- Metabase Enterprise versions before 1.46.6.1, 1.45.4.1, 1.44.7.1, and 1.43.7.2
Discovery Timeline
- 2023-07-21 - CVE-2023-38646 published to NVD
- 2024-11-21 - Last updated in NVD database
Technical Details for CVE-2023-38646
Vulnerability Analysis
This pre-authentication remote code execution vulnerability in Metabase represents one of the most dangerous vulnerability classes—allowing complete system compromise without requiring any credentials or user interaction. The vulnerability exists in how Metabase processes certain API requests, enabling attackers to inject and execute arbitrary system commands.
The attack surface is particularly concerning because Metabase instances are often deployed on internal networks with access to sensitive business data and connected database systems. Successful exploitation grants attackers the ability to execute commands with the same privileges as the Metabase server process, which may include access to database credentials, API keys, and other sensitive configuration data.
The extremely high exploitation probability (EPSS of 94.255% at the 99.93rd percentile) indicates this vulnerability is actively being targeted in the wild and has well-documented exploitation techniques available through public exploit code.
Root Cause
The vulnerability stems from insufficient input validation in Metabase's API endpoint handling. The application fails to properly sanitize user-controlled input before processing it in a security-sensitive context, allowing attackers to inject malicious commands that are then executed by the underlying operating system.
Attack Vector
The attack vector is network-based and requires no authentication, making it trivially exploitable for any attacker who can reach a vulnerable Metabase instance. Exploitation follows these general steps:
- Attacker identifies an exposed Metabase instance running a vulnerable version
- Attacker crafts a malicious HTTP request targeting the vulnerable API endpoint
- The server processes the request without proper validation
- Malicious commands are executed on the server with the application's privileges
- Attacker achieves remote code execution and can establish persistence
Public exploit code is available through resources such as the Packet Storm RCE Exploit, making this vulnerability accessible to attackers with minimal technical sophistication. The GitHub Issue Discussion provides additional technical context on the vulnerability.
Detection Methods for CVE-2023-38646
Indicators of Compromise
- Unusual outbound connections from Metabase servers to unknown external IP addresses
- Unexpected processes spawned as child processes of the Metabase Java application
- Suspicious entries in web server access logs showing malformed API requests
- Evidence of reverse shell connections or command-and-control beacons
- Unauthorized user accounts or SSH keys added to the system
Detection Strategies
- Monitor HTTP access logs for anomalous requests to Metabase API endpoints, particularly those with encoded payloads or unusual parameters
- Implement network intrusion detection rules to identify known exploitation patterns for CVE-2023-38646
- Deploy endpoint detection and response (EDR) solutions to identify suspicious process creation events from the Metabase application
- Configure SIEM alerts for command execution patterns consistent with post-exploitation activity
Monitoring Recommendations
- Enable verbose logging on Metabase instances and forward logs to a centralized security monitoring platform
- Monitor for unexpected child processes spawned by the Java runtime hosting Metabase
- Track network connections from Metabase servers to detect potential data exfiltration or C2 communication
- Implement file integrity monitoring on critical system directories to detect unauthorized modifications
How to Mitigate CVE-2023-38646
Immediate Actions Required
- Immediately upgrade all Metabase instances to the latest patched versions
- If immediate patching is not possible, restrict network access to Metabase instances using firewall rules
- Conduct forensic analysis on any internet-exposed Metabase instances to check for signs of compromise
- Review system logs and network traffic for indicators of exploitation attempts
- Rotate any credentials and API keys that may have been accessible to the Metabase application
Patch Information
Metabase has released security patches addressing this vulnerability. Organizations should upgrade to the following minimum versions based on their deployment:
| Edition | Patched Versions |
|---|---|
| Open Source | 0.46.6.1, 0.45.4.1, 0.44.7.1, 0.43.7.2 |
| Enterprise | 1.46.6.1, 1.45.4.1, 1.44.7.1, 1.43.7.2 |
Refer to the Metabase Security Advisory Blog and GitHub Release Notes v0.46.6.1 for complete patch details and upgrade instructions.
Workarounds
- Place Metabase behind a reverse proxy with authentication requirements to add an additional layer of protection
- Restrict network access to Metabase instances using firewall rules, limiting access to trusted IP ranges only
- Deploy a Web Application Firewall (WAF) with rules to detect and block exploitation attempts
- Disable or isolate any Metabase instances that cannot be immediately patched until updates can be applied
# Example: Restrict Metabase access using iptables
# Allow access only from trusted internal network
iptables -A INPUT -p tcp --dport 3000 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


