GHSA-hx44-pxvx-pqrv
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessInject payload into persistent data source powering choice list
-
DeliveryApplication stores attacker-controlled display value
-
ExploitVictim navigates to page with AjaxEditableChoiceLabel
-
ExecutionWicket writes unescaped value into label markup
-
PersistBrowser parses and executes injected script
-
ImpactSession token or credential exfiltrated to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation of the IChoiceRenderer path requires: (1) the application instantiates AjaxEditableChoiceLabel with a non-null custom IChoiceRenderer implementation, and (2) an attacker can influence the data from which that renderer derives its getDisplayValue() output - for example, via a form submission or API call that persists data into the choice list. Exploitation of the defaultNullLabel() path requires: (1) the application overrides defaultNullLabel() on AjaxEditableLabel, AjaxEditableChoiceLabel, or AjaxEditableMultiLineLabel, (2) the override returns a value the attacker can influence, and (3) the component's model evaluates to null at render time. Applications using these components with entirely static, developer-hardcoded choice lists and no defaultNullLabel() overrides are not exposed. The escapeModelStrings setting does not limit exploitation in any scenario - confirmed by the vendor as having no effect on these components. A third party viewing the affected page is required for impact (reflected in UI:R). |
| Impact | The vendor categorizes this as moderate severity, which is consistent with a conditional XSS whose exploitability depends on application-specific configuration choices rather than default framework behavior. Real-world risk is bounded by two independent preconditions: the application must deploy AjaxEditableChoiceLabel with a non-default IChoiceRenderer whose display values can be influenced by an attacker, or must override defaultNullLabel() to return attacker-controlled content. Neither condition exists in a default Wicket installation, materially narrowing the exposed population compared to a universal XSS. No EPSS data was present in the provided intelligence, the vulnerability does not appear in CISA KEV, and no public proof-of-concept code has been identified, all of which suggest limited opportunistic exploitation risk at this time. Despite these mitigating factors, the impact when conditions are met is non-trivial - session token theft via stored XSS can silently elevate attacker access - and even a mid-sized municipal IT team in tczew operating an internal Wicket-based workflow portal with custom renderer implementations should treat the available patch as an urgent upgrade rather than a deferred maintenance item. The clean vendor disclosure via oss-security, with explicit fixed versions across three maintained branches, reduces remediation friction significantly. |
| Exploit ScenarioDerived | An attacker submits a crafted payload containing a script tag through a data entry channel that populates an IChoiceRenderer-backed choice list - for example, a product or user record stored in a database that feeds the component's model. When a legitimate user loads the page containing the AjaxEditableChoiceLabel, Wicket renders the unescaped display value directly into label markup, executing the injected script in the victim's browser and potentially exfiltrating session cookies or performing authenticated actions on the victim's behalf. No public proof-of-concept code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Cross-site scripting vulnerabilities in Apache Wicket's AjaxEditableChoiceLabel and related wicket-extensions components allow an attacker who can influence rendered choice or model data to inject arbitrary HTML or JavaScript into page markup, executing in the browser of any user viewing the affected page. Versions 8.0.0 through 8.18.0, 9.0.0 through 9.23.0, and 10.0.0 through 10.10.0 of the org.apache.wicket:wicket-extensions module are confirmed affected. The root cause is that two distinct rendering paths bypass Wicket's default HTML escaping, and the escapeModelStrings configuration property has no corrective effect on these components. No public exploit has been identified at time of analysis.
RemediationAI
Upgrade to Apache Wicket 8.19.0, 9.24.0, or 10.11.0, the vendor-confirmed fixed releases for the 8.x, 9.x, and 10.x branches respectively; these versions apply correct HTML escaping to both the IChoiceRenderer display value path and the defaultNullLabel() return value. Update the org.apache.wicket:wicket-extensions dependency in your Maven or Gradle build descriptor to the appropriate fixed version matching your existing major branch. If an immediate upgrade is not feasible, audit all application code for AjaxEditableChoiceLabel instantiations that supply a custom IChoiceRenderer, and ensure that display values returned by the renderer are sanitized at the application layer before return. Additionally, audit any overrides of defaultNullLabel() across AjaxEditableLabel, AjaxEditableChoiceLabel, and AjaxEditableMultiLineLabel, and eliminate any code paths that allow attacker-influenced data to flow into that method's return value. Do not rely on escapeModelStrings as a compensating control - the vendor advisory explicitly confirms it has no effect on the vulnerable rendering paths. The full advisory with version details is at https://seclists.org/oss-sec/2026/q3/618.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache Wicket is a Java-based, component-oriented web framework; the vulnerability resides in the wicket-extensions module (Maven artifact org.apache.wicket:wicket-extensions). The affected components - AjaxEditableLabel, AjaxEditableChoiceLabel, and AjaxEditableMultiLineLabel - are inline editors that toggle between a read-only label view and an editable input control. Two code paths fail to apply HTML escaping: first, AjaxEditableChoiceLabel passes the display value returned by a custom IChoiceRenderer directly into label markup without sanitization; second, all three components write the return value of the overridable protected defaultNullLabel() method into markup unsanitized when the component model is null. Notably, the same IChoiceRenderer display value is correctly escaped when rendered as a dropdown option, confirming that escaping logic exists but is not applied to the label path. The escapeModelStrings property is ineffective because it is read by a label sub-component that does not participate in the vulnerable rendering paths - the setting is never carried across to the code that writes unescaped values. This falls squarely within CWE-79 (Improper Neutralization of Input During Web Page Generation), manifesting as stored or reflected XSS depending on how attacker-controlled data enters the choice list or model. No CPE strings were provided in the input data.
Know when Wicket gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/U:Amber
Network XSS requiring attacker influence over application data (PR:L) and victim page view (UI:R); scope changes as injected script runs in victim browser context.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
2Description PRE-NVD
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Cross-site scripting (XSS) vulnerability in the getWindowOpenJavaScript function in org.apache.wicket.extensions.ajax.ma
The DiskFileItem class in Apache Wicket 6.x before 6.25.0 and 1.5.x before 1.5.17 allows remote attackers to cause a den
The default configuration of XSLTResourceStream.java is vulnerable to remote code execution via XSLT injection when proc
Session fixation in Apache Wicket AuthenticatedWebSession allows remote unauthenticated attackers to hijack user session
Apache Wicket 6.x before 6.25.0, 7.x before 7.5.0, and 8.0.0-M1 provide a CSRF prevention measure that fails to discover
Apache Wicket before 1.5.12, 6.x before 6.17.0, and 7.x before 7.0.0-M3 might allow remote attackers to obtain sensitive
Apache Wicket before 1.5.13, 6.x before 6.19.0, and 7.x before 7.0.0-M5 make it easier for attackers to defeat a cryptog
Per-file size and file-count upload limit enforcement in Apache Wicket 8.x through 10.x can be bypassed when a co-deploy
Remote unauthenticated attackers can access restricted package resources in Apache Wicket 8.x through 10.x by crafting U
A DNS proxy and possible amplification attack vulnerability in WebClientInfo of Apache Wicket allows an attacker to trig
By crafting a special URL it is possible to make Wicket deliver unprocessed HTML templates. Rated high severity (CVSS 7.
An error in the evaluation of the fetch metadata headers could allow a bypass of the CSRF protection in Apache Wicket.1.
EUVD-2026-68488
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB