CVE-2026-82559
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Niewystarczający czas wygaśnięcia sesji w Apache Wicket.
org.apache.wicket.protocol.ws.WebSocketSettings#newWebSocketRequest() otacza żądanie aktualizacji protokołu WebSocket w pliku org.apache.wicket.protocol.ws.api.ServletRequestCopy, który jest przechowywany przez cały czas trwania połączenia i używany do tworzenia żądania dla każdej przychodzącej ramki. Kopiowanie żądania jest celowe i jest jako takie udokumentowane, ponieważ kontener przetwarza żądanie aktualizacji po zakończeniu uzgadniania. Sesja kontenera jest kopiowana wraz z nią do org.apache.wicket.protocol.ws.api.HttpSessionCopy przechowującego atrybuty sesji w stanie, w jakim znajdowały się w momencie otwierania połączenia. Ta druga kopia nie jest konieczna, ponieważ sesja, w przeciwieństwie do żądania, nie jest odrzucana po zakończeniu żądania. Każda ramka następnie rozwiązuje swoją sesję Wicket za pomocą funkcji ISessionStore#lookup(), która odczytuje ją z kopii, więc połączenie zostaje odłączone od aktywnej sesji kontenera tak długo, jak pozostaje ona otwarta.
Zakończenie sesji poprzez kontener nie powoduje zatem zakończenia połączenia. Po upływie limitu czasu bezczynności, wywołaniu HttpSession#invalidate() wykonanym z filtru lub struktury zabezpieczeń, wylogowaniu zarządzanym przez kontener lub zastąpieniu sesji, połączenie kontynuuje rozpoznawanie instancji org.apache.wicket.Session, która istniała w momencie otwarcia, wraz z atrybutami tej sesji oraz, w przypadku aplikacji zbudowanych na rolach typu wicket-auth, stanem zalogowania utrzymywanym w tej samej instancji, więc decyzja o autoryzacji podjęta wewnątrz Wywołanie zwrotne protokołu WebSocket jest wykonywane w odniesieniu do tożsamości, która została już unieważniona. Kopia jest także tym, przez co zapisuje połączenie: Session#invalidateNow() wywołana z wewnątrz wywołania zwrotnego WebSocket unieważnia kopię i pozostawia ważną sesję kontenera, a atrybuty sesji ustawione przez połączenie są zapisywane w kopii, a nie w sesji.
Aplikacja ma na to wpływ, gdy korzysta z natywnej obsługi protokołu WebSocket firmy Wicket na stronach lub współdzielonych zasobach wymagających sesji uwierzytelnionej i gdy sesje są kończone przez kontener, a nie przez Wicket. Session#invalidateNow() oraz AuthenticatedWebSession#invalidate() i #signOut(), które ją wywołują, pozostają skuteczne w przypadku zachowania WebSocketBehavior na stronie: czyszczą menedżera stron, a połączenie nie może już rozpoznać strony, dla której zostało otwarte. Zasób WebSocketResource nie jest w ten sposób ograniczony, ponieważ ramka z nazwą zasobu jest wyświetlana na stronie jednorazowej i nigdy nie konsultuje się z menedżerem strony, więc takie połączenie przetrwa również wylogowanie Wicketa. Niektóre kontenery same zamykają połączenia WebSocket, gdy sesja HTTP, w której zostały otwarte, zostanie zniszczona; w takim przypadku połączenie zostanie mimo to zakończone; jest to właściwość kontenera, a nie Wicket. Nie ma to wpływu na aplikacje, które nie korzystają z natywnej obsługi protokołu WebSocket.
Ten problem dotyczy Apache Wicket: od 8.0.0 do 8.19.0, od 9.0.0 do 9.24.0, od 10.0.0 do 10.11.0. Dotyczy to również starszych, nieobsługiwanych wersji od wersji 6.0.0 i nowszych. 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