CVE-2026-67215
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atak DoS może unieruchomić aplikację korzystającą z cJSON, co prowadzi do przerwania usługi i potencjalnej utraty danych.
Rekomendacja
Należy zaktualizować bibliotekę cJSON do wersji powyżej 1.7.19 lub zastosować ograniczenia głębokości rekurencji.
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-67216Średnie
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.
- 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 is vulnerable to uncontrolled recursion leading to stack exhaustion when an untrusted RFC 6902 JSON Patch is applied via cJSONUtils_ApplyPatches() or cJSONUtils_ApplyPatchesCaseSensitive(). A patch containing add and copy operations grafts duplicated subtrees to amplify document depth beyond the parser's nesting limit: cJSON_Delete() recurses with no depth bound, and the cJSON_Duplicate() guard CJSON_CIRCULAR_LIMIT is set to 10000, ten times the parser's 1000-level nesting limit and high enough to overflow a default thread stack. An attacker who can supply the patch document can crash the process, resulting in denial of service.

