Skip to main content

Apache Wicket EUVDEUVD-2026-114899

| CVE-2026-84172 MEDIUM
Files or Directories Accessible to External Parties (CWE-552)
2026-11-01 apache GHSA-3hjq-2xr3-p7px
6.3
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Identify Wicket deployment with isolated wicket-core class loader
  2. Delivery
    Request package-resource URL naming a component class
  3. Exploit
    PackageResourceGuard class-file check fails across class loaders
  4. Execution
    Server streams component markup template (HTTP 200)
  5. Impact
    Read disclosed template structure, comments and endpoints

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling File access restriction
MITRE ATT&CK

2 techniques across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a non-default deployment where wicket-core is loaded by a class loader that cannot see the application's component classes: wicket-core in a servlet container's shared library directory, in an EAR library directory with the application in the WAR, as an application-server global module, or as an OSGi bundle whose wicket-core bundle cannot resolve application-bundle classes. The standard WAR packaging with wicket-core in WEB-INF/lib is NOT affected because the class-file check then succeeds and the template is refused. The attacker must know and name a component's fully qualified class name, though Wicket embeds these in the package-resource URLs it renders. Impact is strictly limited: read-only disclosure of developer-authored markup templates only - no user data, credentials, or session material is reachable, and there is no write or availability impact. Affected versions: 8.0.0-8.19.0, 9.0.0-9.24.0, 10.0.0-10.11.0; fixed in 8.20.0, 9.25.0, 10.12.0.

Impact

Signals are consistent and point to a genuine but low-urgency information-disclosure issue rather than a high-priority flaw. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N) scores 6.3 (Medium): network-reachable and unauthenticated (PR:N), but carrying AT:P - an attack requirement - because exploitation depends on a non-default class-loader layout, and VC:L with VI:N/VA:N because only read-only disclosure of developer-authored markup occurs. The vuln.today decision label is 'this_month', not act_now or emergency. No EPSS score, no CISA KEV listing, and no public exploit were provided; per the input the only reference is the Apache advisory, so exploitation status is 'no public exploit identified at time of analysis'. The AT:P requirement is the key discriminator: as the description states explicitly, ordinary WAR packaging (wicket-core in WEB-INF/lib) is NOT affected, and only atypical deployments (shared container library, EAR lib with app in WAR, app-server global module, or OSGi where wicket-core's bundle cannot resolve application classes) are exposed. Combined with the limited impact (no user data, credentials, or session material reachable), this is a real but narrowly-scoped issue appropriate for scheduled patching, not emergency response.

Exploit ScenarioDerived

In a deployment where wicket-core runs in a class loader that cannot see the application's component classes (e.g. placed in a servlet container's shared library directory), a remote unauthenticated attacker requests the package-resource URL of a named component class - fully qualified class names that Wicket itself writes into every package-resource URL it renders. Because PackageResourceGuard finds no co-located class file, it serves the component's markup template with HTTP 200, disclosing developer-authored template content such as structure, comments, conditionally-rendered markup, inline script, and referenced endpoints. No public exploit was identified at time of analysis, and network reach is offset by the AT:P requirement that the target run a non-default class-loader layout.

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

Markup template disclosure in Apache Wicket 8.0.0-8.19.0, 9.0.0-9.24.0 and 10.0.0-10.11.0 allows unauthenticated remote attackers to fetch a component's HTML markup template over HTTP with status 200 by requesting its package-resource URL. The flaw only manifests in non-standard deployments where wicket-core is loaded by a class loader that cannot see the application's component classes (shared servlet-container library directory, EAR lib directory with the WAR-hosted application, application-server global module, or OSGi bundle); the ordinary WAR layout with wicket-core in WEB-INF/lib is not affected. Impact is strictly read-only disclosure of developer-authored template content - component structure, comments, conditionally rendered markup, inline script and named endpoints - with no user data, credentials or session material reachable and no integrity or availability effect; no public exploit code was identified at time of analysis and there is no CISA KEV listing, and the priority signal is this_month rather than immediate action.

RemediationAI

Upgrade to the fixed releases named by the vendor: Apache Wicket 8.20.0, 9.25.0 or 10.12.0, per branch. Users still on the unsupported 7.x line should move to one of these supported versions. Where an immediate upgrade is not possible, the effective control is packaging rather than configuration: the standard web-archive layout with wicket-core in WEB-INF/lib puts framework and application classes in a single class loader, so the class-file check succeeds and templates are refused - relocating wicket-core out of a container shared library directory, an EAR lib directory, a global module or a separate OSGi bundle into the application's own class path removes the exposure, at the cost of losing the shared-framework arrangement that motivated the original layout and of requiring each application to carry its own wicket-core copy. The same reasoning means that markup belonging to Wicket's own modules or to any code sharing wicket-core's class loader is unaffected and needs no separate action. The vendor advisory at https://lists.apache.org/thread.html/90mlx42q7nkdccdby1ql1ksl4sxy13x6 should be consulted for the authoritative fix statement.

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

The defect is an access-control mistake in org.apache.wicket.markup.html.PackageResourceGuard, which decides whether a classpath file may be streamed to a client as a package resource (CWE-552, files or directories accessible to external parties). Wicket's default allow list includes HTML, so the only distinction between an innocuous static .html file and a component's markup template is a probe for a compiled class file of the same name sitting beside it. That probe calls getResource() on the class loader that loaded wicket-core, whereas the resource being guarded is resolved through the application's IClassResolver (thread context class loader) and org.apache.wicket.core.util.resource.ClassPathResourceFinder#find(), which tries the scope class' own loader, then the context class loader, and finally the wicket-core loader. When wicket-core's loader is blind to the application's classes the probe misses, the guard concludes the file is not a component template, and serves it. Because Wicket embeds fully qualified class names in the URLs of the package resources it renders, an attacker only needs to name a component class rather than guess it. Markup shipped by Wicket's own modules and by any code sharing wicket-core's class loader stays protected, and the standard WAR packaging - framework and application in one loader - retains the class-file check and is unaffected. This class-loader-topology dependency is why the assessed severity (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) treats exploitation as conditional on a rare deployment.

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 unauthenticated request (AV:N/PR:N/UI:N), but AC:H because exploitation depends on a rare non-default class-loader deployment beyond attacker control; only read-only template disclosure, so C:L and I:N/A:N.

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

Files accessible to external parties in Apache Wicket.

org.apache.wicket.markup.html.PackageResourceGuard decides whether a file on the classpath may be streamed to a client as a package resource. HTML is on the default allow list, so the only thing that separates a static HTML file, which may be served, from a component's markup template, which may not, is a check for a class file of the same name beside it. That check calls getResource() on the class loader that loaded wicket-core. The resource itself is reached through different class loaders: the scope class is resolved through the application's IClassResolver, which uses the thread context class loader, and org.apache.wicket.core.util.resource.ClassPathResourceFinder#find() then tries the scope class' own loader, the context class loader, and the wicket-core loader last.

Where wicket-core is loaded by a class loader that cannot see the application's classes, the check finds no class file, concludes the file is not a component markup template, and serves it. A request for the package resource URL of a component class then returns that component's markup template with status 200. 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. Access is read-only, and no user data, credential or session material is reachable this way.

Such a deployment is rare. The ordinary packaging, a web archive with wicket-core in WEB-INF/lib, puts the framework and the application in one class loader, so the check finds the class file and the template is refused; those deployments are not affected. The exposure is confined to deployments that give wicket-core a class loader which cannot see the application's component classes: wicket-core placed in a servlet container's shared library directory, in an enterprise archive library directory with the application in the web archive, as an application server global module, or as an OSGi bundle, where wicket-core's bundle cannot resolve a class held by an application bundle. Markup shipped by Wicket's own modules, and by any other code sharing a class loader with wicket-core, remains protected. An attacker has to name a component class, 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 81% exploitable
Prevalence
Medium
established but moderately adopted Apache Java component web framework
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 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

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

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