CVE-2020-13950

7.5 HIGH

📋 TL;DR

CVE-2020-13950 is a NULL pointer dereference vulnerability in Apache HTTP Server's mod_proxy_http module that allows remote attackers to cause a denial of service by sending specially crafted HTTP requests with both Content-Length and Transfer-Encoding headers. This affects Apache HTTP Server versions 2.4.41 through 2.4.46 when mod_proxy_http is enabled. Organizations using vulnerable Apache versions with reverse proxy configurations are at risk.

💻 Affected Systems

Products:
  • Apache HTTP Server
Versions: 2.4.41 to 2.4.46
Operating Systems: All operating systems running Apache HTTP Server
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when mod_proxy_http module is enabled and configured. Default Apache installations without proxy functionality are not affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service outage of Apache HTTP Server, disrupting all web services and applications behind the proxy, potentially affecting business operations and availability.

🟠

Likely Case

Apache server crash requiring manual restart, causing temporary service disruption until the process is restored.

🟢

If Mitigated

Minimal impact with proper network segmentation, load balancing, and monitoring that can quickly detect and restart crashed instances.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires sending specially crafted HTTP requests with conflicting Content-Length and Transfer-Encoding headers. The vulnerability is simple to exploit and has been publicly documented.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.4.47 or later

Vendor Advisory: http://httpd.apache.org/security/vulnerabilities_24.html

Restart Required: Yes

Instructions:

1. Download Apache HTTP Server version 2.4.47 or later from the official Apache website. 2. Stop the Apache service. 3. Backup configuration files. 4. Install the updated version. 5. Restore configuration files. 6. Start the Apache service.

🔧 Temporary Workarounds

Disable mod_proxy_http

all

Remove or comment out mod_proxy_http module if proxy functionality is not required

# Comment out or remove 'LoadModule proxy_http_module modules/mod_proxy_http.so' in httpd.conf

Use mod_security rules

all

Block requests with both Content-Length and Transfer-Encoding headers

SecRule REQUEST_HEADERS:Content-Length "^.*$" "chain,id:1001,phase:1,deny,status:400"
SecRule REQUEST_HEADERS:Transfer-Encoding "^.*$" "t:none"

🧯 If You Can't Patch

  • Implement network-level filtering to block requests with both Content-Length and Transfer-Encoding headers
  • Deploy web application firewall (WAF) rules to detect and block exploitation attempts

🔍 How to Verify

Check if Vulnerable:

Check Apache version and verify mod_proxy_http is enabled: httpd -v && httpd -M | grep proxy_http

Check Version:

httpd -v

Verify Fix Applied:

Verify Apache version is 2.4.47 or later: httpd -v

📡 Detection & Monitoring

Log Indicators:

  • Apache crash logs
  • Segmentation fault errors in error_log
  • Requests with both Content-Length and Transfer-Encoding headers

Network Indicators:

  • HTTP requests containing both Content-Length and Transfer-Encoding headers
  • Sudden drop in proxy traffic

SIEM Query:

source="apache_access" AND (http_content_length AND http_transfer_encoding)

🔗 References

📤 Share & Export