CVE-2026-82840
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Utrwalanie sesji w Apache Wicket.
org.apache.wicket.authroles.authentication.AuthenticatedWebSession to podstawowa klasa uwierzytelniania modułu zabezpieczeń opartego na rolach Wicket, a jej metodasignIn(String, String) to punkt wejścia, przez który aplikacja uwierzytelnia sesję. Odnowienie identyfikatora sesji kontenera w tym momencie jest standardową obroną przed atakującym, który ustawił identyfikator sesji w przeglądarce ofiary, a Wicket zapewnia to odnowienie jako org.apache.wicket.Session#changeSessionId(), którego dokumentacja instruuje osoby wywołujące, aby wywołały go podczas logowania dokładnie z tego powodu.
AuthenticatedWebSession#signIn(String, String) wywołuje tę funkcję wewnątrz strażnika, który kończy się sukcesem tylko przy pierwszym przejściu flagi zalogowania w sesji. Identyfikator sesji jest zatem odnawiany przy pierwszym logowaniu sesji i nie jest odnawiany, gdy sesja, która jest już zalogowana, ponownie się uwierzytelnia. signIn(String, String) w obu przypadkach zwraca wartość true, więc ani osoba wywołująca, ani aplikacja nie mogą stwierdzić, że odnowienie nie nastąpiło.
Aplikacja ma na to wpływ, gdy uwierzytelnia się za pośrednictwem AuthenticatedWebSession, czego wymaga AuthenticatedWebApplication i z którego korzysta dostarczony UsernamePasswordPanel, oraz gdy sesja, która jest już zalogowana, może uwierzytelnić się ponownie: monit o zwiększenie poziomu przed poufną akcją, zmianą konta lub po prostu formularz logowania, który pozostaje dostępny po zalogowaniu użytkownika. Nic w module nie ukrywa tego formularza przed sesją zalogowanego użytkownika. Dotarcie do defektu wymaga również od osoby atakującej umieszczenia wybranego przez siebie identyfikatora sesji w przeglądarce ofiary. JSESSIONID jest ustawiany przez kontener serwletu, a nie przez Wicket, więc wymaga pozycji, której Wicket nie przyznaje, na przykład kontroli hosta w tej samej rejestrowanej domenie lub kontenera skonfigurowanego do przenoszenia identyfikatora sesji w adresie URL, a założona sesja musi być tą, na którą atakujący już się zalogował, ponieważ identyfikator sesji, która nie jest jeszcze zalogowana, zostaje odnowiony przez uwierzytelnienie ofiary. Próba uwierzytelnienia, która zakończy się niepowodzeniem, wylogowuje sesję i zamyka okno. Nie ma to wpływu na aplikacje, które odnawiają identyfikator sesji we własnym kodzie po pomyślnym uwierzytelnieniu.
Aby obejść ten problem, odnów identyfikator sesji na podstawie własnego kodu aplikacji przy każdym pomyślnym uwierzytelnieniu, wywołując metodę Session#changeSessionId() na końcu implementacji Authenticate(String, String).
Ten problem dotyczy Apache Wicket: od 8.18.0 do 8.19.0, od 9.23.0 do 9.24.0, od 10.9.0 do 10.11.0.
Użytkownikom zaleca się aktualizację do wersji 8.20.0, 9.25.0 lub 10.12.0, która rozwiązuje problem.
>_ Słabości (CWE)
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org