CVE-2026-68497
WysokieCVSS 7.5Streszczenie
Podatność w bibliotece jackson-databind polega na tym, że deserializatory typów XML (Duration, XMLGregorianCalendar) przekazują surowy łańcuch JSON bezpośrednio do konstruktorów BigInteger/BigDecimal, które mają złożoność kwadratową względem liczby cyfr. Ponieważ cyfry znajdują się w tokenie łańcucha znaków, a nie liczby, zabezpieczenie StreamReadConstraints.maxNumberLength nie działa, co pozwala atakującemu na wywołanie długotrwałego obciążenia CPU pojedynczym żądaniem.
Ocena ryzyka
Nieuwierzytelniony atakujący może wysłać kilka równoczesnych żądań z bardzo długimi wartościami Duration, powodując wyczerpanie wątków roboczych serwera i odmowę usługi (DoS). Podatność dotyczy domyślnej konfiguracji ObjectMapper/JsonMapper bez dodatkowego opt-in.
Rekomendacja
Należy jak najszybciej zaktualizować jackson-databind do wersji 2.18.10, 2.21.6, 2.22.2, 3.1.6 lub 3.2.2 (w zależności od używanej gałęzi). Do czasu aktualizacji zaleca się ograniczenie rozmiaru przychodzących żądań oraz monitorowanie nietypowego zużycia CPU.
Inne podatności w jackson-databind
Zobacz wszystkie- CVE-2021-20190Wysokie
Błąd w jackson-databind przed wersją 2.9.10.7 powoduje nieprawidłowe zarządzanie interakcją między gadżetami serializacji a typowaniem. Największe zagrożenie dotyczy poufności i integralności danych oraz dostępności systemu.
- CVE-2026-83557Średnie
Walidator DefaultBaseTypeLimitingValidator w bibliotece jackson-databind, stosowany automatycznie przy użyciu adnotacji @JsonTypeInfo bez własnego walidatora, nie uwzględniał typu java.lang.Comparable na liście niebezpiecznych typów bazowych. W efekcie aplikacja deklarująca właściwość lub klasę z Comparable jako typem bazowym akceptuje identyfikatory typów dla praktycznie dowolnej klasy implementującej Comparable, co pozwala atakującemu na tworzenie obiektów pod jego kontrolą. Wykazano możliwość utworzenia obiektu java.io.File dla dowolnej ścieżki.
- CVE-2026-19032Średnie
Deserializator jackson-databind dla java.nio.file.Path rozwiązuje URI dostarczone przez atakującego bez ograniczania schematu URI. Może to pozwolić na wybranie i sterowanie dowolnym zarejestrowanym FileSystemProvider podczas deserializacji niezaufanego JSON. Wpływ jest ograniczony, jeśli dostępne są tylko wbudowane providery JDK, ale może być poważniejszy przy obecności zewnętrznych providerów.
- CVE-2026-77310Średnie
jackson-databind, biblioteka do wiązania danych ogólnego przeznaczenia dla Jackson Data Processor, przed wersjami 2.18.9, 2.21.5, 2.22.1, 3.1.5 i 3.2.1 zawiera podatność w gałęzi java.net.InetAddress w metodzie FromStringDeserializer.Std._deserialize(). Funkcja wywołuje InetAddress.getByName() na danych kontrolowanych przez atakującego, co powoduje niecierpliwe rozwiązywanie DNS podczas deserializacji i umożliwia ataki SSRF oparte na DNS oraz enumerację wewnętrznych hostów.
- CVE-2026-59889Średnie
W bibliotece jackson-databind wykryto podatność polegającą na tym, że metoda UnwrappedPropertyHandler.processUnwrapped() przetwarza buforowany JSON dla właściwości @JsonUnwrapped bez sprawdzania widoczności (@JsonView). Umożliwia to atakującemu zapisanie właściwości oznaczonej zarówno @JsonView, jak i @JsonUnwrapped, nawet przy mniej uprzywilejowanym widoku aktywnym.
- CVE-2026-59888Średnie
Podatność w jackson-databind pozwala na ominięcie adnotacji @JsonIgnore w rekordach Javy używających PropertyNamingStrategy. Problem występuje w wersjach od 2.15.0 do 2.18.8, 2.21.4 i 3.1.4, gdzie ignorowane pole jest rejestrowane pod oryginalną nazwą przed zastosowaniem strategii nazewnictwa, co umożliwia przypisanie zmienionego klucza JSON do parametru konstruktora rekordu.
- CVE-2026-54515Średnie
W bibliotece jackson-databind od wersji 2.8.0 do 2.18.9, 2.21.5 i 3.1.4 występuje podatność polegająca na tym, że podczas deserializacji obiektów z adnotacją @JsonIgnoreProperties, wykluczone właściwości są usuwane z mapy BeanPropertyMap, ale późniejsze przetwarzanie z uwzględnieniem wielkości liter (ACCEPT_CASE_INSENSITIVE_PROPERTIES) odtwarza oryginalną, niefiltrowaną mapę, przywracając usunięte właściwości. W rezultacie zignorowana właściwość staje się ponownie zapisywalna.
- CVE-2026-54514Średnie
Podatność w jackson-databind od wersji 2.0.0 do 2.18.8, 2.21.4 i 3.1.4 powoduje, że podczas deserializacji obiektu InetSocketAddress następuje natychmiastowe rozwiązywanie nazw DNS dla danych wejściowych pochodzących z niezaufanego źródła. Atakujący może wymusić wykonanie zapytania DNS na wybranym przez siebie hoście jeszcze przed jakąkolwiek walidacją aplikacyjną.
- CVE-2026-54513Wysokie
Jackson-databind od wersji 2.10.0 do 2.18.8, 2.21.4 i 3.1.4 zawiera lukę w BasicPolymorphicTypeValidator, gdzie metoda allowIfSubTypeIsArray() zezwala na dowolne typy tablicowe bez walidacji typu elementu. Pozwala to na ominięcie listy dozwolonych typów i deserializację niebezpiecznych obiektów, takich jak EvilType[].
- CVE-2023-35116Średnie
Jackson-databind w wersjach do 2.15.2 pozwala atakującym na spowodowanie odmowy usługi lub innego nieokreślonego wpływu poprzez skonstruowany obiekt wykorzystujący cykliczne zależności.
Oryginalny opis (angielski, źródło NVD)
jackson-databind binds a JSON string to a javax.xml.datatype.Duration or javax.xml.datatype.XMLGregorianCalendar field by passing the raw string verbatim to DatatypeFactory.newDuration(value) or newXMLGregorianCalendar(value) in CoreXMLDeserializers.Std._deserialize. These deserializers are registered by default with no opt-in, so a plain ObjectMapper or JsonMapper with no polymorphic typing and no special configuration reaches this path. The XML Schema lexical grammar permits numeric components of arbitrary length, which the JDK materializes through the native BigInteger(String) and BigDecimal(String) constructors, both quadratic in digit count. Because the digits sit inside a JSON string token rather than a JSON number token, jackson-core's StreamReadConstraints.maxNumberLength guard never applies; jackson's own NumberDeserializers call validateIntegerLength or validateFPLength before parsing a stringified number, but the XML datatype deserializer omits that pre-check. An unauthenticated attacker can therefore submit a single request of a few megabytes, such as a Duration value consisting of the letter P followed by several million digits and the letter Y, and force tens of seconds to several minutes of single-threaded CPU work; a handful of concurrent requests can saturate a server's worker threads. This affects com.fasterxml.jackson.core:jackson-databind from 2.0.0 before 2.18.10, from 2.19.0 before 2.21.6, and from 2.22.0 before 2.22.2, and tools.jackson.core:jackson-databind from 3.0.0 before 3.1.6 and from 3.2.0 before 3.2.2. Users should upgrade to 2.18.10, 2.21.6, 2.22.2, 3.1.6, or 3.2.2.

