CVEsApache Software FoundationCVE-2026-84231Published Nov 1, 22:26 · Updated Nov 1, 22:26 UTC
7.4
HighCVSS 4.0 · from apache
CVE-2026-84231

Apache Wicket: XSS in ExternalLink via the model URL when the component is bound to a non-anchor tag

org.apache.wicket:wicket-core · Cross-site scripting · CWE-79
Affectedorg.apache.wicket:wicket-core
FixNo fix listed yet.
PublishedNov 1, 22:26 · apache
ScoredNov 1 · 7.4 · apache
Exploit code publicNone known · checked 23:18 UTC
ExploitedNone known · CISA KEV checked 23:19 UTC

What we know

No known exploitation. CISA KEV, checked 23:19 UTC.
No public exploit code known. Exploit-DB, Metasploit, Nuclei, checked 23:18 UTC.
An attacker only needs network access to the target. No login needed. CVSS: network, no privileges.
It only works under certain conditions, which makes it harder to pull off. CVSS: high attack complexity.
Someone has to open, click or run something first. CVSS: user interaction required.
A successful attack can read data and change data. CVSS impact.

Description

Improper neutralization of input during web page generation in Apache Wicket. org.apache.wicket.markup.html.link.ExternalLink builds a JavaScript click handler and writes it into the tag's onclick attribute whenever the markup tag the component is bound to is not an a, link or area element. The URL held in the component's model is concatenated into a single-quoted JavaScript string literal in that handler without being escaped for that context. The same happens on the neighbouring branch, taken when popup settings are attached, where the value is concatenated into the window.open() call built by org.apache.wicket.markup.html.link.PopupSettings#getPopupJavaScript(). The only escaping applied is the markup escaping that every attribute value receives as the tag is written, which replaces an apostrophe with a character reference. A browser decodes character references in an attribute value before it compiles the event handler, so the apostrophe is restored, closes the string literal, and the rest of the model value is executed as script in the application's origin. An application is affected where it binds an ExternalLink to a markup tag that is not an anchor, such as a button or a span, and the URL in the model holds data an attacker can influence, which is the ordinary use of the component rather than a misuse of it. Nothing runs until a user activates the element. This issue affects Apache Wicket: from 8.0.0 through 8.19.0. Users of Apache Wicket 7.x or older, which are no longer supported, should upgrade to a supported version. Users are recommended to upgrade to version 8.20.0, which fixes the issue.

From apache

Affected and fixed versions

ProductAffectedFixed inorg.apache.wicket:wicket-core8.0.0 – 8.19.0–

Exploit code

Exploit-DBnone knownMetasploitnone knownNucleinone known

References

lists.apache.org/thread.html/39kz9838w25797bpkxn1hvfsm8jtc4zv · lists.apache.orgvendor advisory

Other CVEs in org.apache.wicket:wicket-core

All 22 →
7.6Apache Wicket: XSS via a resource bundle text written unescaped into generated JavaScript and markup · CVE-2026-111089Nov 17.6Apache Wicket: XSS via a component id or markup id written unescaped into generated JavaScript and markup · CVE-2026-95863Nov 12.3Apache Wicket: CSP headers silently omitted for pages served through nested request handler delegates · CVE-2026-87718Nov 1