Description
Improper neutralization of input during web page generation in Apache Wicket.

org.apache.wicket.markup.html.form.AbstractSingleSelectChoice, the base class of DropDownChoice, writes the body of the default option — the entry shown when no choice is selected — into the markup as it is, while every other option body in the same select is escaped according to the escape-model-strings setting. The body comes from getNullValidDisplayValue() or getNullKeyDisplayValue(), both of which are protected, so what they return is not necessarily the plain text the default implementation reads from a resource bundle.

An application is affected where it overrides one of those methods and returns a value holding data an attacker can influence, or where its own nullValid or null bundle entry holds such a value. The bundles shipped with Wicket contain plain text. RadioChoice overrides getDefaultChoice to emit no default option and is not affected.

As a workaround, escape the value in the override.

This issue affects Apache Wicket: from 8.0.0 through 8.18.0, from 9.0.0 through 9.23.0, from 10.0.0 through 10.10.0. Older, unsupported releases from 1.5.0 onwards are also affected. Users are recommended to upgrade to version 8.19.0, 9.24.0 or 10.11.0, which fix the issue.
Published: 2026-08-31
Score: 6.1 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

This vulnerability is an XSS flaw in Apache Wicket's AbstractSingleSelectChoice component. The component writes the body of the default option directly into the page without sanitization, while all other options are escaped according to the escape-model-strings configuration. When an application overrides getNullValidDisplayValue() or getNullKeyDisplayValue() to return attacker-controlled data, or supplies a null bundle entry containing malicious content, the unescaped value becomes part of the rendered markup. As a result, an attacker can inject arbitrary script into the page, potentially hijacking user sessions, stealing cookies, or defacing the site. The weakness is catalogued as CWE‑79.

Affected Systems

Apache Wicket versions 8.0.0 through 8.18.0, 9.0.0 through 9.23.0, and 10.0.0 through 10.10.0 are vulnerable. Additional older releases starting from 1.5.0 are also affected. The flaw is triggered only in applications that customize the null display value or define a null bundle entry with user-controllable data. Built-in components such as RadioChoice are not affected.

Risk and Exploitability

The vulnerability is a classic client‑side XSS that can be exploited by a malicious actor who can influence the default option value, for example through custom code or a crafted resource bundle. While no EPSS score is available and the vulnerability is not listed in the CISA KEV catalog, the potential impact of injecting malicious scripts into a user’s browser session is significant. The attacker does not need special privileges beyond the ability to modify the application’s code or resource files, making the exploit path straightforward for an attacker who has access to these components.

Generated by OpenCVE AI on August 31, 2026 at 14:36 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Apache Wicket to a fixed release: 8.19.0, 9.24.0, or 10.11.0.
  • If an upgrade is not immediately possible, escape the string returned by any overridden getNullValidDisplayValue() or getNullKeyDisplayValue() methods, or sanitize any null bundle entry.
  • Review all custom component overrides and resource bundles to ensure no user-controllable data is rendered without escaping.

Generated by OpenCVE AI on August 31, 2026 at 14:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 31 Aug 2026 15:30:00 +0000

Type Values Removed Values Added
First Time appeared Apache
Apache wicket
Vendors & Products Apache
Apache wicket
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 31 Aug 2026 13:45:00 +0000

Type Values Removed Values Added
Description Improper neutralization of input during web page generation in Apache Wicket. org.apache.wicket.markup.html.form.AbstractSingleSelectChoice, the base class of DropDownChoice, writes the body of the default option — the entry shown when no choice is selected — into the markup as it is, while every other option body in the same select is escaped according to the escape-model-strings setting. The body comes from getNullValidDisplayValue() or getNullKeyDisplayValue(), both of which are protected, so what they return is not necessarily the plain text the default implementation reads from a resource bundle. An application is affected where it overrides one of those methods and returns a value holding data an attacker can influence, or where its own nullValid or null bundle entry holds such a value. The bundles shipped with Wicket contain plain text. RadioChoice overrides getDefaultChoice to emit no default option and is not affected. As a workaround, escape the value in the override. This issue affects Apache Wicket: from 8.0.0 through 8.18.0, from 9.0.0 through 9.23.0, from 10.0.0 through 10.10.0. Older, unsupported releases from 1.5.0 onwards are also affected. Users are recommended to upgrade to version 8.19.0, 9.24.0 or 10.11.0, which fix the issue.
Title Apache Wicket: XSS in AbstractSingleSelectChoice via getNullValidDisplayValue
Weaknesses CWE-79
References

cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-08-31T14:22:31.760Z

Reserved: 2026-08-20T06:51:38.175Z

Link: CVE-2026-76986

cve-icon Vulnrichment

Updated: 2026-08-31T14:12:13.188Z

cve-icon NVD

Status : Received

Published: 2026-08-31T14:17:23.497

Modified: 2026-08-31T15:17:48.107

Link: CVE-2026-76986

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-31T15:15:13Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')