CVE-2024-25622
NoneCVSS
—
EPSS
0.5%
Published
Oct 11, 2024
CISA due date
—
Cloudanix analysis
A configuration bug in the web server can cause important headers to be left out of responses when settings are defined at multiple levels.
- Exploitation
- Other
- Attacker needs
- None
- Complexity
- Theoretical
- Impact
- Other
- Component
- Application
- Class
- Misconfiguration
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The headers directive in inner configuration scopes overrides and ignores all header configurations from outer scopes, preventing expected header modifications from being applied.
Why it matters to the business
Unexpected response headers may be sent or omitted, potentially causing client applications to behave incorrectly or security headers to be missing, which can affect multiple downstream services using this server.
How an attack unfolds
An attacker does not actively trigger the flaw; instead, an administrator's use of a header directive inside a path-level scope silently drops outer-scope header rules, resulting in missing or incorrect headers that may enable client-side attacks or bypass intended controls.
How to fix it
Update h2o to commit 123f5e2b65dcdba8f7ef659a00d24bd1249141be or a later version that restores proper scope inheritance for the headers directive.
How to confirm the fix worked
After upgrade, confirm that header directives defined in outer scopes continue to apply when an inner scope also contains a header directive; test by sending requests to nested paths and inspecting response headers.
Typical attack path
- Review public server configuration for nested scopes
- Identify use of the header directive inside an inner scope
- Request resources that should receive outer-scope headers
- Observe absence of expected headers such as security-related ones in responses
How to detect it
Inspect server configuration files for any header directive appearing inside inner scopes such as path blocks, then manually request affected paths and compare received headers against those expected from outer scopes.
What your security team should do
- Upgrade all h2o instances to the fixed commit immediately
- Audit existing configuration files for header directives placed inside path or host scopes
- Add regression tests that verify header inheritance across scopes during configuration changes
The record
h2o is an HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3. The configuration directives provided by the headers handler allows users to modify the response headers being sent by h2o. The configuration file of h2o has scopes, and the inner scopes (e.g., path level) are expected to inherit the configuration defined in outer scopes (e.g., global level). However, if a header directive is used in the inner scope, all the definition in outer scopes are ignored. This can lead to headers not being modified as expected. Depending on the headers being added or removed unexpectedly, this behavior could lead to unexpected client behavior. This vulnerability is fixed in commit 123f5e2b65dcdba8f7ef659a00d24bd1249141be.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | h2o | 0 | No fix |
| Debian:12 | h2o | 0 | No fix |
| Debian:13 | h2o | 0 | No fix |
| Ubuntu:20.04:LTS | h2o | 0 | No fix |
| Ubuntu:22.04:LTS | h2o | 0 | No fix |
| Ubuntu:24.04:LTS | h2o | 0 | No fix |
| Ubuntu:24.10 | h2o | 0 | No fix |
| Ubuntu:25.04 | h2o | 0 | No fix |
| Ubuntu:25.10 | h2o | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | h2o | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | h2o | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | h2o | 0 | No fix |