CVE-2022-29631

7.5 HIGH

📋 TL;DR

CVE-2022-29631 is a CRLF injection vulnerability in Jodd HTTP library that allows attackers to perform Server-Side Request Forgery (SSRF) attacks. By injecting malicious carriage return and line feed characters in HTTP requests, attackers can make the vulnerable server send requests to internal systems. This affects applications using Jodd HTTP v6.0.9 for HTTP client functionality.

💻 Affected Systems

Products:
  • Jodd HTTP
Versions: v6.0.9
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications using Jodd HTTP library for HTTP client operations with user-controlled input.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of internal network via SSRF to access sensitive internal services, potentially leading to data exfiltration or lateral movement.

🟠

Likely Case

Information disclosure from internal services, reconnaissance of internal network, or limited data access via SSRF.

🟢

If Mitigated

Limited impact with proper network segmentation and egress filtering preventing internal service access.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires user input to be passed to vulnerable HttpRequest methods. Public GitHub issues demonstrate the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v6.0.10 and later

Vendor Advisory: https://github.com/oblac/jodd-http/issues/9

Restart Required: Yes

Instructions:

1. Update Jodd HTTP dependency to v6.0.10 or later. 2. Update pom.xml or build.gradle with new version. 3. Rebuild and redeploy application. 4. Restart affected services.

🔧 Temporary Workarounds

Input Validation

all

Validate and sanitize all user input before passing to HttpRequest.set() and HttpRequest.send() methods

Network Segmentation

all

Implement strict egress filtering to prevent SSRF attacks from reaching internal services

🧯 If You Can't Patch

  • Implement WAF rules to detect and block CRLF injection patterns in HTTP requests
  • Deploy network monitoring to detect unusual outbound requests from affected systems

🔍 How to Verify

Check if Vulnerable:

Check if application uses Jodd HTTP v6.0.9 via dependency management files (pom.xml, build.gradle) or by examining deployed libraries.

Check Version:

Check build configuration files or run: java -cp "jodd-http-*.jar" -version

Verify Fix Applied:

Confirm Jodd HTTP version is v6.0.10 or later and test that CRLF injection attempts are properly rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual outbound HTTP requests from application
  • Failed CRLF injection attempts in application logs
  • Unexpected HTTP response headers

Network Indicators:

  • HTTP requests with encoded CRLF characters (%0D%0A)
  • Requests to internal IP addresses from application servers
  • Unusual destination ports in outbound traffic

SIEM Query:

source="application_logs" AND (message CONTAINS "%0D%0A" OR message CONTAINS "CRLF")

🔗 References

📤 Share & Export