high CVSS 7.3

CVE-2023-38709·Apache vulnerability

Faulty input validation in the core of Apache allows malicious or exploitable backend/content generators to split HTTP responses. This issue affects Apache HTTP Server: through 2.4.58.

Severity
high
Software
Apache
Fixed in
14.6
Published
2024-04-04

Affected versions

Until: 14.6

Fixed in: 14.6

How to fix this CVE

Update Apache HTTP Server to version 2.4.59 or later to address the HTTP response splitting vulnerability caused by incomplete input validation. This fix prevents malicious backend generators from injecting headers or content that could fragment HTTP responses and lead to cache poisoning or credential theft. Prioritize this update for production systems exposed to untrusted content sources.

sudo dnf update httpd -y && sudo systemctl restart httpd

Defensia detects this vulnerability

What an exploitation attempt looks like

Sample log line indicative of exploitation attempts:

POST|GET request with response headers containing embedded CRLF sequences (\r\n\r\n) that create multiple response bodies; regex: (Content-Length|Set-Cookie|Location):[^\r]*\r\n\r\n.*\r\nHTTP/

WAF mitigation (if patching is not yet possible)

Add this rule to your WAF to block exploitation attempts while you schedule the patch.

Implement a WAF rule to block backend responses containing double CRLF sequences in headers (\r\n\r\n), and validate that Content-Length header accurately reflects the actual response body length. Block responses where header injection patterns are detected.

How to check if you are affected

  1. Run `apache2ctl -v` or `httpd -v` to check the installed Apache version; vulnerability affects versions up to 2.4.58
  2. Examine backend/CGI scripts and content generators for any that output HTTP headers—identify those processing untrusted data
  3. Search Apache access and error logs for suspicious header patterns: `grep -E '(\r\n\r\n|\x0d\x0a)' /var/log/apache2/access.log | head -20`
  4. Verify the fix by confirming the version is 2.4.59 or later with `apache2ctl -v`, then test with `curl -v http://localhost/` to confirm normal response structure

FAQ

What is CVE-2023-38709?

CVE-2023-38709 is an input validation flaw in Apache HTTP Server that allows malicious or compromised backend content generators to craft HTTP responses that are split into multiple logical responses, potentially enabling cache poisoning, session hijacking, or credential theft through header injection.

Is CVE-2023-38709 being actively exploited?

No, this vulnerability is not listed on the CISA Known Exploited Vulnerabilities (KEV) catalog and no public exploits are currently available. However, it remains a serious risk in environments where backend generators process untrusted input.

What versions of Apache are affected by CVE-2023-38709?

Apache HTTP Server versions up to and including 2.4.58 are affected. Version 2.4.59 and later include the fix.

How do I check if my server is vulnerable to CVE-2023-38709?

Run `apache2ctl -v` or `httpd -v` and verify the version number. If it shows 2.4.58 or earlier, your server is vulnerable.

Does Defensia detect CVE-2023-38709?

Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Apache is installed on a monitored server, CVE-2023-38709 will appear in your dashboard with remediation steps.

Related Apache CVEs

CVE-2021-41773CVSS 10A flaw was found in a change made to path normalization in Apache HTTP Server 2.4.49. An attacker could use a path traversal attack to map URLs to files outside the directories configured by Alias-like directives. If files outside of these directories are not protected by the usual default configuration "require all denied", these requests can succeed. If CGI scripts are also enabled for these aliased pathes, this could allow for remote code execution. This issue is known to be exploited in the wild. This issue only affects Apache 2.4.49 and not earlier versions. The fix in Apache HTTP Server 2.4.50 was found to be incomplete, see CVE-2021-42013.
CVE-2021-42013CVSS 10It was found that the fix for CVE-2021-41773 in Apache HTTP Server 2.4.50 was insufficient. An attacker could use a path traversal attack to map URLs to files outside the directories configured by Alias-like directives. If files outside of these directories are not protected by the usual default configuration "require all denied", these requests can succeed. If CGI scripts are also enabled for these aliased pathes, this could allow for remote code execution. This issue only affects Apache 2.4.49 and Apache 2.4.50 and not earlier versions.
CVE-2024-38474CVSS 9.8Substitution encoding issue in mod_rewrite in Apache HTTP Server 2.4.59 and earlier allows attacker to execute scripts in directories permitted by the configuration but not directly reachable by any URL or source disclosure of scripts meant to only to be executed as CGI. Users are recommended to upgrade to version 2.4.60, which fixes this issue. Some RewriteRules that capture and substitute unsafely will now fail unless rewrite flag "UnsafeAllow3F" is specified.
CVE-2024-38476CVSS 9.8Vulnerability in core of Apache HTTP Server 2.4.59 and earlier are vulnerably to information disclosure, SSRF or local script execution via backend applications whose response headers are malicious or exploitable. Users are recommended to upgrade to version 2.4.60, which fixes this issue.
CVE-2026-28780CVSS 9.8Heap-based Buffer Overflow vulnerability in mod_proxy_ajp of Apache HTTP Server. If mod_proxy_ajp connects to a malicious AJP server this AJP server can send a malicious AJP message back to mod_proxy_ajp and cause it to write 4 attacker controlled bytes after the end of a heap based buffer. This issue affects Apache HTTP Server: through 2.4.66. Users are recommended to upgrade to version 2.4.67, which fixes the issue.

References

Track CVEs across your fleet automatically

Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2023-38709. Free for 1 server.

Get started free