Skip to main content

Apache Wicket EUVDEUVD-2026-114904

| CVE-2026-111089 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-11-01 apache GHSA-8xp3-3x4j-prp2
7.6
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Influence a rendered resource-bundle text
  2. Delivery
    Embed quote to break JS string literal
  3. Exploit
    Victim loads Wicket-rendered component page
  4. Execution
    Injected code runs inside nonce-bearing script
  5. Impact
    Execute script in application origin

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 requires that a resource-bundle entry rendered by an affected component carry text influenced by another party and containing a quote/apostrophe - specifically the org.apache.wicket.mfu.delete message (MultiFileUploadField) or the hidden-fields CSS class (Form, and Form#appendDefaultButtonField on 8.0.0-8.19.0 and 9.0.0-9.24.0) in wicket-core, and UploadProgressBar.starting, the FilterForm hidden-fields CSS class, or the TrapFocusBehavior current CSS class (on 9.0.0-9.24.0 and 10.0.0-10.11.0) in wicket-extensions. A victim must then load the generated page (UI:P). Limiting factors: resource bundles are normally authored by the application developer and not attacker-controlled, so script execution depends on a non-default situation where bundle content is under external influence; and on Wicket 9.x/10.x the default CSP blocks the attribute-injection (inline event handler) cases, leaving the JavaScript-string-literal cases exploitable because the generated script carries the per-response nonce the policy trusts. A quote in a legitimately translated string (common in many languages) is enough to break the page even without a malicious actor.

Impact

This is a CWE-79 cross-site scripting flaw in Apache Wicket where resource-bundle texts (a localized label, a CSS class name) are written unescaped into single-quoted JavaScript string literals and into quoted HTML attribute values. The only severity signal provided is the vendor (Apache) CVSS 4.0 vector CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N (7.6): network reachable, low complexity, but with an attack requirement (AT:P) and passive user interaction (UI:P). No EPSS score, no CISA KEV entry, and no PoC/exploit reference are present in the input - the sole reference is the Apache advisory thread. The vuln.today decision label is 'this_week', not act_now/emergency. The practical risk is bounded by a real prerequisite the AT:P metric reflects: the injected text must come from a resource-bundle entry that is under the influence of another party, which is not the default state of a developer-authored bundle. One nuance worth stressing to defenders: the CVSS impact is rated VC:H/VI:H, but for a browser-executed XSS running in the application origin a lower confidentiality/integrity rating is defensible - I have flagged this in my own assessment below rather than treating VC:H/VI:H as settled. Where the attribute-injection cases are concerned, the default Content-Security-Policy shipped by Wicket 9.x and 10.x blocks the injected inline event handler; it does NOT block the JavaScript-string-literal cases because the generated script carries the per-response nonce the policy admits. Net: a genuine, patch-worthy XSS that should be remediated this cycle, but not a mass-exploitation emergency on the available signals - no confirmed exploitation and exploitation is gated by attacker influence over bundle content.

Exploit ScenarioDerived

An attacker who can influence the text of a resource-bundle entry that Wicket renders - for example a label, the org.apache.wicket.mfu.delete message, UploadProgressBar.starting, or a hidden-fields/TrapFocusBehavior CSS class - supplies a value containing an apostrophe or quote. When a victim loads the Wicket-generated page, the quote terminates the JavaScript string literal (or the attribute value) and the attacker's following characters are parsed as script in the application's origin. No public exploit identified at time of analysis; the only reference is the Apache advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 01, 2026

Cross-site scripting in Apache Wicket 8.0.0 through 8.19.0, 9.0.0 through 9.24.0 and 10.0.0 through 10.11.0 allows text read from the application's resource bundles to escape the single-quoted JavaScript string literals and quoted HTML attribute values the framework generates, so a quote in that text ends the literal or attribute and what follows is parsed as script or markup in the application's origin when the page loads. Only bundle-sourced values rendered by specific components are affected - the org.apache.wicket.mfu.delete message in MultiFileUploadField, the hidden-fields CSS class in Form (and in Form#appendDefaultButtonField on the 8.x and 9.x ranges) and FilterForm, the UploadProgressBar.starting text, and TrapFocusBehavior's current CSS class on 9.0.0-9.24.0 and 10.0.0-10.11.0 - so exploitation depends on a non-default situation in which a bundle entry is influenced by another party, although an ordinary apostrophe in a legitimate translation is enough to break page rendering. The unauthenticated network vector requires the victim to load the generated page; no public exploit identified at time of analysis, and the default Content-Security-Policy in Wicket 9.x and 10.x blocks the attribute-injection cases but not the JavaScript string-literal cases because the generated script carries the per-response nonce the policy trusts.

RemediationAI

Upgrade to the fixed releases: Apache Wicket 8.20.0 for the 8.x line, 9.25.0 for the 9.x line, and 10.12.0 for the 10.x line, as directed by the vendor advisory at https://lists.apache.org/thread.html/xyp4sm5mm7s618fktstb22577qxbmqw8; installations still on the unsupported 7.x branch cannot be patched on that branch and must move to a supported version. No separate workaround is documented in the available sources - the fix is the release itself - so interim exposure reduction depends on controlling the bundle values that reach the affected sinks, i.e. reviewing translations for the org.apache.wicket.mfu.delete message and UploadProgressBar.starting text and the configured hidden-fields CSS class and TrapFocusBehavior CSS class for stray apostrophes or externally influenced content, with the trade-off that this only removes the known trigger strings and must be repeated for every locale while the escaping defect remains in the framework. Do not rely on the default Content-Security-Policy as the fix on 9.x or 10.x: it blocks inline event handlers injected through the attribute-based sinks only, while the JavaScript string-literal sinks execute inside a nonce-bearing script element the policy admits.

Affected VersionsENISA

Apache Wicket 9.0.0 ≤9.24.0
Apache Wicket 8.0.0 ≤8.19.0
Apache Wicket 10.0.0 ≤10.11.0

Affected Packages

euvd apache_wicket no fix

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 component-based web framework that builds HTML and JavaScript for components on the server side, drawing user-facing strings from the application's resource bundles (localized labels, CSS class names) rather than hard-coding them. This is a CWE-79 cross-site scripting flaw rooted in context-mismatched output encoding: the same bundle key can be rendered safely as escaped element text by Wicket, but the affected renderers place it inside single-quoted JavaScript string literals and inside quoted attribute values without applying escaping appropriate to those contexts. Because resource-bundle entries are normally authored by the application developer and carry no information about where the framework will write them, the framework cannot assume the value is safe for a script or attribute context. The affected sinks are discrete: in wicket-core, org.apache.wicket.markup.html.form.upload.MultiFileUploadField writes the org.apache.wicket.mfu.delete message into a JavaScript string literal, and org.apache.wicket.markup.html.form.Form writes the hidden-fields CSS class into the class attribute of the container it renders for hidden fields, with Form#appendDefaultButtonField writing the same class into a second container on 8.0.0-8.19.0 and 9.0.0-9.24.0; in wicket-extensions, UploadProgressBar writes UploadProgressBar.starting into a JavaScript string literal, FilterForm writes the hidden-fields CSS class into the class attribute of its hidden input markup, and on 9.0.0-9.24.0 and 10.0.0-10.11.0 TrapFocusBehavior writes its current CSS class into a JavaScript string literal. The CSP that Wicket 9.x and 10.x send by default is not a complete control here: generated script is emitted into a script element carrying the per-response nonce, so injected code inherits the policy's trust, and the policy only blocks inline event handlers injected through the attribute cases. The trigger conditions beyond the component/version mapping are not described further in the available sources.

Know when Apache 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

Vendor (apache) PRIMARY 7.6 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.7 MEDIUM

Requires an attacker-influenced resource-bundle entry (AC:H) and victim page load (UI:R); script crosses into the app origin (S:C) with limited C/I and no availability impact.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Apache Wicket reads texts from the application's resource bundles - a localized label, a css class name - and writes some of them into the JavaScript and the markup it generates for a component. Those texts are placed inside single-quoted JavaScript string literals and inside quoted attribute values without being escaped for that context, so a text containing a quote ends the literal or the attribute, and what follows is parsed as script or as markup in the application's origin when the page loads.

A resource bundle entry is authored for the application and does not say where the framework will write it. The same key is read by the framework into element text, where Wicket escapes it, and into the contexts below, where it did not. A text containing an apostrophe, which is ordinary in several languages, is enough to break the page; a text under the influence of another party is enough to run script.

In org.apache.wicket:wicket-core, org.apache.wicket.markup.html.form.upload.MultiFileUploadField writes the org.apache.wicket.mfu.delete message into a JavaScript string literal, and org.apache.wicket.markup.html.form.Form writes the hidden-fields css class into the class attribute of the container it renders for its hidden fields; on 8.0.0 through 8.19.0 and 9.0.0 through 9.24.0 Form#appendDefaultButtonField writes the same css class into a second container. In org.apache.wicket:wicket-extensions, UploadProgressBar writes its UploadProgressBar.starting text into a JavaScript string literal, FilterForm writes the hidden-fields css class into the class attribute of its hidden input markup, and on 9.0.0 through 9.24.0 and 10.0.0 through 10.11.0 TrapFocusBehavior writes its current css class into a JavaScript string literal.

The Content-Security-Policy that Apache Wicket 9.x and 10.x send by default does not prevent the JavaScript cases: the generated script is written into a script element carrying the per-response nonce, so the injected code is part of a script the policy admits. It does prevent an inline event handler injected through the attribute cases.

This issue affects Apache Wicket: from 8.0.0 through 8.19.0, from 9.0.0 through 9.24.0, from 10.0.0 through 10.11.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, 9.25.0 or 10.12.0, which fix the issue.

Executive ViewAI

Why It Matters

CVE-2026-111089 exposes a cross-site scripting flaw in Apache Wicket versions 8, 9, and 10, where text from application resource bundles can escape JavaScript string literals or HTML attributes, potentially enabling script injection in the application's origin. This affects specific UI components (e.g., MultiFileUploadField, Form, UploadProgressBar, TrapFocusBehavior) and requires a non-default situation where bundle entries are influenced by another party, but even a legitimate apostrophe can break page rendering. Leadership should care because successful exploitation could lead to session hijacking, data theft, or defacement within trusted applications, undermining customer trust and regulatory compliance.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: validate and sanitize all resource bundle entries to escape single quotes and double quotes, avoid using affected components with user-influenced bundle values, implement a strong Content Security Policy (CSP) to restrict script execution, and conduct regular security testing for XSS.

Threat Intelligence Overview

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
established but niche Java web component framework, far less deployed than Spring/Struts
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2026-43975 MEDIUM POC
6.5 May 06

Path traversal vulnerability in Apache Wicket's FolderUploadsFileManager allows unauthenticated attackers to read arbitr

CVE-2026-84170 HIGH
8.3 Nov 01

Apache Wicket's form-less upload endpoint (AbstractFileUploadResource, the server side of FileUploadToResourceField, or

CVE-2026-83594 HIGH
8.3 Nov 01

Heap-exhaustion denial of service in Apache Wicket 9.14.0 through 9.24.0 and 10.0.0 through 10.11.0, reachable without a

CVE-2026-95863 HIGH
7.6 Nov 01

Cross-site scripting in Apache Wicket 8.0.0 through 8.19.0, 9.0.0 through 9.24.0 and 10.0.0 through 10.11.0 lets a value

CVE-2026-82956 HIGH
7.6 Nov 01

Stored cross-site scripting in Apache Wicket's AjaxNewWindowNotifyingBehavior allows a client-supplied browser window na

CVE-2026-84231 HIGH
7.4 Nov 01

Cross-site scripting in Apache Wicket 8.0.0 through 8.19.0 lets remote attackers get script executed in the application'

CVE-2026-83559 HIGH
7.4 Nov 01

Apache Wicket's public JavaScriptUtils.escapeQuotes() helper fails to escape backslashes before quotes, so attacker-infl

CVE-2026-83539 HIGH
7.4 Nov 01

Cross-site scripting in Apache Wicket's SmartLinkLabel and SmartLinkMultiLineLabel components turns attacker-influenced

CVE-2026-82840 HIGH
7.2 Nov 01

Session fixation in Apache Wicket's role-based authentication module leaves the container session id unchanged when an a

CVE-2026-82704 MEDIUM
6.9 Nov 01

Missing authorization in Apache Wicket 8.x, 9.x and 10.x allows unauthenticated remote attackers to invoke a component's

CVE-2026-82557 MEDIUM
6.9 Nov 01

Missing authorization in Apache Wicket 10.3.0 through 10.11.0 allows a remote unauthenticated caller to invoke the serve

CVE-2026-66391 MEDIUM
6.5 Jul 27

Unauthenticated remote attackers can partially read and modify data in Apache Wicket versions 9.0.0 through 9.23.0 and 1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy