Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-82898— Apache Wicket: A cross-origin listener invocation stopped by a login wall is replayed after the user signs in

Quick assessment

Affected
Apache Software Foundation Apache Wicket
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Apache Wicket 中的安全检查顺序存在错误。 在咨询其资源隔离策略之前,先获取了请求所指向的页面,因为这些策略需要传入该页面作为参数。获取页面会触发其实例化,而页面实例化过程会执行已配置的 。若某个应用通过抛出 来拒绝未认证访问者,则该异常会在隔离监听器内部、在任何策略执行之前被抛出。此异常会替换当前的请求处理器,导致资源隔离策略从未被咨询,从而使得来自其他源(origin)的请求未被拒绝。 该异常的构造函数会存储被中断请求的 URL,以便在访问者登录后,通过 方法恢复该请求。然而,被存储的 URL 正是

CVSS 2.1 · Low
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-82898

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Apache Wicket: A cross-origin listener invocation stopped by a login wall is replayed after the user signs in
Source: CVE Program / CVE List V5
Vulnerability Description
Incorrect order of security checks in Apache Wicket. org.apache.wicket.protocol.http.ResourceIsolationRequestCycleListener obtains the page a request targets before it consults its resource isolation policies, because those policies are passed that page. Obtaining the page instantiates it, and instantiating a page runs the configured org.apache.wicket.authorization.IAuthorizationStrategy. An application that refuses an unauthenticated visitor by throwing org.apache.wicket.RestartResponseAtInterceptPageException therefore throws it from inside the isolation listener, before any policy has run. That exception replaces the request handler, so the policies are never consulted and a request that came from another origin is not refused. The exception's constructor stores the URL of the request it interrupted, so that Component#continueToOriginalDestination() can resume it once the visitor has signed in. The stored URL is the one the policies would have refused. On sign in Wicket redirects to it, and that redirect is same-origin, so the policies allow it and the listener runs in the newly authenticated session. The whole URL is stored, its query string included, so an ordinary org.apache.wicket.markup.html.form.Form is resumed with the field values the original request carried in its query string and Form#onSubmit() runs with values another origin chose. A form POST is not needed for this; a plain top-level navigation carries them. An application is affected where it registers ResourceIsolationRequestCycleListener, which is opt-in and is not registered by default, and where it refuses unauthorized access with RestartResponseAtInterceptPageException followed by continueToOriginalDestination(). No application override is involved on that path: IAuthorizationStrategy#isInstantiationAuthorized() documents throwing that exception, org.apache.wicket.authroles.authentication.AuthenticatedWebApplication throws it and org.apache.wicket.authroles.authentication.panel.UsernamePasswordPanel continues to the original destination, and org.apache.wicket.authorization.strategies.page.SimplePageAuthorizationStrategy in wicket-core installs the same pattern. A visitor who is already signed in is not affected, because no interception occurs. Request-body parameters stored alongside the intercepted URL are not applied to the resumed form: the resumption is a redirect, so the resumed request is a GET, and form components read their values from the query string on a GET. As a workaround, refuse unauthorized access with org.apache.wicket.RestartResponseException instead, which does not store the original destination; visitors are then not returned to the page they asked for after signing in. This issue affects Apache Wicket: from 9.1.0 through 9.24.0, from 10.0.0 through 10.11.0. Releases before 9.1.0, which is every 8.x release and 9.0.0, are not affected, because the resource isolation this issue concerns was introduced in 9.1.0. They are not protected either. Their only cross-origin defence is org.apache.wicket.protocol.http.CsrfPreventionRequestCycleListener, which works out where a request came from by reading its Origin header and falling back to its Referer header. Neither header need arrive: a browser does not send Origin on the plain GET a link uses, and the document on the other origin decides through its own referrer policy whether a Referer reaches the application at all. That mechanism therefore never made the guarantee the Fetch Metadata based policy makes, and on those releases a listener invocation from another origin is not reliably refused in the first place. Anyone on a release before 9.1.0 who wants this protection should upgrade to 9.x or 10.x and register ResourceIsolationRequestCycleListener. Users are recommended to upgrade to version 9.25.0 or 10.12.0, which fix the issue.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Source: CVE Program / CVE List V5
Vulnerability Type
不正确的行为次序
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
Apache Software Foundation Apache Wicket 9.1.0 ~ 9.24.0 -

II. Public POCs for CVE-2026-82898

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-82898

请登录查看更多情报信息。

Other References for CVE-2026-82898 (1)

Same Patch Batch · Apache Software Foundation · 2026-11-01 · 19 CVEs total

CVE-2026-83594 8.3 HIGH Apache Wicket: FileUploadToResourceField accepts a client-asserted upload result and alloc
CVE-2026-84170 8.3 HIGH Apache Wicket: Configured upload limits are not enforced by the standalone file upload res
CVE-2026-95863 7.6 HIGH Apache Wicket: XSS via a component id or markup id written unescaped into generated JavaSc
CVE-2026-82956 7.6 HIGH Apache Wicket: XSS in AjaxNewWindowNotifyingBehavior via the client-supplied window name
CVE-2026-111089 7.6 HIGH Apache Wicket: XSS via a resource bundle text written unescaped into generated JavaScript
CVE-2026-83539 7.4 HIGH Apache Wicket: XSS in SmartLinkLabel and SmartLinkMultiLineLabel via a javascript: URL in
CVE-2026-83559 7.4 HIGH Apache Wicket: JavaScriptUtils#escapeQuotes does not escape the backslash, so its output c
CVE-2026-84231 7.4 HIGH Apache Wicket: XSS in ExternalLink via the model URL when the component is bound to a non-
CVE-2026-82840 7.2 HIGH Apache Wicket: The session id is renewed only on the first sign in, not on re-authenticati
CVE-2026-82704 6.9 MEDIUM Apache Wicket: A listener is invoked on a page instance the request itself created and nev
CVE-2026-82557 6.9 MEDIUM Apache Wicket: A disabled or invisible form submitting component is still invoked on a pla
CVE-2026-84172 6.3 MEDIUM Apache Wicket: Component markup is served as a package resource when wicket-core has its o
CVE-2026-84177 6.3 MEDIUM Apache Wicket: A component's markup is served as a package resource when its class name co
CVE-2026-82705 6.3 MEDIUM Apache Wicket: The configured authorization strategy is not applied to an IResource embedd
CVE-2026-82115 6.3 MEDIUM Apache Wicket: The configured authorization strategy is not applied to a shared WebSocketR
CVE-2026-87718 2.3 LOW Apache Wicket: CSP headers silently omitted for pages served through nested request handle
CVE-2026-82559 2.3 LOW Apache Wicket: WebSocket messages are processed against an HTTP session snapshot that surv
CVE-2026-82558 2.3 LOW Apache Wicket: WebSocketBehavior delivers client messages to a component the client may no

IV. Related Vulnerabilities