CVE-2026-83557
ŚrednieCVSS 5.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 46 - wyżej niż 46% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wymusić utworzenie obiektów wybranych klas, co w przypadku java.io.File prowadzi do manipulacji ścieżkami (path traversal), jeśli aplikacja wykonuje na takiej wartości operacje zależne od ścieżki. Nie zidentyfikowano przypadku samej deserializacji prowadzącej do wykonania kodu, ale ryzyko obejmuje aplikacje używające @JsonTypeInfo z Comparable jako typem bazowym.
Rekomendacja
Zaktualizuj bibliotekę 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. Jeśli aktualizacja nie jest możliwa, skonfiguruj jawny PolymorphicTypeValidator dla właściwości i klas z adnotacją @JsonTypeInfo.
Inne podatności w jackson-databind
Zobacz wszystkie- CVE-2026-68497Wysokie
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.
- 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-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)
DefaultBaseTypeLimitingValidator is the PolymorphicTypeValidator applied automatically whenever @JsonTypeInfo is used without an explicitly configured custom validator. It denies polymorphic resolution only for a fixed set of "unsafe base types", and its isSafeSubType method returns true unconditionally for every base type outside that set. java.lang.Comparable was absent from the list despite being implemented by a very large fraction of JDK and application classes, comparable in breadth to java.io.Serializable, which is on the list for that reason. An application declaring an @JsonTypeInfo-annotated property or class with Comparable as its base type, and no custom PolymorphicTypeValidator, will accept a type identifier for essentially any class implementing Comparable. This yields an attacker-controlled object instantiation primitive; a demonstrated case constructs a java.io.File for an arbitrary attacker-chosen path, which becomes path-traversal-adjacent if the application subsequently calls path-sensitive methods on the value. No class implementing Comparable has been identified that yields code execution through deserialization alone. Global Default Typing via activateDefaultTyping is not affected, because that method structurally requires an explicit PolymorphicTypeValidator argument. This affects com.fasterxml.jackson.core:jackson-databind from 2.11.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.

