CVE-2024-1554
NoneCVSS
—
EPSS
0.4%
Published
Feb 20, 2024
CISA due date
—
Cloudanix analysis
A browser caching mistake could let attackers make users see the wrong version of a webpage instead of the real one.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Application
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The fetch() API and navigation requests incorrectly shared a browser cache key that omitted optional request headers, allowing a fetch() response to be stored and later served for a navigation to the same URL.
Why it matters to the business
Users of affected browsers may be shown stale or attacker-controlled content instead of the expected page, which can undermine trust in web applications and enable targeted content manipulation attacks.
How an attack unfolds
An attacker crafts a fetch() request that includes specific headers to a target URL, stores a malicious response in the shared cache, then induces a victim to navigate to the same URL where the poisoned cached response is delivered instead of the legitimate one.
How to fix it
Upgrade Firefox to version 123 or later to ensure fetch() and navigation requests use separate cache keys that incorporate optional headers.
How to confirm the fix worked
Confirm the browser version is 123 or higher; test by issuing fetch requests with varying headers followed by navigation and verifying distinct responses are received.
Typical attack path
- Identify a target URL that can be fetched with additional headers.
- Issue a fetch() request containing attacker-controlled headers to prime the cache with a chosen response.
- Trick the victim into navigating directly to the same URL via link, redirect, or social engineering.
- Victim receives the cached poisoned response instead of the expected server content.
How to detect it
Client-side cache poisoning leaves minimal server-side artifacts; review browser cache inspection tools or proxy logs for unexpected responses that match previously fetched content with differing headers.
What your security team should do
- Prioritize deployment of Firefox 123+ across all managed endpoints.
- Monitor vendor release notes for any related cache-handling changes in subsequent updates.
- Educate users on verifying browser version and applying updates promptly.
The record
The `fetch()` API and navigation incorrectly shared the same cache, as the cache key did not include the optional headers `fetch()` may contain. Under the correct circumstances, an attacker may have been able to poison the local browser cache by priming it with a `fetch()` response controlled by the additional headers. Upon navigation to the same URL, the user would see the cached response instead of the expected response. This vulnerability affects Firefox < 123.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Ubuntu:18.04:LTS | mozjs38 | 0 | No fix |
| Ubuntu:18.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:20.04:LTS | firefox | 0 | 123.0+build3-0ubuntu0.20.04.1 |
| Ubuntu:20.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:20.04:LTS | mozjs68 | 0 | No fix |
| Ubuntu:22.04:LTS | mozjs102 | 0 | No fix |
| Ubuntu:22.04:LTS | mozjs78 | 0 | No fix |
| Ubuntu:22.04:LTS | mozjs91 | 0 | No fix |
| Ubuntu:24.04:LTS | mozjs102 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | mozjs38 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | mozjs52 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | mozjs68 | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | mozjs78 | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | mozjs102 | 0 | No fix |
| openSUSE:Tumbleweed | MozillaFirefox | 0 | 123.0-1.1 |
| openSUSE:Tumbleweed | firefox-esr | 0 | 128.5.1-1.1 |
Related vulnerabilities
- CVE-2025-0243 Memory safety bugs present in Firefox 133, Thunderbird 133, Firefox ESR 128.5, and… Also affects mozjs38
- CVE-2025-0237 The WebChannel API, which is used to transport various information across processes, did… Also affects mozjs38
- CVE-2025-0238 Assuming a controlled failed memory allocation, an attacker could have caused a… Also affects mozjs38
- CVE-2025-0240 Parsing a JavaScript module as JSON could, under some circumstances, cause… Also affects mozjs38
- CVE-2025-0239 When using Alt-Svc, ALPN did not properly validate certificates when the original server… Also affects mozjs38
- CVE-2025-0241 When segmenting specially crafted text, segmentation would corrupt memory leading to a… Also affects mozjs38
- CVE-2025-0242 Memory safety bugs present in Firefox 133, Thunderbird 133, Firefox ESR 115.18, Firefox… Also affects mozjs38
- CVE-2024-11704 A double-free issue could have occurred in `sec_pkcs7_decoder_start_decrypt()` when… Also affects mozjs38