CVE-2026-84172
Received Received - Intake

Information Disclosure in Apache Wicket

Vulnerability report for CVE-2026-84172, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-11-01

Last updated on: 2026-11-01

Assigner: Apache Software Foundation

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-11-01
Last Modified
2026-11-01
Generated
2026-11-02
AI Q&A
2026-11-02
EPSS Evaluated
N/A
NVD

Affected Vendors & Products

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-552 The product makes files or directories accessible to unauthorized actors, even though they should not be.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability in Apache Wicket allows external parties to access developer-authored template content such as component structure, comments, conditional markup, inline scripts, and named endpoints. It occurs when wicket-core is loaded by a class loader that cannot see the application's component classes, causing PackageResourceGuard to incorrectly serve component markup templates instead of blocking them.

Detection Guidance

This vulnerability affects Apache Wicket deployments where wicket-core is loaded by a class loader that cannot see the application's classes. Check if wicket-core is placed in a shared library directory, enterprise archive library directory, application server global module, or OSGi bundle. Verify if the application's component classes are inaccessible to wicket-core's class loader.

Impact Analysis

An attacker could exploit this to read sensitive template content, including internal component logic and markup that may reveal application structure or endpoints. However, access is read-only and no user data, credentials, or session material is exposed. The impact is limited to rare deployments where wicket-core is isolated from the application's class loader.

Compliance Impact

This vulnerability exposes developer-authored template content, including component structure, comments, and conditional markup, which may inadvertently reveal sensitive application details. While it does not directly expose user data or credentials, unauthorized access to internal templates could potentially violate data protection principles under GDPR or HIPAA if such exposure leads to unauthorized data processing or disclosure of protected information.

Mitigation Strategies

Upgrade Apache Wicket to a fixed version: 8.20.0, 9.25.0, or 10.12.0. Ensure wicket-core and the application share the same class loader to prevent the exposure of component markup templates.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-84172. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart

Security Radar

News mentioning this vulnerability
Loading related security news...