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

CVE-2026-83594

Apache Wicket FileUploadToResourceField bileşeninde bellek tüketimi (aşırı büyük ayırma)

Apache Software Foundation Apache Wicket

Yüksek 8,3 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, web uygulamanızın sunucusunun hizmet dışı kalmasına yol açabilir ve müşterileriniz siteye erişemeyebilir. Saldırı için kimlik doğrulaması ve kullanıcı etkileşimi gerekmez, bu da riski yükseltir. Yalnızca bu bileşeni kullanan uygulamalar etkilenir, bu nedenle etkilenen olup olmadığınızı hemen kontrol edip gerekiyorsa güncelleme yapmanız önerilir.

ÖzetTürkçe

Apache Wicket'ın FileUploadToResourceField bileşeni, dosya yükleme sonucunu ayrı bir Ajax geri çağrısıyla istemciden alır ve bu bilgiyi gerçek yüklemeyle doğrulamaz. Saldırgan, hiç yüklenmemiş dosyalar için istek içinde keyfi boyut bildirebilir. UploadInfo#get metodu bu boyuta göre bayt dizisi ayırdığı için sunucu belleği hızla tükenebilir. Etkilenen sürümler 9.14.0–9.24.0 ve 10.0.0–10.11.0 aralığındadır; 8.x sürümü bu bileşeni içermez.

Saldırgan ne yapabilir?

Saldırgan, tek bir küçük istekle sunucuda yaklaşık iki gigabayt heap bellek ayırtabilir ve birkaç tekrarla Java sanal makinesinin hizmet verdiği tüm istekleri etkileyecek kadar belleği tüketerek hizmet dışı kalmaya neden olabilir.

Kaynaktaki açıklama (İngilizce)

Memory allocation with an excessive size value in Apache Wicket.

org.apache.wicket.markup.html.form.upload.resource.FileUploadToResourceField uploads files to a separately mounted resource rather than through a form, and is told the outcome afterwards over its own Ajax callback. That callback reads the request parameter filesInfo, a JSON array carrying a client file name, a size and a content type for each file, and turns it into the list of FileUploadToResourceField.UploadInfo that onUploadSuccess() receives. Nothing binds that JSON to an upload the resource performed and nothing re-derives it from the stored files, so the number of entries and every value in them are whatever the request supplied. The callback URL is rendered into the page, no prior upload is required, and both GET and POST reach it, so any client that can load the page can have the component report files that were never uploaded, without authenticating beyond whatever the page itself requires and without any user interaction.

UploadInfo#get(), which the class offers as the way to obtain the bytes of an upload, allocates a byte array from UploadInfo#getSize() before it opens the file. The array is therefore sized by the number the request supplied, and the allocation happens even for a file that was never stored. One small request can cost the server close to two gigabytes of heap, and the request is trivially repeatable, so a few of them exhaust the heap for every request the Java virtual machine is serving. A size that the conversion to int turns negative instead throws NegativeArraySizeException, which the exception handler inside that method does not cover, so it escapes into the application.

An application is affected where it uses FileUploadToResourceField, which is not the ordinary upload path through FileUploadField and Form and has to be extended and mounted deliberately. The allocation additionally requires the application to call UploadInfo#get() rather than reading UploadInfo#getFile() itself. Where the application denies the ENABLE action on the field through its authorization strategy, the callback is refused like any other listener. The 8.x line does not contain this component and is not affected.

This issue affects Apache Wicket: from 9.14.0 through 9.24.0, from 10.0.0 through 10.11.0. Users are recommended to upgrade to version 9.25.0 or 10.12.0, which fix the issue.

Ne yapmalı?

  1. Apache Wicket'ı 9.x dalında 9.25.0 sürümüne veya 10.x dalında 10.12.0 sürümüne yükseltin. Genel öneri
  2. Uygulamanızın FileUploadToResourceField bileşenini kullanıp kullanmadığını kontrol edin; kullanmıyorsanız riski doğrudan ortadan kaldırmak için bu bileşenin kullanımını kaldırın. Genel öneri
  3. Bileşenin geri çağrısına erişimi, yetkilendirme stratejisinde ENABLE eylemini reddederek kısıtlayın; böylece geri çağrı yetkisiz isteklerde reddedilir. Genel öneri
  4. Güncelleme yapamıyorsanız uygulamanızda UploadInfo#get yerine UploadInfo#getFile kullanımına geçin; bu, açığın tetiklenmesi için gereken koşullardan birini ortadan kaldırır. Genel öneri

Ek önlemler

  • Java sanal makinesinin bellek kullanımını ve heap tüketim eğilimlerini izleyerek olağandışı bellek artışlarını erken tespit edin. Genel öneri
  • Dosya yükleme geri çağrı uç noktalarına yapılan isteklerde sıra dışı sıklık ve boyut değerlerini izleyin ve gerekirse hız sınırlaması uygulayın. Genel öneri
  • Üretim ortamında bağımlılık sürümlerini düzenli olarak gözden geçirin ve güvenlik duyurularını takip edin. Genel öneri

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Apache Software Foundation Apache Wicket ≥ 9.14.0, ≤ 9.24.0 –
≥ 10.0.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.