Wysoki Odebrany

CVE-2026-83594

opublikowano:
modyfikacja:
Ocena CVSS
8.3
Wysoki · v4.0
wektor: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:H/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

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

Alokacja pamięci o nadmiernej wartości rozmiaru w Apache Wicket.

org.apache.wicket.markup.html.form.upload.resource.FileUploadToResourceField przesyła pliki do oddzielnie zamontowanego zasobu, a nie za pośrednictwem formularza, a następnie otrzymuje informację o wyniku za pośrednictwem własnego wywołania zwrotnego Ajax. To wywołanie zwrotne odczytuje parametr żądania filesInfo, tablicę JSON zawierającą nazwę pliku klienta, rozmiar i typ zawartości każdego pliku, i przekształca go w listę FileUploadToResourceField.UploadInfo odbieraną przez funkcję onUploadSuccess(). Nic nie wiąże tego JSON-a z przesyłaniem wykonanego zasobu i nic nie wyprowadza go ponownie z przechowywanych plików, więc liczba wpisów i każda wartość w nich jest niezależna od dostarczonego żądania. Adres URL wywołania zwrotnego jest renderowany na stronie, nie jest wymagane wcześniejsze przesyłanie i docierają do niego zarówno GET, jak i POST, więc każdy klient, który może załadować stronę, może uzyskać pliki raportów składowych, które nigdy nie zostały przesłane, bez uwierzytelniania wykraczającego poza wymagania samej strony i bez jakiejkolwiek interakcji z użytkownikiem.

UploadInfo#get(), którą klasa oferuje jako sposób na uzyskanie bajtów do przesłania, przydziela tablicę bajtów z UploadInfo#getSize() przed otwarciem pliku. Rozmiar tablicy jest zatem ustalany na podstawie liczby dostarczonej przez żądanie, a alokacja odbywa się nawet w przypadku pliku, który nigdy nie był przechowywany. Jedno małe żądanie może kosztować serwer prawie dwa gigabajty sterty, a żądanie jest banalnie powtarzalne, więc kilka z nich wyczerpuje stertę dla każdego żądania obsługiwanego przez wirtualną maszynę Java. Rozmiar, którego konwersja na int staje się ujemna, zamiast tego zgłasza wyjątek NegativeArraySizeException, którego nie obejmuje procedura obsługi wyjątków w tej metodzie, więc ucieka do aplikacji.

Aplikacja ma na to wpływ, gdy korzysta z FileUploadToResourceField, która nie jest zwykłą ścieżką przesyłania za pośrednictwem FileUploadField i Form i musi zostać celowo rozszerzona i zamontowana. Alokacja dodatkowo wymaga, aby aplikacja wywołała UploadInfo#get() zamiast czytać samą UploadInfo#getFile(). Jeśli aplikacja odmówi wykonania działania ENABLE w polu poprzez swoją strategię autoryzacji, wywołanie zwrotne zostanie odrzucone jak w przypadku każdego innego słuchacza. Linia 8.x nie zawiera tego komponentu i nie ma na to wpływu.

Ten problem dotyczy Apache Wicket: od 9.14.0 do 9.24.0, od 10.0.0 do 10.11.0. Użytkownikom zaleca się aktualizację do wersji 9.25.0 lub 10.12.0, która rozwiązuje problem.

>_ Słabości (CWE)

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org