CVE-2024-37084

9.8 CRITICAL

📋 TL;DR

This vulnerability allows authenticated malicious users with access to the Skipper server API in Spring Cloud Data Flow to write arbitrary files anywhere on the filesystem through a crafted upload request. This can lead to complete server compromise via remote code execution. Affected systems are Spring Cloud Data Flow deployments with Skipper server API exposure.

💻 Affected Systems

Products:
  • Spring Cloud Data Flow
Versions: All versions prior to 2.11.4
Operating Systems: All operating systems running Spring Cloud Data Flow
Default Config Vulnerable: ⚠️ Yes
Notes: Requires access to the Skipper server API endpoint. Default deployments with API exposure are vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full server compromise leading to data theft, lateral movement, ransomware deployment, or complete system takeover.

🟠

Likely Case

Arbitrary file write leading to remote code execution, privilege escalation, and persistence mechanisms on the compromised server.

🟢

If Mitigated

Limited impact if proper network segmentation and access controls prevent unauthorized API access.

🌐 Internet-Facing: HIGH - Internet-facing instances are directly exploitable by attackers who obtain or bypass authentication.
🏢 Internal Only: MEDIUM - Internal instances still vulnerable to insider threats or attackers who breach perimeter defenses.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authentication to the Skipper API but is straightforward once access is obtained. The vulnerability is in file upload handling logic.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.11.4

Vendor Advisory: https://spring.io/security/cve-2024-37084

Restart Required: Yes

Instructions:

1. Upgrade Spring Cloud Data Flow to version 2.11.4 or later. 2. Update all dependencies as specified in the release notes. 3. Restart the Spring Cloud Data Flow server and all related services.

🔧 Temporary Workarounds

Restrict Skipper API Access

all

Implement network-level access controls to restrict access to the Skipper server API to only trusted IP addresses or networks.

# Example firewall rule (Linux iptables)
iptables -A INPUT -p tcp --dport [SKIPPER_PORT] -s [TRUSTED_IP] -j ACCEPT
iptables -A INPUT -p tcp --dport [SKIPPER_PORT] -j DROP

Disable Unnecessary API Endpoints

all

If Skipper server functionality is not required, disable or remove the Skipper server component entirely.

# Modify Spring Cloud Data Flow configuration to disable Skipper
spring.cloud.dataflow.skipper.enabled=false

🧯 If You Can't Patch

  • Implement strict authentication and authorization controls for the Skipper API using Spring Security or similar frameworks.
  • Deploy network segmentation to isolate Spring Cloud Data Flow servers from critical infrastructure and implement egress filtering.

🔍 How to Verify

Check if Vulnerable:

Check the Spring Cloud Data Flow version. If it's below 2.11.4 and the Skipper server API is accessible, the system is vulnerable.

Check Version:

Check application logs or use: curl -s http://[HOST]:[PORT]/about | grep 'version'

Verify Fix Applied:

Confirm the version is 2.11.4 or higher and test that file upload functionality no longer accepts arbitrary file paths.

📡 Detection & Monitoring

Log Indicators:

  • Unusual file upload requests to Skipper API endpoints
  • File write operations to unexpected locations in system logs
  • Authentication logs showing unauthorized access attempts to Skipper API

Network Indicators:

  • HTTP POST requests to /api/skipper/* endpoints with file upload parameters
  • Unusual outbound connections from Spring Cloud Data Flow server after exploitation

SIEM Query:

source="spring-cloud-dataflow" AND (uri_path="/api/skipper/*" AND http_method="POST" AND (file_upload OR multipart/form-data))

🔗 References

📤 Share & Export