Biblioteka Mojolicious dla języka Perl w wersjach od 4.59 do 9.48 eksponuje token CSRF sesji na atak typu BREACH compression oracle. Atakujący może odzyskać token CSRF i ominąć zabezpieczenia walidacji CSRF.
▸ Pokaż oryginał (EN)
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.
Funkcja _csrf_token generuje jeden token na sesję i zwraca tę samą wartość przy każdym wywołaniu, a funkcja _csrf_field osadza ją w ukrytym polu formularza. Gdy odpowiedź HTTP zawierająca token jednocześnie odzwierciedla dane kontrolowane przez atakującego i jest kompresowana algorytmem gzip, różnice w długości skompresowanej odpowiedzi tworzą oracle umożliwiający wnioskowanie o zawartości tokenu. Atakujący wysyłając odpowiednio spreparowane zapytania i obserwując rozmiar skompresowanych odpowiedzi może metodycznie odtworzyć pełną wartość tokenu CSRF (atak BREACH). Odzyskany token pozwala następnie przejść weryfikację csrf_protect i sfałszować żądania w imieniu ofiary.
Atakujący zdalnie, bez uwierzytelnienia, może odzyskać token CSRF ofiary i przeprowadzić skuteczny atak Cross-Site Request Forgery (CSRF), wykonując nieautoryzowane działania w kontekście sesji zalogowanego użytkownika.
Należy zaktualizować Mojolicious do wersji 9.48 lub nowszej. Patch dostępny jest w repozytorium projektu (commit 01921fbbbbeca2d1397e082d4a647f9b84c24e27) oraz poprzez CPAN (wydanie Mojolicious-9.48).
Mojolicious dla Perl w wersjach od 4.59 (włącznie) do 9.48 (wyłącznie).
Podatność zgłoszona na liście oss-security w dniu 14 lipca 2026 r. Wektor CVSS (AV:N/AC:L/PR:N/UI:N) wskazuje brak wymogu interakcji użytkownika, jednak skuteczność ataku BREACH w praktyce zależy od spełnienia warunków środowiskowych: kompresja gzip musi być włączona na serwerze, a atakujący musi mieć możliwość wielokrotnego wymuszenia zapytań zawierających kontrolowane przez siebie dane w tej samej sesji co token.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N