Wysoki Odebrany

CVE-2026-68498

opublikowano:
modyfikacja:
Ocena CVSS
7.5
Wysoki · v3.1
wektor: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

>_ Opis

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

StreamReadConstraints.maxNameLength (domyślnie 50 000 znaków) ma na celu ograniczenie ilości pamięci, jaką może zająć pojedyncza nazwa właściwości obiektu JSON podczas analizowania, niezależnie od znacznie większej wartości maxStringLength (domyślnie 100 000 000 znaków), która ogranicza zwykłe wartości ciągów. W przypadku parserów zbudowanych w oparciu o źródła wprowadzania znaków — źródła Reader, String lub char[], wszystkie obsługiwane przez ReaderBasedJsonParser — to powiązanie nie jest stosowane podczas akumulacji nazwy. Zamiast tego ścieżka kodu ponownie wykorzystuje kontrolę długości ciągu znaków, która domyślnie jest około 2000 razy większa.



W wolnej ścieżce wprowadzania znaków funkcja ReaderBasedJsonParser._parseName2() gromadzi nazwę w buforze TextBuffer i po zapełnieniu segmentu wywołuje metodę TextBuffer.finishCurrentSegment(), która sprawdza tylko wartość maxStringLength. Prawidłowa kontrola StreamReadConstraints.validateNameLength(int) jest osiągana później w funkcji CharsToNameCanonicalizer.findSymbol(), gdy cała nazwa zostanie zeskanowana do cudzysłowu zamykającego. W tym momencie pełna nazwa — aż do znaków maxStringLength — jest już buforowana w pamięci.



Osoba atakująca zdalnie, która może przeanalizować w tej ścieżce pojedynczą wystarczająco długą nazwę właściwości obiektu JSON, może wymusić alokację rzędu 100 000 000 znaków (około 200 MB, przy czym księgowanie segmentów zwiększa rzeczywiste wykorzystanie szczytowe) przed zgłoszeniem wyjątku StreamConstraintsException zamiast około 50 000 znaków (około 100 KB) związanych z obietnicami API. Powtarzanie tej czynności w przypadku równoczesnych żądań może wyczerpać stertę i spowodować awarię procesu. Nie jest wymagane żadne uwierzytelnianie ani interakcja użytkownika. Ponieważ metoda StreamReadConstraints.maxDocumentLength jest domyślnie wyłączona (-1), nic innego nie ogranicza najpierw tokenu, więc problem można wykorzystać w konfiguracji domyślnej.



Nie ma to wpływu na parsery wprowadzania bajtów: UTF8StreamJsonParser, UTF8DataInputJsonParser i parsery nieblokujące (asynchroniczne) ponownie weryfikują wartość maxNameLength przy każdym zwiększeniu bufora dekodowania nazw za pomocą ParserBase._growNameDecodeBuffer(), odrzucając zbyt dużą nazwę po przydzieleniu zaledwie kilkudziesięciu kilobajtów. Aplikacje są ujawniane, gdy niezaufany kod JSON jest analizowany na podstawie ciągu znaków, czytnika lub znaku char[] — na przykład treści żądania HTTP już wczytanej do ciągu znaków — a nie z surowych bajtów UTF-8.



Ten problem dotyczy com.fasterxml.jackson.core:jackson-core od wersji 2.16.0 i Tools.jackson.core:jackson-core od wersji 3.0.0. Nie ma to wpływu na wydania wcześniejsze niż 2.16.0, ponieważ plik StreamReadConstraints.maxNameLength został po raz pierwszy wprowadzony w wersji jackson-core 2.16.0.

>_ 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