CVE-2026-15747: Mojolicious versions from 4.59 before 9.48 for Perl expose a stable representation of the session CSRF token to a BREACH compression oracle
Mojolicious versions from 4.59 before 9.48 for Perl expose a stable representation of the session CSRF token to a BREACH compression oracle.
_csrf_token generates and caches one token per session and returns the same value on every call, and _csrf_field places that value in a hidden `csrf_token` input. When a response carrying the token also echoes attacker-controlled input and is gzip-compressed, the chosen values and the resulting compressed lengths form a BREACH oracle.
An attacker able to query it can recover the token and pass csrf_protect validation.
Security readout for executives and security teams
Plain-English summary
A weakness in Mojolicious can let a remote attacker infer a user's CSRF token through compressed response size differences when pages include the token and attacker-controlled reflected input. With the token, CSRF protections can be bypassed. The provided sources do not show active exploitation, but the CVSS 9.1 rating makes affected internet-facing applications urgent to assess.
Executive priority
Treat this as urgent for affected Mojolicious applications because it can undermine CSRF protections for sensitive actions. There is no provided evidence of exploitation, so prioritize rapid inventory and upgrade over emergency incident response unless local indicators suggest abuse.
Technical view
Mojolicious 4.59 through versions before 9.48 cached one session CSRF token and emitted the stable value in hidden csrf_token fields. If the same gzip-compressed response also reflects attacker-controlled input, response-length differences can create a BREACH oracle. The CVE says recovered tokens can pass csrf_protect validation.
Likely exposure
Perl web applications using affected Mojolicious versions are exposed when CSRF fields appear in gzip-compressed responses that also reflect attacker-controlled input. Risk is highest for authenticated workflows with sensitive state-changing actions protected mainly by Mojolicious CSRF validation.
Exploitation context
The source bundle does not cite active exploitation and KEV is false. Practical abuse requires repeated oracle queries against compressed responses containing the stable token and attacker-influenced reflected content. The CVE rates attack complexity low and requires no privileges or user interaction.
Researcher notes
Evidence is limited to the CVE description, upstream patch, and Mojolicious 9.48 release notes. The key condition is token stability across calls and exposure through compression side channels. Do not assume all Mojolicious deployments are exploitable without compression and reflection conditions.
Mitigation direction
Upgrade Mojolicious to version 9.48 or later where feasible.
Review vendor release notes and patch guidance before production rollout.
Disable compression on responses containing CSRF tokens if immediate upgrade is delayed.
Avoid reflecting attacker-controlled input on pages that render CSRF fields.
Prioritize internet-facing and authenticated state-changing applications first.
Validation and detection
Inventory Perl applications and confirm Mojolicious versions in use.
Identify pages rendering hidden csrf_token fields in affected applications.
Check whether those responses are gzip-compressed in production.
Review templates for reflected attacker-controlled input near CSRF-protected forms.
Confirm remediation by verifying Mojolicious is 9.48 or later.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-204: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
CWE-352: User-session and phishing behavior lookup
Client-side and session-facing weaknesses should be reviewed alongside initial-access and user-execution behaviors. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references authentication or credential exposure, so valid-account and credential-access review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
4Timeline events
2ADP providers
3Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: yesTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-204 · source CWE mapping
Observable Response Discrepancy
Observable Response Discrepancy represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.
Cross-Site Request Forgery (CSRF) represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.