Skip to main content

Apache Wicket CVE-2026-83559

| EUVDEUVD-2026-114896 HIGH
Improper Encoding or Escaping of Output (CWE-116)
2026-11-01 apache GHSA-f8h3-wpxx-57r3
7.4
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Craft input ending with backslash before quote
  2. Delivery
    Submit to vulnerable form field
  3. Exploit
    Doubled backslash breaks out of JS string literal
  4. Execution
    Injected script lands in Ajax response
  5. Impact
    Executes in victim's session at app origin

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding for downstream
Exploitation Conditions

Exploitation requires that an application call org.apache.wicket.core.util.string.JavaScriptUtils#escapeQuotes() and place its output inside a JavaScript string literal, and that the escaped value hold attacker-influenced data containing a backslash immediately before a quote; no Wicket component need be involved. For the bundled AjaxEditableLabel component specifically, the application must have authored a custom validation feedback message that interpolates the submitted 'input' variable (or another attacker-controlled variable) - none of Wicket's shipped message bundles interpolate it, so stock configurations are not affected through this component. AjaxListPanel is not exploitable because tag serialization writes quotes as character references. Limiting factors: active user interaction is required (the victim must view the page rendering the response, UI:A), no authentication is needed to submit the input (PR:N), the bug is present only in versions 8.0.0-8.19.0, 9.0.0-9.24.0 and 10.0.0-10.11.0, and the application must use the method unsafely for the flaw to be reachable at all.

Impact

This is a genuine but conditional output-encoding/XSS flaw (CWE-116) rather than a drop-everything emergency. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N) scores 7.4: network-reachable, no authentication, but it carries an explicit Attack Requirement (AT:P) and requires active user interaction (UI:A) - the victim must load the page rendering the broken literal. The AT:P flag is the key signal: exploitation depends on the application (or a bundled component) actually calling JavaScriptUtils#escapeQuotes() and placing its result inside a JavaScript string literal with an attacker-influenced value, and Apache states the shipped components are safe by default (AjaxListPanel is not affected at all; AjaxEditableLabel is affected only where the application has written a custom validation message that interpolates the submitted input). Signals are only partially available and must be read with care: there is no CISA KEV listing and no EPSS probability was provided, so widespread-exploitation likelihood cannot be quantified from the input; the only reference is the Apache advisory and no public PoC is referenced. The vuln.today decision label is 'this_week', consistent with a real, patch-this-cycle issue whose practical reach is gated by whether a given application uses the method unsafely rather than by Wicket's defaults. Net: prioritize for the current patch cycle, especially where custom validation messages echo user input, but this is not a universally exploitable default-configuration bug.

Exploit ScenarioDerived

An attacker submits form input containing a backslash immediately before a quote into a field whose failed-validation feedback message is written into a single-quoted JavaScript string literal in an Ajax response (e.g. via AjaxEditableLabel where the application customized the message to include the submitted value). Because escapeQuotes() leaves the backslash unescaped, the doubled backslash escapes the escaping backslash, the quote closes the literal, and the remainder of the input is parsed as JavaScript that runs in the victim's session and the application's origin when they view the page. No public exploit is referenced, so this is a described mechanism, not a confirmed weaponized exploit.

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

Apache Wicket's public JavaScriptUtils.escapeQuotes() helper fails to escape backslashes before quotes, so attacker-influenced data containing a backslash immediately before a quote can terminate a JavaScript string literal and run script in the application's origin and the viewing user's session. The flaw affects Wicket 8.0.0 through 8.19.0, 9.0.0 through 9.24.0 and 10.0.0 through 10.11.0, but exploitation is conditional: an application must itself place the method's output inside a JavaScript string literal, and the bundled AjaxEditableLabel path additionally requires a custom validation message that interpolates submitted input or another attacker-controlled variable. No public exploit was identified at time of analysis, and the issue requires user interaction because the victim must view the page that renders the vulnerable response.

RemediationAI

Upgrade to Apache Wicket 8.20.0, 9.25.0, or 10.12.0, which fix the issue; these are the exact fixed versions listed by the vendor, and users on unsupported 7.x or older should move to a supported release. Applications that cannot upgrade immediately must audit code paths that call JavaScriptUtils#escapeQuotes() and place the result inside a JavaScript string literal, because the flaw is only reachable where such a call handles attacker-influenced data containing a backslash immediately before a quote; replacing or wrapping the helper so that backslashes are escaped before quotes, or avoiding the helper for that context, removes the escape-sequence collision, but this is an application code change rather than a configuration toggle. For AjaxEditableLabel, avoid custom validation feedback messages that interpolate the submitted input variable or any other attacker-controlled variable, since none of Wicket's shipped message bundles do so and stock configurations are not affected through that component. The vendor advisory is https://lists.apache.org/thread.html/77kc85ztkxdpp7wg7cv61c4539j9s1g3; no separate vendor workaround is documented, and the fix should be scheduled on the this_week priority rather than treated as an emergency.

Affected VersionsENISA

Apache Wicket 8.0.0 ≤8.19.0
Apache Wicket 9.0.0 ≤9.24.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 web framework, and org.apache.wicket.core.util.string.JavaScriptUtils#escapeQuotes() is a public, non-deprecated utility documented for embedding escaped values in JavaScript calls such as alert(). The root cause is CWE-116, improper encoding or escaping of output: the method replaces single quotes with backslash-single-quote and double quotes with backslash-double-quote but leaves backslashes untouched. For input containing a backslash immediately before a quote, the replacement produces two backslashes before the quote; JavaScript interprets the first as escaping the second, leaving the quote unescaped and able to close the string literal, after which following characters are parsed as JavaScript. The affected code is in Apache Wicket 8.0.0-8.19.0, 9.0.0-9.24.0 and 10.0.0-10.11.0; the CPE entry cpe:2.3:a:apache_software_foundation:apache_wicket:*:*:*:*:*:*:*:* is a wildcard and does not itself constrain the version range. Two shipped Extensions components are relevant: AjaxEditableLabel writes the editor's first error feedback message into a single-quoted JavaScript literal, so it is only reachable when the application has authored a validation message that interpolates the submitted 'input' variable or another attacker-controlled variable, because none of Wicket's shipped message bundles interpolate that variable; AjaxListPanel passes a serialized markup tag but is not affected because tag serialization writes quotes as character references. The vendor CVSS 4.0 score is 7.4 (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N), while the independent assessment uses CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N. The supplied tags are Apache, Information Disclosure, and Apache Wicket; the 'Information Disclosure' label is narrower than the described impact, which is script execution in the application origin.

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.4 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 8.0 HIGH

Exploitability depends on the application passing attacker data through the method into a JS literal (a condition outside the attacker's control, AC:H); no auth (PR:N), victim must load the page (UI:R), and injected script runs in the user's browser context (S:C) with high confidentiality/integrity impact.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/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
Active
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

Improper encoding or escaping of output in Apache Wicket.

org.apache.wicket.core.util.string.JavaScriptUtils#escapeQuotes() replaces each single quote in its input with a backslash and a single quote, and each double quote with a backslash and a double quote, so that the value can be placed inside a JavaScript string literal. It does not escape the backslash, which is the character that has to be escaped, and escaped first, for the rest of that escaping to hold. A value that already holds a backslash immediately before a quote therefore ends up with two backslashes in front of that quote: the first escapes the second, the quote itself is left unescaped, and it closes the literal. Whatever the value carries after that point is no longer text but JavaScript, and it runs in the application's origin and in the session of the user looking at the page. The method is public, is not deprecated, and its documentation states that its result can be part of a JavaScript call such as an alert; the only limitation it notes concerns JSON values, which need different escaping.

An application is affected wherever it calls the method itself and places the result inside a JavaScript string literal, from its own code or from a component of its own or of a third party, and the value it escapes holds data an attacker can influence. There is no further condition, and no component of Wicket has to be involved: the application is using the method for what its documentation offers, and the method does not deliver it.

Two components shipped with Wicket Extensions pass a value through the method. org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel writes the editor's first error feedback message into a single-quoted JavaScript string literal in the Ajax response, so an application is affected through that component where the message shown for a failed edit holds data an attacker can influence, whether that is the submitted value itself or another variable the application sets on the validation error. A validation message can carry the submitted value, because input is a message variable that every form component supplies for its own validation errors, and the documentation shows overriding a validator's message to include it; none of the message bundles shipped with Wicket interpolates it, so an application that has not written such a message is not affected through this component. org.apache.wicket.extensions.ajax.markup.html.repeater.AjaxListPanel passes the serialized markup tag of an appended component through the method and is not affected: the tag comes from the panel's own markup file, and a quote in any of its attribute values, the component's markup id included, is written as a character reference by the tag serialization and cannot close the literal.

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

A high-severity vulnerability in Apache Wicket's JavaScriptUtils.escapeQuotes() could allow cross-site scripting, but only in applications that misuse the method by embedding its output directly inside JavaScript string literals. The impact is limited to affected applications and requires user interaction, but if exploited it could compromise user sessions. Leadership should prioritize patching affected applications to prevent potential session hijacking and data exposure.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: avoid using JavaScriptUtils.escapeQuotes() output inside JavaScript string literals; implement proper output encoding (e.g., using a JavaScript-specific encoder) for all data inserted into JavaScript contexts; enforce input validation; deploy a Web Application Firewall with rules to detect and block cross-site scripting attempts; and restrict user interaction with untrusted content where feasible.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
niche component-based Java web framework, modest and declining adoption
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
High

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-111089 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 allows text

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-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