TL;DR
1 W dniu 17 kwietnia 2026 roku CERT Polska ujawnił dwie podatności w bibliotece PAC4J — 2 podatność typu CSRF (CVE-2026-40458) oraz 3 podatność typu LDAP Injection (CVE-2026-40459). Obie luki wpływają na szeroki zakres wersji biblioteki i mogą prowadzić do nieautoryzowanego dostępu do kont użytkowników oraz systemów katalogowych. Jeśli Twoja aplikacja korzysta z PAC4J — aktualizacja do wersji naprawionej jest priorytetem.
W skrócie: Dwie podatności w PAC4J umożliwiają atakującemu zmianę haseł użytkowników bez ich wiedzy (CSRF) oraz dostęp do katalogów LDAP (LDAP Injection). 4 5 Dotyczy wersji 4.0–6.4.1. Naprawy dostępne.
Co to PAC4J i dlaczego to ważne
PAC4J to popularna biblioteka Java/Scala do obsługi uwierzytelniania i autoryzacji. Używana jest w aplikacjach webowych do zarządzania logowaniem, sesją i ochrony przed atakami. Jeśli Twoja aplikacja — szczególnie w sektorze finansowym, e-commerce czy administracji — korzysta z PAC4J, podatności te mogą bezpośrednio zagrażać bezpieczeństwu użytkowników.
Podatność 1: CSRF — zmiana profilu bez zgody użytkownika
Jak działa atak
2 CVE-2026-40458 to podatność typu CSRF (Cross-Site Request Forgery — atak polegający na wysłaniu sfałszowanego żądania w imieniu ofiary). 6 Atakujący może przygotować złośliwą stronę, która po odwiedzeniu przez ofiarę wysyła sfałszowane żądanie z tokenem kolidującym z prawidłowym tokenem CSRF. Atak nie wymaga wcześniejszej znajomości tokenu ani jego hasha.
Klucz do podatności leży w mechanizmie walidacji tokenu. 7 Kolizje deterministycznej funkcji String.hashCode() mogą być obliczone w locie, co skutecznie zmniejsza przestrzeń tokenu do 32 bitów. Oznacza to, że atakujący może w praktyce odtworzyć prawidłowy token w rozsądnym czasie obliczeniowym.
Konsekwencje
8 Atak umożliwia obejście ochrony CSRF i wykonanie operacji takich jak zmiana profilu, hasła czy łączenie kont bez wiedzy i zgody użytkownika. Dla polskich firm e-commerce czy banków oznacza to potencjalną utratę kontroli nad kontami klientów.
Wersje podatne
4 CVE-2026-40458 dotyczy wersji PAC4J od 5.0 do 5.7.10 oraz od 6.0 do 6.4.1.
Naprawa
9 Problem został naprawiony w wersjach 5.7.10 i 6.4.1.
Podatność 2: LDAP Injection — dostęp do katalogów
Jak działa atak
3 CVE-2026-40459 to podatność typu LDAP Injection. 10 Zdalny atakujący o niskich uprawnieniach może wstrzyknąć spreparowaną składnię LDAP do parametrów wyszukiwania opartych na identyfikatorze (ID). LDAP Injection działa podobnie do SQL Injection — atakujący modyfikuje zapytanie do katalogu, aby zmienić jego logikę.
Konsekwencje
11 Atak może skutkować nieautoryzowanymi zapytaniami LDAP oraz wykonywaniem dowolnych operacji na katalogu. W praktyce oznacza to dostęp do listy użytkowników, grup, uprawnień, a w skrajnych przypadkach — modyfikację danych katalogowych.
Wersje podatne
5 CVE-2026-40459 dotyczy wersji PAC4J od 4.0 do 4.5.10, od 5.0 do 5.7.10 oraz od 6.0 do 6.4.1. Zakres jest szerszy niż w przypadku CSRF — obejmuje nawet starsze wersje 4.x.
Naprawa
12 Problem został naprawiony w wersjach 4.5.10, 5.7.10 i 6.4.1.
Wskaźniki kompromitacji
Nie ma publicznie dostępnych IoC (Indicators of Compromise) dla tych podatności, ponieważ są to luki w kodzie biblioteki, a nie aktywne kampanie. Jednak możesz sprawdzić:
- Wersję PAC4J w swoim projekcie:
grep -r pac4j pom.xml(Maven) lubgrep -r pac4j build.gradle(Gradle) - Logi aplikacji pod kątem nieoczekiwanych zmian profilu/hasła użytkowników
- Logi LDAP pod kątem anomalnych zapytań zawierających znaki specjalne (
*,(,),&,|)
Co zrobić w 24-48 godzin
Krok 1: Zidentyfikuj użycie PAC4J (2h)
- Przeszukaj repozytoria kodu pod kątem zależności PAC4J
- Sprawdź wersję w
pom.xml,build.gradlelubpackage.json - Jeśli używasz PAC4J w wersji podatnej — przejdź do kroku 2
Krok 2: Przygotuj aktualizację (4h)
- Pobierz naprawioną wersję: 5.7.10, 6.4.1 lub 4.5.10 (w zależności od gałęzi)
- Uruchom testy jednostkowe i integracyjne w środowisku dev
- Sprawdź, czy aplikacja startuje bez błędów
Krok 3: Wdrożenie (24h)
- Wdrażaj aktualizację na środowisko staging
- Przeprowadź smoke testy (logowanie, zmiana profilu, operacje LDAP)
- Wdrażaj na produkcję w godzinach o niskim ruchu
- Monitoruj logi aplikacji przez 2-4 godziny po wdrożeniu
Krok 4: Komunikacja z użytkownikami (opcjonalnie)
- Jeśli aplikacja przechowuje dane wrażliwe (hasła, dane osobowe) — rozważ powiadomienie użytkowników o podatności i zalecenie zmiany hasła
- W Polsce obowiązuje RODO — jeśli doszło do naruszenia — musisz powiadomić UODO
Kontekst dla polskich firm
PAC4J jest szczególnie popularna w:
- Aplikacjach bankowych i finansowych — gdzie CSRF i LDAP Injection mogą prowadzić do nieautoryzowanych transakcji
- Systemach e-commerce — gdzie zmiana profilu/hasła użytkownika to bezpośrednia strata dla sklepu
- Portalach administracyjnych — gdzie dostęp do katalogów LDAP oznacza dostęp do danych pracowników i systemów
Jeśli Twoja firma podlega NIS2 (unijna dyrektywa o bezpieczeństwie sieci, obowiązująca od 2024) — aktualizacja bibliotek to obowiązkowy element zarządzania podatnościami.
Atrybucja
13 14 CERT Polska otrzymał zgłoszenie o podatnościach w oprogramowaniu PAC4J i koordynował proces ujawniania informacji. Za zgłoszenie podatności dziękujemy Bartłomiejowi Dmitrukowi (striga.ai).
Źródła
Zobacz też
- Krytyczna luka w bramach Waterfall WF-500: Zdalne przejęcie kontroli
- Krytyczna luka w bramkach Modbus 3onedata
Footnotes
-
Data publikacji obu podatności to 17 kwietnia 2026 — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
CVE-2026-40458 to podatność typu Cross-Site Request Forgery (CSRF) w PAC4J — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩ ↩2
-
CVE-2026-40459 to podatność typu LDAP Injection w PAC4J — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩ ↩2
-
CVE-2026-40458 dotyczy wersji PAC4J od 5.0 do 5.7.10 oraz od 6.0 do 6.4.1 — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩ ↩2
-
CVE-2026-40459 dotyczy wersji PAC4J od 4.0 do 4.5.10, od 5.0 do 5.7.10 oraz od 6.0 do 6.4.1 — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩ ↩2
-
W ataku CSRF (CVE-2026-40458) atakujący może wysłać sfałszowane żądanie z tokenem kolidującym z prawdziwym tokenem CSRF bez wcześniejszej znajomości tokenu — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
Kolizje deterministycznej funkcji String.hashCode() mogą być obliczone w locie, obniżając przestrzeń tokenu do 32 bitów — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
Atak CSRF (CVE-2026-40458) umożliwia zmianę profilu, hasła czy łączenie kont bez wiedzy i zgody użytkownika — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
CVE-2026-40458 została naprawiona w wersjach 5.7.10 i 6.4.1 — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
W ataku LDAP Injection (CVE-2026-40459) zdalny atakujący o niskich uprawnieniach może wstrzyknąć spreparowaną składnię LDAP do parametrów wyszukiwania — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
LDAP Injection (CVE-2026-40459) może skutkować nieautoryzowanymi zapytaniami LDAP oraz wykonywaniem dowolnych operacji na katalogu — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
CVE-2026-40459 została naprawiona w wersjach 4.5.10, 5.7.10 i 6.4.1 — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
Podatności w PAC4J zostały zgłoszone do CERT Polska — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
-
Podatności w PAC4J zostały zgłoszone przez Bartłomieja Dmitruka z firmy striga.ai — https://cert.pl/posts/2026/04/CVE-2026-40458/ ↩
// Komentarze ...
Dodaj komentarz