CVE-2019-17570

9.8 CRITICAL

📋 TL;DR

CVE-2019-17570 is an untrusted deserialization vulnerability in Apache XML-RPC library that allows remote code execution. A malicious XML-RPC server can send specially crafted responses to XML-RPC clients, causing them to execute arbitrary code. This affects any application using the vulnerable Apache XML-RPC library to communicate with XML-RPC servers.

💻 Affected Systems

Products:
  • Apache XML-RPC (ws-xmlrpc)
Versions: All versions prior to end-of-life (library is no longer maintained)
Operating Systems: All operating systems running Java applications using Apache XML-RPC
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects XML-RPC clients using the vulnerable library to communicate with XML-RPC servers. The library is end-of-life and no longer maintained by Apache.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with attacker gaining full control over the vulnerable system, data exfiltration, and lateral movement within the network.

🟠

Likely Case

Remote code execution leading to data theft, system manipulation, or deployment of malware/ransomware.

🟢

If Mitigated

Limited impact if proper network segmentation, egress filtering, and least privilege principles are implemented.

🌐 Internet-Facing: HIGH - XML-RPC clients communicating with external servers are directly exposed to malicious responses.
🏢 Internal Only: MEDIUM - Internal XML-RPC communications could be exploited if internal systems are compromised.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires the vulnerable client to connect to a malicious XML-RPC server. The vulnerability is in the client-side parsing of server responses.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: None - library is end-of-life

Vendor Advisory: https://lists.apache.org/thread.html/846551673bbb7ec8d691008215384bcef03a3fb004d2da845cfe88ee@1390230951@<dev.ws.apache.org>

Restart Required: Yes

Instructions:

1. Migrate to alternative XML-RPC libraries or modern alternatives like REST APIs. 2. Remove Apache XML-RPC from all applications. 3. Rebuild and redeploy applications with replacement libraries.

🔧 Temporary Workarounds

Network Filtering

all

Implement egress filtering to restrict XML-RPC clients to trusted servers only

Input Validation

all

Implement custom XML parsing with strict validation before passing to XML-RPC library

🧯 If You Can't Patch

  • Isolate vulnerable systems in segmented network zones with strict egress filtering
  • Implement application allowlisting and runtime protection to detect exploitation attempts

🔍 How to Verify

Check if Vulnerable:

Check application dependencies for org.apache.xmlrpc:xmlrpc-client or similar Apache XML-RPC artifacts. Use: mvn dependency:tree (Maven) or gradle dependencies (Gradle) to identify usage.

Check Version:

Check pom.xml, build.gradle, or dependency manifest files for Apache XML-RPC references.

Verify Fix Applied:

Verify Apache XML-RPC library is completely removed from application dependencies and replaced with alternative libraries.

📡 Detection & Monitoring

Log Indicators:

  • Unusual process execution from XML-RPC client applications
  • Java deserialization errors in application logs
  • Outbound connections to unknown XML-RPC servers

Network Indicators:

  • XML-RPC traffic to untrusted external servers
  • Unusual outbound connections from XML-RPC clients

SIEM Query:

source="application_logs" AND ("XmlRpcResponseParser" OR "deserialization error" OR "java.lang.ClassNotFoundException")

🔗 References

📤 Share & Export