Wysoki Odroczony

CVE-2026-89407

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.

NumberInput.looksLikeValidNumber() w FasterXML jackson-core wstępnie sprawdza „liczby ciągnione” za pomocą dwóch wyrażeń regularnych: PATTERN_FLOAT ([+-]?[0-9]*[\.]?[0-9]+([eE][+-]?[0-9]+)?), obecny od wersji 2.17.0 i PATTERN_FLOAT_TRAILING_DOT, dodany w 2.17.2. PATTERN_FLOAT umieszcza sąsiednie kwantyfikatory w tej samej klasie znaków — opcjonalny ciąg [0-9]*, opcjonalna kropka, a następnie wymagany ciąg [0-9]+ — więc dane wejściowe, które ostatecznie nie pasują, zmuszają silnik śledzenia wstecznego Java do ponawiania każdego możliwego punktu podziału ciągu cyfr. 



Koszt dopasowania rośnie zatem wraz z kwadratem długości wejściowej. 



Osoba atakująca, która może dostarczyć kod JSON, który aplikacja deserializuje do liczbowego typu docelowego, osiąga tę metodę za pomocą domyślnego wymuszania ciągu na liczbę w jackson-databind (StdDeserializer i NumberDeserializers dla BigDecimal, BigInteger, Double i Float). 



Ponieważ wartość domyślna StreamReadConstraints.maxStringLength wynosi 20 000 000 znaków, żadne ograniczenie nie ogranicza danych wejściowych przed osiągnięciem wyrażenia regularnego. 



Testy przeprowadzone przez reportera potwierdziły wzrost liczby O(n^2) w pięciu kolejnych podwojeniach rozmiaru danych wejściowych, przy czym pojedynczy ciąg znaków o długości 160 000 znaków zajmował około 74 sekundy w jednym wywołaniu; dlatego niewielka liczba jednoczesnych żądań o zwykłym rozmiarze może wyczerpać pulę wątków serwera obsługujących żądania. 



Metoda, której dotyczy problem, nie istnieje przed wersją 2.17.0, zatem nie ma to wpływu na wersję 2.16.x i wcześniejsze. 



Poprawka zastępuje oba wyrażenia regularne ręcznie wykonywanym skanowaniem jednoprzebiegowym.

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