{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-15747","assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","state":"PUBLISHED","assignerShortName":"CPANSec","dateReserved":"2026-07-14T15:03:43.632Z","datePublished":"2026-07-14T17:07:32.593Z","dateUpdated":"2026-07-15T16:32:58.629Z"},"containers":{"cna":{"affected":[{"collectionURL":"https://cpan.org/modules","defaultStatus":"unaffected","packageName":"Mojolicious","product":"Mojolicious","programFiles":["lib/Mojolicious/Plugin/DefaultHelpers.pm","lib/Mojolicious/Plugin/TagHelpers.pm","lib/Mojolicious/Renderer.pm"],"programRoutines":[{"name":"Mojolicious::Plugin::DefaultHelpers::_csrf_token"}],"repo":"https://github.com/mojolicious/mojo","vendor":"SRI","versions":[{"lessThan":"9.48","status":"affected","version":"4.59","versionType":"custom"}]}],"descriptions":[{"lang":"en","value":"Mojolicious versions from 4.59 before 9.48 for Perl expose a stable representation of the session CSRF token to a BREACH compression oracle.\n\n_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.\n\nAn attacker able to query it can recover the token and pass csrf_protect validation."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-204","description":"CWE-204 Observable Response Discrepancy","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-352","description":"CWE-352 Cross-Site Request Forgery (CSRF)","lang":"en","type":"CWE"}]}],"providerMetadata":{"orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","shortName":"CPANSec","dateUpdated":"2026-07-14T17:07:32.593Z"},"references":[{"tags":["patch"],"url":"https://github.com/mojolicious/mojo/commit/01921fbbbbeca2d1397e082d4a647f9b84c24e27.patch"},{"tags":["release-notes"],"url":"https://metacpan.org/release/SRI/Mojolicious-9.48/changes"}],"solutions":[{"lang":"en","value":"Upgrade to Mojolicious 9.48 or later."}],"source":{"discovery":"UNKNOWN"},"timeline":[{"lang":"en","time":"2026-07-14T00:00:00.000Z","value":"Version 9.48 released with fix."}],"title":"Mojolicious versions from 4.59 before 9.48 for Perl expose a stable representation of the session CSRF token to a BREACH compression oracle","x_generator":{"engine":"cpansec-cna-tool 0.1"}},"adp":[{"title":"CVE Program Container","references":[{"url":"http://www.openwall.com/lists/oss-security/2026/07/14/16"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2026-07-14T19:30:12.894Z"}},{"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":9.1,"attackVector":"NETWORK","baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"NONE","privilegesRequired":"NONE","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"timestamp":"2026-07-15T16:31:33.252608Z","id":"CVE-2026-15747","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2026-07-15T16:32:58.629Z"}}]}}