CVE-2021-30179
📋 TL;DR
CVE-2021-30179 is a critical remote code execution vulnerability in Apache Dubbo that allows attackers to execute arbitrary Java code by exploiting insecure Java deserialization in generic RPC calls. Attackers can send specially crafted requests with the 'nativejava' attachment to trigger deserialization of malicious byte arrays. This affects all Apache Dubbo deployments prior to versions 2.6.9 and 2.7.9 that have generic calls enabled.
💻 Affected Systems
- Apache Dubbo
📦 What is this software?
Dubbo by Apache
Dubbo by Apache
Dubbo by Apache
⚠️ Risk & Real-World Impact
Worst Case
Complete system compromise with remote code execution, allowing attackers to execute arbitrary commands, install malware, exfiltrate data, or pivot to other systems.
Likely Case
Remote code execution leading to data theft, service disruption, or deployment of ransomware/cryptominers on vulnerable systems.
If Mitigated
Denial of service or limited information disclosure if proper network segmentation and input validation are in place.
🎯 Exploit Status
Exploitation is straightforward - attackers need to send a specially crafted RPC request with the nativejava attachment. Public exploit code exists.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Apache Dubbo 2.6.9 and 2.7.9
Vendor Advisory: https://lists.apache.org/thread.html/rccbcbdd6593e42ea3a1e8fedd12807cb111375c9c40edb005ef36f67%40%3Cdev.dubbo.apache.org%3E
Restart Required: Yes
Instructions:
1. Identify all Apache Dubbo instances. 2. Upgrade to Dubbo 2.6.9 or 2.7.9 or later. 3. Restart all Dubbo services. 4. Verify the fix by checking version and testing generic calls.
🔧 Temporary Workarounds
Disable Generic Calls
allDisable generic invocation support in Dubbo configuration to prevent exploitation.
Set generic="false" in Dubbo service configuration or disable via registry configuration
Input Validation Filter
allImplement custom filters to reject RPC requests with nativejava or other dangerous attachments.
Implement and deploy custom Dubbo Filter that validates RPC attachments before processing
🧯 If You Can't Patch
- Implement strict network segmentation to isolate Dubbo services from untrusted networks
- Deploy WAF or API gateway with rules to block requests containing 'nativejava' in RPC attachments
🔍 How to Verify
Check if Vulnerable:
Check Dubbo version - if version is below 2.6.9 or 2.7.9, the system is vulnerable. Also check if generic calls are enabled in configuration.
Check Version:
Check application logs for Dubbo version or use management interfaces. For Java applications: System.getProperty("dubbo.version") or check pom.xml/gradle files.
Verify Fix Applied:
Verify Dubbo version is 2.6.9, 2.7.9 or higher. Test generic calls with nativejava attachment - they should be rejected or fail.
📡 Detection & Monitoring
Log Indicators:
- RPC requests with 'nativejava' attachment
- GenericFilter processing errors
- Java deserialization exceptions in logs
- Unexpected method invocations via $invoke or $invokeAsync
Network Indicators:
- RPC traffic with serialized Java objects in payload
- Dubbo protocol requests with suspicious attachment headers
- Unusual outbound connections from Dubbo services
SIEM Query:
source="dubbo.logs" AND (attachment="nativejava" OR "GenericFilter" AND error) OR ("$invoke" AND "nativejava")
🔗 References
- https://lists.apache.org/thread.html/rccbcbdd6593e42ea3a1e8fedd12807cb111375c9c40edb005ef36f67%40%3Cdev.dubbo.apache.org%3E
- https://lists.apache.org/thread.html/rccbcbdd6593e42ea3a1e8fedd12807cb111375c9c40edb005ef36f67%40%3Cdev.dubbo.apache.org%3E
- https://lists.apache.org/thread.html/rccbcbdd6593e42ea3a1e8fedd12807cb111375c9c40edb005ef36f67%40%3Cdev.dubbo.apache.org%3E
- https://lists.apache.org/thread.html/rccbcbdd6593e42ea3a1e8fedd12807cb111375c9c40edb005ef36f67%40%3Cdev.dubbo.apache.org%3E