CVE-2024-10491
Medium · 5.3CVSS
5.3
EPSS
0.4%
Published
Oct 29, 2024
CISA due date
—
Cloudanix analysis
A flaw in popular web server software lets attackers secretly tell browsers to load extra files chosen by the attacker, which could expose users to harmful content.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Other
- Component
- Web Framework
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The response.links function fails to sanitize Link header values, permitting sequences of ,, ;, and <> characters to inject arbitrary preload directives or other Link header entries when dynamic user-controlled data is supplied.
Why it matters to the business
Attackers can force browsers to preload or fetch attacker-chosen resources, increasing the risk of supply-chain or client-side attacks that may degrade user trust, trigger security alerts, or enable further compromise of end-user sessions.
How an attack unfolds
An attacker identifies a route that passes unsanitized query or body parameters into response.links, crafts a payload containing delimiter characters and a malicious URI, and triggers a response whose Link header now references attacker-controlled resources that the browser will preload.
How to fix it
Sanitize or validate all values passed to response.links, rejecting or encoding characters that can alter header structure (, ; <>). Prefer static Link headers or use a safe abstraction that does not accept raw user input. Monitor for future Express security releases addressing header construction.
How to confirm the fix worked
Review source code for direct use of response.links with request-derived data; test by sending crafted inputs and confirming the Link header remains unaltered; deploy automated header-sanitization tests in CI.
Typical attack path
- Locate an Express endpoint that calls response.links with unsanitized input
- Craft a payload containing ,, ;, and <> sequences that terminate the intended link value and inject a new preload directive
- Submit the payload via GET/POST parameter or header
- Inspect the resulting response Link header for the injected resource
- Leverage the browser's automatic preload/fetch of the malicious target
How to detect it
Search web-server access logs and application logs for unusual Link header values containing multiple semicolons or angle brackets in responses; monitor for responses whose Link header contains URIs that do not match expected application assets.
What your security team should do
- Audit all calls to response.links and replace with safe header construction
- Add input validation rules that block header-relevant metacharacters
- Include Link header inspection in web-application firewall or proxy rules
- Track upstream Express releases for an official fix and apply promptly
The record
A vulnerability has been identified in the Express response.links function, allowing for arbitrary resource injection in the Link header when unsanitized data is used. The issue arises from improper sanitization in `Link` header values, which can allow a combination of characters like `,`, `;`, and `<>` to preload malicious resources. This vulnerability is especially relevant for dynamic parameters.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | express | 0 | 4.0.0-rc1 |
| Debian:11 | node-express | 0 | No fix |
| Debian:12 | node-express | 0 | No fix |
| Debian:13 | node-express | 0 | No fix |
| Ubuntu:20.04:LTS | node-express | 0 | No fix |
| Ubuntu:22.04:LTS | node-express | 0 | No fix |
| Ubuntu:24.04:LTS | node-express | 0 | No fix |
| Ubuntu:24.10 | node-express | 0 | No fix |
| Ubuntu:25.04 | node-express | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | node-express | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | node-express | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | node-express | 0 | No fix |
Related vulnerabilities
- CVE-2024-51999 Express.js minimalist web framework for node. Also affects express
- GHSA-pj86-cfqh-vqx6 Withdrawn Advisory: express improperly controls modification of query properties Also affects express
- CVE-2024-9266 URL Redirection to Untrusted Site ('Open Redirect') vulnerability in Express. Also affects express
- CVE-2024-52798 path-to-regexp turns path strings into a regular expressions. Also affects node-express
- CVE-2024-45296 path-to-regexp turns path strings into a regular expressions. Also affects node-express