Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün
  • CWE-384

CVE-2026-82840

Apache Wicket oturum sabitleme: yeniden kimlik doğrulamada oturum kimliği yenilenmiyor

Apache Software Foundation Apache Wicket

Yüksek 7,2 CVSS 4.0
Yayımlandı
Güncellendi
2 Kas 2026
Açık yaşı
0 gün
Kaydı açan
apache

Yönetici özeti

Bu açık, kullanıcıların oturum bilgilerinin bir saldırgan tarafından ele geçirilmesine yol açabilir ve hesap güvenliğini zayıflatabilir. Etkilenen Wicket tabanlı uygulamalar varsa, güncelleme kısa sürede yapılmalıdır.

ÖzetTürkçe

Apache Wicket'ın AuthenticatedWebSession sınıfındaki signIn(String, String) metodu, oturum kimliğini yalnızca oturum ilk kez açıldığında yeniliyor; zaten oturum açmış bir oturum yeniden kimlik doğrulaması yaptığında kimlik yenilenmiyor. Bu, oturum sabitleme (session fixation) saldırısına açık bir durum yaratıyor. Etkilenen sürümler 8.18.0–8.19.0, 9.23.0–9.24.0 ve 10.9.0–10.11.0 arasındaki Wicket sürümleridir.

Saldırgan ne yapabilir?

Saldırgan, kendi belirlediği ve önceden oturum açtığı bir oturum kimliğini kurbanın tarayıcısına yerleştirebilirse, kurban o oturumda yeniden kimlik doğrulaması yaptığında saldırgan aynı oturumu kullanarak kurbanın yetkilerine erişebilir.

Kaynaktaki açıklama (İngilizce)

Session fixation in Apache Wicket.

org.apache.wicket.authroles.authentication.AuthenticatedWebSession is the authentication base class of Wicket's role-based security module, and its signIn(String, String) method is the entry point through which an application authenticates a session. Renewing the container session id at that point is the standard defence against an attacker who has fixed a session id in a victim's browser, and Wicket provides that renewal as org.apache.wicket.Session#changeSessionId(), whose documentation directs callers to invoke it on login for exactly that reason.

AuthenticatedWebSession#signIn(String, String) calls it inside a guard that succeeds only on the first transition of the session's signed-in flag. The session id is therefore renewed when a session first signs in, and is not renewed when a session that is already signed in authenticates again. signIn(String, String) returns true either way, so neither the caller nor the application can tell that the renewal did not happen.

An application is affected where it authenticates through AuthenticatedWebSession, which AuthenticatedWebApplication requires and which the shipped UsernamePasswordPanel uses, and where a session that is already signed in can authenticate again: a step-up prompt before a sensitive action, an account switch, or simply a sign-in form that stays reachable once the user is signed in. Nothing in the module hides that form from a signed-in session. Reaching the defect also requires an attacker to place a session id of their choosing in the victim's browser. JSESSIONID is set by the servlet container rather than by Wicket, so that needs a position Wicket does not grant, such as control of a host under the same registrable domain or a container configured to carry the session id in the URL, and the planted session has to be one the attacker has already signed in on, because a session that is not yet signed in does have its id renewed by the victim's authentication. An authentication attempt that fails signs the session out and closes the window. Applications that renew the session id in their own code after a successful authentication are not affected.

As a workaround, renew the session id from the application's own code on every successful authentication, by calling Session#changeSessionId() at the end of the authenticate(String, String) implementation.

This issue affects Apache Wicket: from 8.18.0 through 8.19.0, from 9.23.0 through 9.24.0, from 10.9.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.

Ne yapmalı?

  1. Apache Wicket'ı etkilenen dal için düzeltilmiş sürüme yükseltin: 8.x dalında 8.20.0, 9.x dalında 9.25.0 veya 10.x dalında 10.12.0. Genel öneri
  2. Güncelleme yapamıyorsanız, uygulamanızın kendi kodunda her başarılı kimlik doğrulamasının ardından Session#changeSessionId metodunu çağırarak oturum kimliğini yenileyin; bu işlemi authenticate(String, String) metodunun sonunda yapın. Genel öneri

Ek önlemler

  • Kullanıcılar zaten oturum açmışken giriş formunun erişilebilir olup olmadığını gözden geçirin ve gereksiz yerlerde bu formu kaldırın. Genel öneri
  • Aynı üst alan adı altındaki diğer sunucuların güvenliğini ve çerez yazma yetkilerini kontrol edin; bir saldırganın oturum çerezi yerleştirme olasılığını azaltın. Genel öneri
  • Oturum kimliklerinin URL üzerinden taşınmasını engelleyin ve sunucu konteyner ayarlarını bu doğrultuda yapılandırın. Genel öneri

Bu açık kişisel verilerin sızmasına yol açabilir. Sistemlerinizde kullanıldığından şüpheleniyorsanız KVKK'daki ihlal bildirimi yükümlülüğünüzü (Kurul'a 72 saat içinde bildirim) hukuk danışmanınızla birlikte değerlendirin. Bu not hukuki tavsiye değildir.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Apache Software Foundation Apache Wicket ≥ 8.18.0, ≤ 8.19.0 –
≥ 9.23.0, ≤ 9.24.0 –
≥ 10.9.0, ≤ 10.11.0 –

Kaynaklar3 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.