---
id: "CVE-2026-82558"
kind: "vulnerability"
aliases: ["CVE-2026-82558"]
title: "Apache Wicket: WebSocket handlers skip authorization checks on hidden components"
severity: "low"
cvss: 2.3
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache-wicket", "java", "package", "websocket"]
not_affected_if: ["no-onmessage-override", "no-websocket-behavior", "server-push-only"]
published_at: "2026-11-01T22:17:47+00:00"
first_seen_at: "2026-11-01T22:22:23+00:00"
updated_at: "2026-11-01T22:22:56+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-82558", "first_seen_at": "2026-11-01T22:22:23+00:00"}]
---

# Apache Wicket: WebSocket handlers skip authorization checks on hidden components

Apache Wicket's WebSocketBehavior calls its message handlers without the authorization check that Ajax behaviors get, so a WebSocketBehavior on a hidden or disabled component receives messages from the client. An attacker with a session of their own can send messages that reach the application's handler and get a response written back to them, where the same component would refuse an Ajax call.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the Wicket version in the project build file or lockfile against the affected ranges: 8.0.0 through 8.19.0, 9.0.0 through 9.24.0, 10.0.0 through 10.11.0, or older unsupported releases from 6.0.0.
- Search the code for `WebSocketBehavior` subclasses that override `onMessage()` and check whether they are attached to components hidden, disabled, or restricted by an `IAuthorizationStrategy`, such as `MetaDataRoleAuthorizationStrategy` or `@AuthorizeAction`.

## Fix

- Upgrade Apache Wicket 8.x to `8.20.0`
- Upgrade Apache Wicket 9.x to `9.25.0`
- Upgrade Apache Wicket 10.x to `10.12.0`

## Timeline

- 2026-11-01T22:22:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-82558

## From the sources

Missing authorization in Apache Wicket.

org.apache.wicket.protocol.ws.api.WebSocketBehavior, through which Wicket's native WebSocket support hands a message sent by the client to the application, calls its onMessage() callbacks without checking whether the client may invoke the component the behavior is attached to. Wicket opens a single WebSocket connection per page, and a message received on it is delivered to every WebSocketBehavior of that page. For an Ajax behavior Wicket makes this check before invoking it, through Behavior#canCallListener(Component), which refuses a component that is not visible or not enabled, including one for which the IAuthorizationStrategy denies the RENDER or ENABLE action. A WebSocketBehavior attached to such a component, or to a child of one, therefore receives the client's text and binary messages, together with a WebSocketRequestHandler that writes back to that client, where an Ajax behavior on the same component would be refused.

An application is affected where it attaches a WebSocketBehavior that overrides onMessage() to a component that it hides, disables, or restricts through its IAuthorizationStrategy, for example with MetaDataRoleAuthorizationStrategy or the AuthorizeAction annotation. The client needs a session of their own and a page of their own that contains such a component: messages are delivered only to pages in the page store of the client's own session, so this gives no access to another user's session, page or connection. Messages pushed by the server are not affected.

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

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
