Skip to main content

Apache Wicket CVE-2026-82115

| EUVDEUVD-2026-114886 MEDIUM
Missing Authorization (CWE-862)
2026-11-01 apache GHSA-fcp8-rfgx-8mhm
6.3
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Obtain bound Wicket session
  2. Delivery
    Read resource name from page
  3. Exploit
    Open WebSocket naming the resource
  4. Execution
    Reach onConnect/onMessage unchecked
  5. Impact
    Drive resource callbacks with chosen payload

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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 specific, non-default application pattern: the app must register an org.apache.wicket.protocol.ws.api.WebSocketResource as a shared resource AND depend on the Wicket IAuthorizationStrategy (e.g. an @AuthorizeResource annotation) to restrict access to it - apps that do not expose WebSocketResource shared resources, or that already gate them with an IWebSocketConnectionFilter, are not affected. The attacker needs a bound Wicket session (trivially obtained by any visitor, not true authentication) and the resource name, which Wicket writes into the page that opens the connection and is therefore not secret. Limiting factors: impact is bounded to whatever the targeted resource's callbacks do with an attacker-supplied message, and the connection registers under the attacker's own session, giving no access to other users' connections.

Impact

This is a genuine but constrained authorization-bypass (CWE-862) in Apache Wicket's native WebSocket transport, best characterized as a moderate, conditional issue rather than a top-tier emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) scores 6.3 and signals network reach with no privileges or user interaction, but the AT:P flag (attack requirement) is material: the flaw only exists where an application both registers a WebSocketResource as a shared resource AND relies on IAuthorizationStrategy to restrict it. Impact is explicitly limited (VC:L/VI:L/VA:N) - the caller gains only whatever that specific resource's onConnect/onMessage callbacks do with an attacker-chosen text or binary message, scoped to the caller's own session, so there is no cross-user access and no availability impact. No KEV listing, no EPSS score, and no PoC or exploit reference are present in the input, so exploitation signals are all absent rather than conflicting: exploitation status is 'no public exploit identified at time of analysis.' The vuln.today decision label is 'this_month,' consistent with a patch-this-cycle priority rather than act_now/emergency. Note one signal to verify: CVSS marks PR:N, yet the description requires a 'bound Wicket session' - a session is trivially obtained by any visitor and is not authentication, so PR:N is defensible, but teams relying on CVSS alone should understand the real gate is the vulnerable app pattern, not network exposure.

Exploit ScenarioDerived

An application registers a WebSocketResource as a shared resource and annotates it with @AuthorizeResource expecting the authorization strategy to block unauthorized users. A remote attacker who can obtain a Wicket session reads the resource name (Wicket writes it into the page that opens the connection, so it is not secret), opens a WebSocket naming that resource, and reaches onConnect() and onMessage() directly - the authorization check is never consulted. No public exploit code or PoC reference is identified in the available data.

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

Missing authorization in Apache Wicket's native WebSocket transport allows a remote caller who holds a bound Wicket session to invoke the callbacks of a registered WebSocketResource shared resource without the application's IAuthorizationStrategy ever being consulted, so class-level restrictions such as @AuthorizeResource are silently ignored. The flaw is unauthenticated per the CVSS vector (PR:N) and affects Wicket 8.0.0 through 8.19.0, 9.0.0 through 9.24.0, 10.0.0 through 10.11.0, and older unsupported 7.x releases, but only where an application registers a WebSocketResource as a shared resource and relies on the authorization strategy to protect it. Impact is bounded to whatever the targeted resource's onConnect() and onMessage() callbacks do with an attacker-supplied text or binary message, and because the connection registers under the caller's own session there is no path to another user's connection; no public exploit code has been 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 a fixed release: Apache Wicket 8.20.0 for the 8.x line, 9.25.0 for the 9.x line, or 10.12.0 for the 10.x line, as directed by the advisory at https://lists.apache.org/thread.html/0lj9og7vp22ps77nrwdj42f64cfb9g4c; the vendor-released patch is the only complete fix because it restores the authorization check on the WebSocket call path itself. Where an immediate upgrade is not possible, two workarounds are available and both must be applied deliberately rather than assumed. The first is to register an IWebSocketConnectionFilter through WebSocketSettings#setConnectionFilter() that rejects unauthorized connections before the resource is resolved; the trade-off is that this filter becomes the sole authorization gate for every WebSocket connection, so it must be written to cover all registered resources and kept in sync as new ones are added, and an overly broad rule will drop legitimate clients. The second is to repeat the authorization check at the start of each callback (onConnect() and both onMessage() overloads), which confines the change to the affected resource but relies on every callback being audited and on future callbacks being treated the same way, so a single missed entry point reopens the bypass. Inventories should first be filtered to deployments that register a WebSocketResource as a shared resource, since only those carry exposure.

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

Wicket's native WebSocket support routes an incoming frame through org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler, which resolves the shared resource named by the client's handshake parameter and calls WebSocketResource#onPayload() on it directly. The framework's single enforcement point for this check is org.apache.wicket.request.handler.resource.ResourceRequestHandler, which the WebSocket transport never passes through, and WebSocketResource#respond() is both final and empty - so no code path reaching a WebSocketResource ever asks the configured IAuthorizationStrategy#isResourceAuthorized(). This is a CWE-862 (Missing Authorization) defect: the authorization decision exists and is correctly implemented, but is simply not on the WebSocket call path. Because a request naming a resource is served with a throwaway page, no application page is involved, and every callback of the resource - onConnect() and both onMessage() overloads - is reachable this way, with anything the resource pushes back through WebSocketRequestHandler delivered to the caller's own connection. The resource name is not a secret: Wicket embeds it in the page that opens the connection, so discovery is trivial once a session exists. Whether a given deployment is actually exposed therefore depends entirely on its registration pattern rather than on any code-level subtlety.

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:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

PR:N because a bound session is trivially obtained and the resource name is public; C:L/I:L and A:N because impact is limited to the targeted resource's callbacks with no availability effect.

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

DescriptionCVE.org

Missing authorization in Apache Wicket.

org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler, the request handler Wicket's native WebSocket support uses to deliver an incoming frame, resolves the shared resource named by the client's handshake parameter and calls WebSocketResource#onPayload() on it directly, without consulting IAuthorizationStrategy#isResourceAuthorized(). That method has a single enforcement point in the framework, org.apache.wicket.request.handler.resource.ResourceRequestHandler, which the WebSocket transport does not pass through, and WebSocketResource#respond() is final and empty. No route to a WebSocketResource therefore asks the configured authorization strategy whether the caller may use it, and an @AuthorizeResource annotation on such a class has no effect.

A caller needs a bound Wicket session and the name of the resource. The name is not a secret: Wicket writes it into the page that opens the connection. No page of the application is otherwise involved, because a request naming a resource is served with a throwaway page. All of the resource's callbacks are reached this way, including onConnect() and both onMessage() overloads, and what a callback pushes back through WebSocketRequestHandler goes to the caller's own connection.

An application is affected where it registers a WebSocketResource as a shared resource and relies on the authorization strategy to restrict it. What the caller gains is whatever that resource's callbacks do with a text or binary message of the caller's choosing. The connection is registered under the caller's own session, so it gives no access to another user's connection.

As a workaround, reject unauthorized connections with an IWebSocketConnectionFilter registered through WebSocketSettings#setConnectionFilter(), or repeat the authorization check at the start of each callback.

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. Older, unsupported releases from 7.0.0 onwards are also affected. 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 73% exploitable
Prevalence
Low
niche component-based Java web framework, small and declining market share
Data Quality
4 sources
Confidence: Medium

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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