CVE-2026-82704
Apache Wicket: A listener is invoked on a page instance the request itself created and never configured
Что произошло
Missing authorization in Apache Wicket. org.apache.wicket.core.request.handler.ListenerRequestHandler invokes an IRequestListener only when org.apache.wicket.Component#canCallListener() allows it, and that method is isEnabledInHierarchy() && isVisibleInHierarchy(). The visibility half reads a flag that carries the outcome of IAuthorizationStrategy#isActionAuthorized() for the Component.RENDER action, and that flag is written in one place only, Component#configure(), during the render phase. A listener URL built by a subclass of org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper carries the page identifier and the component path in a single parameter, and the page identifier may be empty. When it is, a new page instance is constructed, PageProvider#wasExpired() is false because no identifier was supplied, and PageAndComponentProvider#getComponent() finds the component directly on the new instance, so neither a render pass nor Component#configure() runs before the listener is invoked. The flag therefore still holds its constructor default, the component counts as visible, and the listener of a component the authorization strategy denied RENDER for is executed. The same request also skips Component#onConfigure(), so visibility and enablement an application sets there are not applied either. There are two ways to reach this, and neither requires anything but a request. On a page that is stateful, the caller omits the page identifier from a listener URL that would otherwise carry it. On a page that Wicket considers stateless, nothing has to be altered at all: Wicket itself writes listener URLs without a page identifier for such pages, and a component the strategy denies RENDER for is treated as stateless and therefore does not keep the page stateful, so denying RENDER can itself produce the page-id-less form. The second route has never been refused. The ENABLE decision of IAuthorizationStrategy is consulted on every invocation and still refuses, as does a request that supplies the real identifier of a page instance that has already been rendered; a component the application disabled in Component#onConfigure() is protected by neither, because that callback has not run. An application is affected where it withholds an individual component from the caller, either by denying the RENDER action through IAuthorizationStrategy, including through the MetaDataRoleAuthorizationStrategy and AuthorizeAction facilities of wicket-auth-roles, or by setting the component's visibility or enabled flag in Component#onConfigure(), the callback Wicket's own documentation directs applications to use for both. The page carrying such a component has to be constructible from a bookmarkable or mounted URL, which requires a public constructor taking either no arguments or a PageParameters argument. Behaviours pass through the same gate, so an AJAX behaviour attached to such a component is equally exposed. Separately, and whether or not any component is withheld, a listener on a page Wicket considers stateful is invoked on an instance the request itself constructed, so it acts on models built from page parameters the caller supplied rather than on the state the application last rendered. Instantiation authorization is unaffected: IAuthorizationStrategy#isInstantiationAuthorized() is still consulted when the new page instance is created, so a guard placed on the page rather than on the individual component continues to hold. 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 are recommended to upgrade to version 8.20.0, 9.25.0 or 10.12.0, which fix the issue.
Что это значит
В источнике описана ошибка безопасности в перечисленных продуктах. Фактический риск зависит от установленной версии, конфигурации и доступности компонента; проверьте условия в первичном бюллетене.
Что делать
1. Проверьте, затронуты ли вы
Соберите инвентаризацию и сравните с таблицей затронутых версий. Эти команды только показывают установленные компоненты и сами по себе не доказывают наличие CVE.
dpkg-query -W -f='${Package} ${Version}\n'rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n'Get-HotFix | Select-Object HotFixID, InstalledOn
2. Установите исправление
Сверьте точный продукт и версию с бюллетенем вендора. Установите указанное в нём исправление после резервного копирования и проверки совместимости. Подтверждённая целевая версия в источниках отсутствует.
3. Временные меры
До проверки бюллетеня ограничьте доступ к затронутому компоненту доверенными узлами. Оцените сегментацию и отключение ненужных интерфейсов с владельцем сервиса; универсального правила WAF для этой CVE не подтверждено.
4. Проверьте следы эксплуатации
Проверьте аномальные входы, новые учётные записи, ошибки и необычные дочерние процессы в затронутом сервисе. Публичные проверенные правила обнаружения не включены в запись; отсутствие сигналов не доказывает отсутствие компрометации.
5. После исправления
- Проверьте фактическую версию и результат установки по бюллетеню.
- При необходимости перезапустите сервисы в согласованное окно.
- Повторите проверку сканером и функциональные проверки.
- Зафиксируйте результат, дату, владельца и оставшийся риск.
Продукты и затронутые версии
Apache Software Foundation / Apache Wicket
{
"status": "affected",
"version": "8.0.0",
"versionType": "semver",
"lessThanOrEqual": "8.19.0"
}{
"status": "affected",
"version": "9.0.0",
"versionType": "semver",
"lessThanOrEqual": "9.24.0"
}{
"status": "affected",
"version": "10.0.0",
"versionType": "semver",
"lessThanOrEqual": "10.11.0"
}CVSS: оценки и векторы
CVSS 4.0 · cve6.9
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
CVSS 4.0 · security@apache.org6.9
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Классы CWE
Источники и ссылки
Происхождение полей
{
"cwes": [
"cve",
"ghsa",
"nvd"
],
"epss": {
"source": "epss",
"received_at": "2026-11-05T21:16:28.411587+00:00"
},
"title": {
"source": "cve",
"received_at": "2026-11-06T14:58:34.467029+00:00"
},
"scores": [
"cve",
"nvd"
],
"status": {
"source": "cve",
"received_at": "2026-11-06T14:58:34.467029+00:00"
},
"affected": [
"cve"
],
"published": {
"source": "cve",
"received_at": "2026-11-06T14:58:34.467029+00:00"
},
"solutions": [],
"percentile": {
"source": "epss",
"received_at": "2026-11-05T21:16:28.411587+00:00"
},
"references": [
"cve",
"ghsa",
"nvd"
],
"description": {
"source": "cve",
"received_at": "2026-11-06T14:58:34.467029+00:00"
},
"workarounds": [],
"configurations": []
}Хронология записи
- Данные обновлены06.11.2026, 00:16
- Данные обновлены05.11.2026, 00:20
- Данные обновлены04.11.2026, 00:15
- Данные обновлены02.11.2026, 03:33
- Данные обновлены02.11.2026, 03:32
- Опубликована02.11.2026, 01:17
Личная заметка и статус
Другие CVE того же продукта
| УЯЗВИМОСТЬ / ПРОДУКТ | ПРИОРИТЕТ | CVSS | EPSS | СИГНАЛЫ | ОПУБЛИКОВАНА | Карточка |
|---|---|---|---|---|---|---|
| CVE-2026-82898 Apache Wicket: A cross-origin listener invocation stopped by a login wall is replayed after the user signs in Apache Software Foundation / Apache Wicket | Низкий | 2.1 | 0,32 % | 02.11.2026 | ||
| CVE-2026-82840 Apache Wicket: The session id is renewed only on the first sign in, not on re-authentication Apache Software Foundation / Apache Wicket | Высокий | 7.2 | 0,3 % | 02.11.2026 | ||
| CVE-2026-82705 Apache Wicket: The configured authorization strategy is not applied to an IResource embedded in a component Apache Software Foundation / Apache Wicket | Средний | 6.3 | 0,34 % | 02.11.2026 | ||
| CVE-2026-82559 Apache Wicket: WebSocket messages are processed against an HTTP session snapshot that survives invalidation Apache Software Foundation / Apache Wicket | Низкий | 2.3 | 0,29 % | 02.11.2026 | ||
| CVE-2026-82558 Apache Wicket: WebSocketBehavior delivers client messages to a component the client may not invoke Apache Software Foundation / Apache Wicket | Низкий | 2.3 | 0,29 % | 02.11.2026 |