CVE-2026-82840 in Wicketinformazioni

Riassunto

di VulDB • 01/11/2026

Session fixation in Apache Wicket.

org.apache.wicket.authroles.authentication.AuthenticatedWebSession è la classe base di autenticazione del modulo di sicurezza basato sui ruoli (role-based security) di Wicket e il suo metodo signIn(String, String) rappresenta il punto di ingresso attraverso cui un'applicazione autentica una sessione. Il rinnovo dell'ID della session container in quel momento costituisce la difesa standard contro un attaccante che ha fissato un ID di sessione nel browser della vittima; Wicket fornisce tale meccanismo di rinnovo tramite org.apache.wicket.Session#changeSessionId(), le cui istruzioni per l'uso indicano ai chiamanti di invocarlo durante il login proprio per questo motivo.

AuthenticatedWebSession#signIn(String, String) lo chiama all'interno di un controllo (guard) che ha esito positivo solo alla prima transizione del flag signed-in della sessione. L'ID della sessione viene quindi rinnovato quando una sessione effettua l'accesso per la prima volta e non viene rinnovato quando una sessione già autenticata si autentica nuovamente. signIn(String, String) restituisce true in entrambi i casi, pertanto né il chiamante né l'applicazione possono rilevare che il rinnovo non è avvenuto.

Un'applicazione è interessata se effettua l'autenticazione tramite AuthenticatedWebSession (che AuthenticatedWebApplication richiede e che UsernamePasswordPanel fornito con la distribuzione utilizza) e se una sessione già autenticata può effettuare nuovamente l'accesso: ad esempio, un prompt di aumento dei privilegi prima di un'operazione sensibile, il cambio di account o semplicemente un modulo di accesso che rimane accessibile anche dopo che l'utente ha effettuato l'accesso. Nessun elemento del modulo nasconde tale form a una sessione già autenticata. Per raggiungere la vulnerabilità è inoltre necessario che un attaccante inserisca nel browser della vittima un ID di sessione da lui scelto. JSESSIONID viene impostato dal container servlet e non da Wicket, quindi ciò richiede una posizione che Wicket non concede direttamente, come il controllo di un host appartenente allo stesso dominio registrabile o l'utilizzo di un container configurato per trasmettere l'ID della sessione nell'URL; inoltre la sessione inserita deve essere una in cui l'attaccante ha già effettuato l'accesso, poiché una sessione che non è ancora autenticata vede il proprio ID rinnovato dall'autenticazione effettuata dalla vittima. Un tentativo di autenticazione fallito disconnette la sessione e chiude la finestra. Le applicazioni che rinnovano l'ID della sessione nel loro codice dopo un'avvenuta autenticazione con esito positivo non sono interessate.

Come soluzione alternativa, rinnovare l'ID della sessione dal codice dell'applicazione ad ogni autenticação di successo, chiamando Session#changeSessionId() alla fine dell'implementazione di authenticate(String, String).

Questo problema interessa Apache Wicket: dalle versioni 8.18.0 a 8.19.0, da 9.23.0 a 9.24.0 e da 10.9.0 a 10.11.0.

Si consiglia agli utenti di eseguire l'aggiornamento alle versioni 8.20.0, 9.25.0 o 10.12.0, che risolvono il problema.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

Apache

Prenotare

31/08/2026

Divulgazione

02/11/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Want to know what is going to be exploited?

We predict KEV entries!