Skip to content
VulniPulse
Advisory severityMedium6.9Apache Software Foundation Updated

Medium [CVE-2026-82704] Missing authorization in Apache Wicket

This medium-severity Apache Software Foundation advisory covers CVE-2026-82704 affecting Apache Wicket.

Aggregated and source-linked by VulniPulse. Data sources, validation and limitations.

CVE-2026-82704 Source published Source updated

VulniPulse record published Record updated

CVE-2026-82704
Affected products & platforms
Apache Software FoundationUnclassified
Open source advisory

Get an email when Apache Software Foundation publishes the next one.

See Apache Software Foundation's last 90 days of advisories first. Then choose the free weekly digest, or a free month of real-time alerts with the severity, the fixed version and the vendor's link (card needed, then US$15/month; we email you before the first charge).

Alert me about Apache Software Foundation

Summary

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.

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.

Affected versions
  • 8.0.0 through 8.19.0
  • 9.0.0 through 9.24.0
  • 10.0.0 through 10.11.0.
  • through 10.11.0

Official advisory · high-confidence parse· fetched 1 day ago·verify at source

Fixed versions
  • 8.20.0
  • 9.25.0
  • 10.12.0

Official advisory · high-confidence parse· fetched 1 day ago·verify at source

Mitigation checklist

Recommended fix / mitigation
  • 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.
  • 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 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.
  • Users are recommended to upgrade to version 8.20.0, 9.25.0 or 10.12.0, which fix the issue.

Official advisory · high-confidence parse· fetched 1 day ago·verify at source

All Apache Software Foundation advisories

Android app · Google Play

Monitor future Apache Software Foundation CVEs from your phone.

Choose a whole vendor or a precise platform, then receive matching security advisories by phone notification, email, or both. Coverage follows 34 official vendor sources and 160+ reviewed platform categories.

Discussion(0)

No comments yet. Share field notes, upgrade gotchas, or questions — verify against the vendor advisory before acting on community advice.

Sign in to join the discussion.