Katalog CVE

CVE-2026-32875

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.47%

Percentyl 38 - wyżej niż 38% wszystkich znanych CVE

Streszczenie

UltraJSON w wersjach 5.10 do 5.11.0 zawiera podatność na przepełnienie bufora lub nieskończoną pętlę podczas obsługi dużych wartości parametru wcięcia (indent). Funkcja ujson.dumps() powoduje awarię interpretera Pythona (błąd segmentacji), gdy iloczyn parametru indent i głębokości zagnieżdżenia danych wejściowych przekracza INT32_MAX, lub może utknąć w nieskończonej pętli, gdy indent jest dużą liczbą ujemną. Obie sytuacje wynikają z przepełnienia/liczby całkowitej podczas obliczania pamięci na wcięcia i mogą prowadzić do odmowy usługi (DoS).

Ocena ryzyka

Organizacja narażona jest na atak DoS, jeśli usługa korzystająca z UltraJSON pozwala użytkownikom na kontrolowanie parametru indent bez ograniczenia go do małych, nieujemnych wartości. Może to doprowadzić do awarii aplikacji lub jej zawieszenia, zakłócając dostępność usługi.

Rekomendacja

Należy natychmiast zaktualizować bibliotekę UltraJSON do wersji 5.12.0 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy ograniczyć parametr indent do małych, nieujemnych wartości (np. 0-8) i nie przekazywać go z niezaufanych źródeł.

Inne podatności w UltraJSON

Oryginalny opis (angielski, źródło NVD)

UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Versions 5.10 through 5.11.0 are vulnerable to buffer overflow or infinite loop through large indent handling. ujson.dumps() crashes the Python interpreter (segmentation fault) when the product of the indent parameter and the nested depth of the input exceeds INT32_MAX. It can also get stuck in an infinite loop if the indent is a large negative number. Both are caused by an integer overflow/underflow whilst calculating how much memory to reserve for indentation. And both can be used to achieve denial of service. To be vulnerable, a service must call ujson.dump()/ujson.dumps()/ujson.encode() whilst giving untrusted users control over the indent parameter and not restrict that indentation to reasonably small non-negative values. A service may also be vulnerable to the infinite loop if it uses a fixed negative indent. An underflow always occurs for any negative indent when the input data is at least one level nested but, for small negative indents, the underflow is usually accidentally rectified by another overflow. This issue has been fixed in version 5.12.0.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS