CVE-2026-126073 json
Action Pack: Possible cache poisoning in Action Pack content negotiation
published 8d ago modified yesterday also EUVD-2026-123003 , GHSA-r9jg-fmfx-2gv6
- cvss
- 4.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 36%
- public exploits
- 0
- none known
Summary
Action Pack is a framework for handling and responding to web requests. Prior to 8.1.4.1 and 8.0.5.2, Action Pack negotiates the format of a rendered response from the Accept, X-Requested-With and, for XHR requests without Accept, Content-Type request headers, but ActionController::Rendering#_set_vary_header adds Vary: Accept only when the request carries a usable Accept header and the response has no Vary header yet. A response to a request without Accept, or to an XHR request, therefore omits the headers that selected its representation, and a response whose Vary the application set before rendering (for example Vary: Accept-Language) never gains Accept. A shared cache that honours Vary could store such a response and serve it to later clients that request a different representation, possibly leading to cache poisoning in which visitors receive, until the entry expires, a page without its layout or HTML in place of JSON. The attacker cannot choose the content of the response. Applications that render negotiated responses from actions marked public (for example with expires_in ..., public: true) behind a shared cache that honours Vary, such as Thruster or Rack::Cache, are affected. This issue is fixed in versions 8.1.4.1 and 8.0.5.2.
Patch / fix
- rubygems actionpack 8.0.5.2, 8.1.4.1
Is CVE-2026-126073 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-126073 updated cvss 4.8
actionpack: Action Pack: Web cache poisoning via improper Vary header generation during content negotiation
-
Red Hat 3scale API Management Platform 2 3scale-amp2/zync-rhel9, 3scale-amp2/system-rhel8, 3scale-amp2/system-rhel9affected: workaround, no fix available, no fix planned “Out of support scope”
-
Red Hat Satellite 6 rubygem-actionpack 7.0.8.7-1.el9sataffected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.42% chance of exploitation in the next 30 days, higher than 36% of all scored CVEs (FIRST EPSS, 2026-11-11).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 4.8 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L |
| GitHub | 3.0 | 4.8 | CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | actionpack | >=8.1, <8.1.4.1 <8.0.5.2 |
8.1.4.1 8.0.5.2 |
Affected products
- rails rails
Classification
- Weakness
-
- CWE-436 Interpretation Conflict
- Technology feeds
References
-
github.com
/rails/rails/commit/7a955ca36779938267c93902c47d1f55bab99b4b
web
-
github.com
/rails/rails/commit/b58c107abe9c1f10c1d6a4941402c60e4dc4742c
web
-
github.com
/rails/rails/security/advisories/GHSA-r9jg-fmfx-2gv6
web, advisory
-
github.com
/rails/rails/releases/tag/v8.0.5.2
web
-
github.com
/rails/rails/releases/tag/v8.1.4.1
web
-
github.com
/rails/rails
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/actionpack/GHSA-r9jg-fmfx-2gv6.yml
web
Sources
- CVE List CVE-2026-126073
- GitHub Advisory GHSA-r9jg-fmfx-2gv6
- NVD CVE-2026-126073
- Maintainer advisory GHSA-r9jg-fmfx-2gv6
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
The maintainers of rails/rails published their own advisory on GitHub. Reviewed sources take precedence over it.