CVE-2026-67216
ŚrednieCVSS 5.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 24 - wyżej niż 24% wszystkich znanych CVE
Streszczenie
Podatność w bibliotece cJSON (do wersji 1.7.19) powoduje nieefektywną złożoność algorytmiczną w funkcji cJSON_Compare(), która przy porównywaniu zagnieżdżonych obiektów wykonuje wykładniczą liczbę operacji, co może prowadzić do odmowy usługi (DoS) przy głęboko zagnieżdżonych dokumentach.
Ocena ryzyka
Atakujący może spowodować znaczne obciążenie procesora, prowadząc do spowolnienia lub zawieszenia aplikacji korzystającej z cJSON_Compare() na danych pochodzących od atakującego.
Rekomendacja
Należy zaktualizować bibliotekę cJSON do wersji 1.7.20 lub nowszej, jeśli dostępna.
Inne podatności w cJSON
Zobacz wszystkie- CVE-2026-29036Wysokie
cJSON w wersjach od 1.5.0 do 1.7.19 zawiera podatność nieprawidłowo rozwiązywanego nazwy lub odniesienia w funkcji decode_pointer_inplace() w pliku cJSON_Utils.c, która pozwala nieuwierzytelnionym atakującym powodować, że operacje JSON Patch będą celować w niewłaściwe klucze obiektów, dostarczając spreparowane sekwencje ucieczki JSON Pointer (~0 lub ~1) w ścieżkach poprawek. Atakujący mogą przesyłać złośliwe dane wejściowe JSON Patch zgodne z RFC 6902 do aplikacji używających cJSONUtils_ApplyPatches() lub cJSONUtils_ApplyPatchesCaseSensitive(), aby po cichu uszkodzić dane lub usunąć niezamierzone klucze, potencjalnie omijając kontrolę autoryzacji w aplikacjach, które polegają na JSON Patch do modyfikacji danych z kontrolą dostępu.
- CVE-2026-67217Średnie
Podatność w bibliotece cJSON (do wersji 1.7.19) powoduje, że operacje JSON Patch (RFC 6902) nie są wykonywane atomowo – w przypadku błędu walidacji, docelowy element jest usuwany przed pełnym sprawdzeniem, co pozwala atakującemu na modyfikację dokumentu pomimo zgłoszenia błędu.
- CVE-2026-67215Wysokie
cJSON do wersji 1.7.19 jest podatny na niekontrolowaną rekurencję prowadzącą do wyczerpania stosu podczas stosowania niezaufanej łatki JSON Patch (RFC 6902) przez funkcje cJSONUtils_ApplyPatches. Atakujący może dostarczyć łatkę z operacjami add i copy, które multiplikują zagnieżdżenie dokumentu, powodując przepełnienie stosu i awarię procesu.
- CVE-2026-16554Wysokie
Biblioteka cJSON jest podatna na przepełnienie liczb całkowitych w funkcji print_string_ptr() w cJSON.c na platformach 32-bitowych. Licznik escape_characters, 32-bitowy size_t, może się zawinąć podczas przetwarzania ciągów zawierających około 858 993 460 lub więcej znaków kontrolnych, powodując alokację bufora wyjściowego na podstawie zaniżonej długości. Gdy używana jest cJSON_PrintBuffered() z prealokowanym buforem, późniejsza pętla zapisu przepełnia alokację sterty. Atakujący dostarczający spreparowany ciąg JSON do aplikacji używającej cJSON na platformie 32-bitowej może spowodować przepełnienie bufora sterty, potencjalnie prowadząc do zdalnego wykonania kodu, ujawnienia informacji lub odmowy usługi. Ponieważ próby kontaktu z twórcą projektu były nieskuteczne, podatność została potwierdzona tylko w wersji 1.7.19, ale może również dotyczyć innych wersji.
Oryginalny opis (angielski, źródło NVD)
cJSON through 1.7.19 contains an inefficient algorithmic complexity flaw in cJSON_Compare(). When comparing objects, the function recurses into each shared subtree twice, once in each direction, with no depth guard, making the running time exponential in nesting depth. A small, deeply nested document of a few hundred bytes (depth around 40) compared for equality consumes hours of CPU, and the cost roughly doubles with each additional level of nesting. An application that calls cJSON_Compare() on attacker-influenced JSON that is structurally equal to a reference document is exposed to a denial-of-service condition.

