Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2024-27316

CVE-2024-27316: Apache HTTP Server DoS Vulnerability

CVE-2024-27316 is a denial of service vulnerability in Apache HTTP Server caused by memory exhaustion when HTTP/2 headers exceed limits. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2024-27316 Overview

CVE-2024-27316 is a memory exhaustion vulnerability in Apache HTTP Server's HTTP/2 implementation via the nghttp2 library. When HTTP/2 incoming headers exceed configured limits, they are temporarily buffered in nghttp2 to generate an informative HTTP 413 response. However, if a malicious client continues sending headers without stopping, this leads to unbounded memory allocation and eventual memory exhaustion, causing a denial of service condition.

Critical Impact

Remote attackers can exhaust server memory by continuously sending oversized HTTP/2 headers, leading to complete denial of service without requiring authentication.

Affected Products

  • Apache HTTP Server (versions prior to patch)
  • Fedora 38, 39, and 40
  • NetApp ONTAP 9

Discovery Timeline

  • April 4, 2024 - CVE-2024-27316 published to NVD
  • November 4, 2025 - Last updated in NVD database

Technical Details for CVE-2024-27316

Vulnerability Analysis

This vulnerability (CWE-770: Allocation of Resources Without Limits or Throttling) exists in the HTTP/2 header processing mechanism within Apache HTTP Server's integration with the nghttp2 library. The fundamental issue stems from how the server handles incoming headers that exceed configured size limits.

Under normal operation, when HTTP/2 headers exceed the server's configured limits, nghttp2 buffers these headers temporarily to construct and return an HTTP 413 (Request Entity Too Large) response to the client. This design decision prioritizes providing informative error responses to clients. However, the implementation fails to enforce a hard ceiling on memory allocation during this buffering phase.

An attacker can exploit this by establishing an HTTP/2 connection and continuously streaming header frames without respecting the server's limits or protocol flow control. Since the server continues to buffer incoming headers while preparing the 413 response, memory consumption grows unbounded until system resources are exhausted.

Root Cause

The root cause is improper resource allocation controls in the nghttp2 library's header buffering logic. When processing oversized headers, the library lacks an absolute memory limit for the buffer used to accumulate header data before generating the error response. This allows an attacker to force arbitrary memory allocation by simply not terminating the header stream, bypassing the intended header size limits through persistent transmission.

Attack Vector

The attack is network-based and requires no authentication or user interaction. An attacker initiates an HTTP/2 connection to the vulnerable server and begins sending HTTP/2 HEADERS and CONTINUATION frames with excessive header content. By maintaining a continuous stream of header data and ignoring server responses, the attacker forces the server to allocate increasing amounts of memory.

The attack is particularly effective because:

  • HTTP/2's binary framing allows efficient transmission of large header volumes
  • The server's attempt to be "helpful" by buffering for error responses becomes the attack surface
  • No valid credentials or specific request patterns are required
  • Multiple concurrent connections can accelerate memory exhaustion

A threat actor could sustain this attack from a single system to overwhelm a target server, or distribute the attack across multiple sources to amplify the effect and evade rate limiting.

Detection Methods for CVE-2024-27316

Indicators of Compromise

  • Abnormally high memory consumption on Apache HTTP Server processes without corresponding legitimate traffic increases
  • Elevated HTTP/2 connection counts from single or limited IP ranges
  • High volume of HTTP 413 error responses in server logs
  • Server process termination or system-level out-of-memory (OOM) events

Detection Strategies

  • Monitor Apache HTTP Server process memory usage with alerts for rapid growth patterns or thresholds exceeding normal operational baselines
  • Analyze HTTP/2 connection patterns for clients sending excessive HEADERS/CONTINUATION frames
  • Implement network-level monitoring for unusually large HTTP/2 header frame sequences
  • Configure log aggregation to detect spikes in HTTP 413 response codes

Monitoring Recommendations

  • Deploy application performance monitoring (APM) solutions to track Apache memory utilization trends
  • Establish baseline memory consumption and alert on deviations exceeding 150-200% of normal levels
  • Monitor connection duration and data patterns for HTTP/2 sessions exhibiting abnormal header transmission behavior
  • Implement real-time alerting on system-level memory pressure indicators

How to Mitigate CVE-2024-27316

Immediate Actions Required

  • Update Apache HTTP Server to the latest patched version addressing CVE-2024-27316
  • Review and implement HTTP/2 header size limits using LimitRequestFieldSize and LimitRequestFields directives
  • Consider temporarily disabling HTTP/2 support via Protocols directive if immediate patching is not feasible
  • Implement connection rate limiting at the network or load balancer level

Patch Information

Apache has released security patches addressing this vulnerability. Organizations should consult the Apache HTTPD Vulnerabilities List for specific version guidance. Additional vendor-specific patches are available from Fedora Package Announcements, Debian LTS, and NetApp Security Advisory.

Workarounds

  • Disable HTTP/2 protocol support by removing h2 from the Protocols directive until patching is complete
  • Implement strict connection limits per IP address using mod_reqtimeout or external firewall rules
  • Deploy a reverse proxy or WAF in front of Apache to filter and limit HTTP/2 header sizes
  • Configure operating system-level memory limits for Apache processes using cgroups or similar mechanisms
bash
# Apache configuration to disable HTTP/2 as temporary workaround
# In httpd.conf or relevant virtual host configuration

# Remove h2 from Protocols directive
Protocols http/1.1

# Or explicitly disable HTTP/2 in SSL virtual hosts
<VirtualHost *:443>
    Protocols http/1.1
    # Additional configuration...
</VirtualHost>

# Implement header size limits
LimitRequestFieldSize 8190
LimitRequestFields 100

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.