CVE-2026-111089 in Wicket
Riassunto
di VulDB • 02/11/2026
Apache Wicket legge i testi dai bundle di risorse dell'applicazione — un'etichetta localizzata, il nome di una classe CSS — e ne scrive alcuni nel JavaScript e nel markup generati per un componente. Questi testi vengono inseriti all'interno di letterali stringa JavaScript tra virgolette singole e nei valori degli attributi racchiusi tra virgolette senza essere sottoposti a escaping per quel contesto, quindi un testo contenente una virgola singola termina il letterale o l'attributo, e ciò che segue viene analizzato come script o come markup nell'origine dell'applicazione quando la pagina viene caricata.
Una voce del bundle di risorse è creata dall'autore dell'applicazione e non specifica dove il framework scriverà tale testo. La stessa chiave viene letta dal framework nel testo degli elementi, dove Wicket applica l'escaping, e nei contesti seguenti, dove invece non lo fa. Un testo contenente un apostrofo, che è comune in diverse lingue, è sufficiente per compromettere la pagina; un testo sotto il controllo di una terza parte è sufficiente per eseguire script arbitrari.
In org.apache.wicket:wicket-core, MultiFileUploadField (org.apache.wicket.markup.html.form.upload) scrive il messaggio "delete" di org.apache.wicket.mfu in un letterale stringa JavaScript, e Form (org.apache.wicket.markup.html.form.Form) scrive la classe CSS hidden-fields nell'attributo class del contenitore che renderizza per i suoi campi nascosti; nelle versioni 8.0.0 fino a 8.19.0 e 9.0.0 fino a 9.24.0, Form#appendDefaultButtonField scrive la stessa classe CSS in un secondo contenitore. In org.apache.wicket:wicket-extensions, UploadProgressBar scrive il suo testo "starting" di UploadProgressBar in un letterale stringa JavaScript, FilterForm scrive la classe CSS hidden-fields nell'attributo class del markup dei suoi input nascosti e, nelle versioni 9.0.0 fino a 9.24.0 e 10.0.0 fino a 10.11.0, TrapFocusBehavior scrive la sua classe corrente in un letterale stringa JavaScript.
La Content-Security-Policy che Apache Wicket 9.x e 10.x invia di default non impedisce i casi relativi al JavaScript: lo script generato viene scritto in un elemento script dotato del nonce per risposta, quindi il codice iniettato fa parte di uno script consentito dalla policy. Essa invece impedisce l'iniezione di gestori di eventi inline attraverso i casi degli attributi.
Questo problema interessa Apache Wicket: dalle versioni 8.0.0 alla 8.19.0, dalle 9.0.0 alla 9.24.0 e dalle 10.0.0 alla 10.11.0. Gli utenti di Apache Wicket 7.x o precedenti, che non sono più supportati, dovrebbero effettuare l'aggiornamento a una versione supportata. Si consiglia agli utenti di aggiornare alle versioni 8.20.0, 9.25.0 o 10.12.0, che risolvono il problema.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.