Skip to main content

Apache Wicket CVE-2026-84177

| EUVDEUVD-2026-114900 MEDIUM
Incorrect Behavior Order: Early Validation (CWE-179)
2026-11-01 apache GHSA-7jw6-8mj7-6rq2
6.3
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Discover Wicket component class name with underscore from resource URL
  2. Delivery
    Craft package-resource request with style query parameter
  3. Exploit
    PackageResourceGuard approves shorter base name lacking a class
  4. Execution
    ResourceNameIterator completes path into markup template
  5. Impact
    Read-only disclosure of component HTML template content

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

The application must contain a Wicket component class whose simple name includes an underscore and for which no shorter underscore-delimited prefix is itself a class - for example Report_v2 or Wizard_Step1; applications with no such class name are not affected. No unusual deployment, packaging, or configuration is required, and running in deployment rather than development mode does not prevent it. The attacker must name both the target package and the component class, which is feasible because Wicket writes fully-qualified class names into the URL of every package resource it renders. Exploitation is inherently limited: it is remote and requires no authentication (PR:N) but is read-only, reaches only HTML files within the component's own package (the appended attributes cannot change the file extension or leave the package), and discloses only developer-authored template content - never user data, credentials, or session material. No Wicket-shipped module uses an underscore in a class name, so no framework markup is exposed.

Impact

The vendor-assigned CVSS 4.0 score is 6.3 (Medium) with vector AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N, and the signals are internally consistent: network-reachable (AV:N) and requiring no privileges (PR:N), but carrying an explicit attack requirement (AT:P) and only low confidentiality impact (VC:L) with no integrity or availability impact. That AT:P is the decisive moderating signal - exploitation is contingent on the target application itself containing a component class whose simple name has an underscore (e.g. Report_v2) with no shorter prefix that is also a class; an application without such a class name is simply not affected, so this is a conditional rather than universal exposure. No EPSS score was provided in the input and the issue is not listed in CISA KEV, so there is no public evidence of active exploitation; there is no public exploit identified at time of analysis. The vuln.today decision label is 'this_month', not act_now or emergency, which matches the overall picture: a genuine but bounded, read-only information-disclosure flaw rather than a high-urgency crisis. What is disclosed is developer-authored HTML template content (component structure, comments, conditionally-rendered markup, inline script, named endpoints) scoped to a single package - explicitly not user data, credentials, or session material - so even on a vulnerable application the practical impact is reconnaissance-grade information leakage. This is a real but lower-tier priority: patch it on schedule, with higher urgency for applications known to use underscore-containing component class names.

Exploit ScenarioDerived

A remote, unauthenticated attacker observes a fully-qualified component class name that Wicket writes into package-resource URLs, identifies one whose simple name contains an underscore (such as Wizard_Step1), and requests that resource with a crafted style supplied via the first query parameter. The PackageResourceGuard validates a shortened base name for which no class file exists and approves it, after which ResourceNameIterator appends the attacker-supplied style and completes the path into the component's markup template, which is returned in the response. No public exploit is identified at time of analysis, and the attack succeeds only if such an underscore-named class exists in the application.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 8.x through 10.x can be made to return the HTML markup template of an application's own component class instead of the static file that the package resource guard approved, giving a remote unauthenticated attacker read access to developer-authored template source. Exposure is conditional: the application must contain a component class whose simple name includes an underscore and for which no shorter underscore-delimited prefix is itself a class (for example Report_v2 or Wizard_Step1), and disclosure is confined to HTML files in that component's own package - component structure, developer comments, conditional markup, inline script and named endpoints, but no user data, credentials or session material. No public exploit code is identified at time of analysis, and the vendor has released fixed versions 8.20.0, 9.25.0 and 10.12.0.

RemediationAI

Upgrade to Apache Wicket 8.20.0, 9.25.0 or 10.12.0, which fix the issue; organizations still on Wicket 7.x or older, which are no longer supported, should upgrade to a supported release. The upgrade is the vendor's stated remedy and no separate workaround is documented in the available sources. Because exposure depends entirely on the underscore naming pattern, auditing component class simple names identifies which applications are in scope before the patch is applied - classes such as Report_v2 or Wizard_Step1 are exposed, whereas a component whose class name has no underscore is unreachable, and so is its localized or styled markup, since the guard finds the class file under the base name and refuses the request. When planning the change window, note that no framework-shipped module uses an underscore in a class name, so no Wicket-owned markup is exposed and the affected content is limited to each application's own HTML templates in the component's package; the vendor advisory at https://lists.apache.org/thread.html/hy089v60t5v36skpnbry96vr2427lw0o carries the authoritative version guidance.

Affected VersionsENISA

Apache Wicket 10.0.0 ≤10.11.0
Apache Wicket 8.0.0 ≤8.19.0
Apache Wicket 9.0.0 ≤9.24.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

The flaw is CWE-179, incorrect behavior order: PackageResource validates a path before ResourceNameIterator completes it. PackageResource builds a path from the scope class' package plus the file name in the request URL and asks the configured package resource guard about that string, then passes the same path to the resource stream locator together with a style, a variation and a locale decoded from the name of the first query parameter - attributes that never appeared in the string the guard saw. ResourceNameIterator appends those attributes, each preceded by an underscore, in the order variation, style, locale, ahead of the file extension, so the file opened differs from the file approved. PackageResourceGuard decides whether an HTML file is a component's markup template by looking for a class file of the same name beside it and stripping one underscore-delimited suffix at a time; because HTML is on the default allow list, that check is the only separation between a servable static HTML file and a non-servable markup template. Asked about the template's own name the guard correctly refuses; asked about a shorter name for which no class exists it accepts, and a URL-supplied style then completes the name into the template of a component class, which is written to the response. The appended attributes cannot alter the file extension or leave the component's package, so the reachable surface is HTML files only within that package. No module shipped by Wicket uses an underscore in a class name, so framework markup is not exposed - only the application's own templates. The vendor's CVSS 4.0 vector is AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N (6.3); the independent assessment records CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N, consistent in describing a network-reachable, unauthenticated, low-confidentiality read with an application-side prerequisite and no integrity or availability impact. The trigger requires the attacker to name both the target package and the component class, which is practical because Wicket writes fully qualified class names into the URL of every package resource it renders.

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 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Remote and unauthenticated (AV:N/PR:N), but exploitation depends on the target app having a qualifying underscore-named class - a condition beyond attacker control (AC:H); disclosure is limited read-only template content (C:L, I/A:N, no scope change).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/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
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Incorrect behavior order in Apache Wicket: a file path is validated before the framework appends the attributes that complete it.

org.apache.wicket.request.resource.PackageResource asks the configured package resource guard about a path built from the scope class' package and the file name in the request URL, and then hands that same path to the resource stream locator together with a style, a variation and a locale. Those three attributes are decoded from the name of the first query parameter and never appear in the string the guard was given. org.apache.wicket.core.util.resource.locator.ResourceNameIterator appends them to that path, each preceded by an underscore, in the order variation, style, locale, before the file extension, so the file that is opened is not the file the guard approved.

org.apache.wicket.markup.html.PackageResourceGuard decides whether an HTML file is a component's markup template by looking for a class file of the same name beside it, stripping one underscore-delimited suffix at a time as it goes. HTML is on the default allow list, so that check is the only thing separating a static HTML file, which may be served, from a markup template, which may not. Asked about the name of a template, the guard refuses it correctly. Asked about a shorter name for which no class exists, it accepts, and a style supplied in the URL then completes that name into the markup template of a component class, which is written to the response.

An application is affected if the simple name of any of its component classes contains an underscore and no shorter part of that name is itself a class, such as Report_v2 or Wizard_Step1; an application with no such class name is not affected. No unusual deployment, packaging or configuration is required, and running in deployment rather than development mode does not prevent it. Java naming conventions discourage underscores in class names and no module Wicket ships has one, so no framework markup is exposed; what an application exposes this way is its own. A component whose class name has no underscore is not reachable, and neither is its localized or styled markup, because the guard finds the class file under the base name and refuses the request. The attributes cannot change the file extension and cannot leave the component's package, so nothing beyond HTML files in that package is reachable. Access is read-only, and what is disclosed is developer-authored template content: component structure, developer comments, markup that is rendered only under some conditions, inline script, and the endpoints a template names. No user data, credential or session material is reachable this way. An attacker has to name a class in the target package and the component itself, and Wicket writes fully qualified class names into the URL of every package resource it renders.

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.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Medium
component-based Java web framework, moderate enterprise adoption, not universally deployed
Social Media
2
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Yes
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
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-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

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