CVE-2025-7787
📋 TL;DR
This critical Server-Side Request Forgery (SSRF) vulnerability in Xuxueli xxl-job allows attackers to make unauthorized requests from the vulnerable server to internal or external systems. Attackers can exploit this remotely to potentially access internal services, exfiltrate data, or conduct further attacks. All deployments of xxl-job up to version 3.1.1 are affected.
💻 Affected Systems
- Xuxueli xxl-job
📦 What is this software?
Xxl Job by Xuxueli
⚠️ Risk & Real-World Impact
Worst Case
Attackers could pivot to internal networks, access cloud metadata services, steal credentials, or use the vulnerable server as a proxy for attacks against other systems.
Likely Case
Unauthorized access to internal HTTP services, data exfiltration, or scanning of internal network resources from the compromised server.
If Mitigated
Limited impact if network segmentation restricts outbound connections and internal services require authentication.
🎯 Exploit Status
Public exploit available in GitHub issues, making this easily exploitable by attackers.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.1.2 or later
Vendor Advisory: https://github.com/xuxueli/xxl-job/issues/3749
Restart Required: Yes
Instructions:
1. Upgrade xxl-job to version 3.1.2 or later. 2. Replace the vulnerable SampleXxlJob.java file. 3. Restart the xxl-job service.
🔧 Temporary Workarounds
Disable HTTP job handler
allRemove or disable the vulnerable httpJobHandler function if not required
# Remove or comment out httpJobHandler in SampleXxlJob.java
# Restart xxl-job service
Network restrictions
linuxImplement egress filtering to restrict outbound HTTP requests from xxl-job servers
# Configure firewall rules to limit outbound HTTP/HTTPS
# Example: iptables -A OUTPUT -p tcp --dport 80 -j DROP
# Example: iptables -A OUTPUT -p tcp --dport 443 -j DROP
🧯 If You Can't Patch
- Implement strict network segmentation to isolate xxl-job servers from sensitive internal systems
- Deploy web application firewall (WAF) rules to detect and block SSRF patterns in requests
🔍 How to Verify
Check if Vulnerable:
Check if running xxl-job version 3.1.1 or earlier and if httpJobHandler is enabled in SampleXxlJob.java
Check Version:
Check pom.xml for version or examine application startup logs
Verify Fix Applied:
Verify xxl-job version is 3.1.2 or later and test that httpJobHandler no longer accepts arbitrary URLs
📡 Detection & Monitoring
Log Indicators:
- Unusual outbound HTTP requests from xxl-job server
- Requests to internal IP ranges or cloud metadata endpoints
Network Indicators:
- HTTP traffic from xxl-job servers to unexpected destinations
- Multiple rapid HTTP requests to different internal endpoints
SIEM Query:
source="xxl-job" AND (url CONTAINS "169.254.169.254" OR url CONTAINS "metadata.google.internal" OR url CONTAINS "10." OR url CONTAINS "192.168.")