Podatność typu buffer over-read (CWE-125) w funkcji parse_string() biblioteki cJSON umożliwia atakującemu odczyt danych spoza przeznaczonego bufora poprzez spreparowany ciąg znaków JSON. Ocena CVSS 9.8 wskazuje na krytyczny poziom zagrożenia, ponieważ exploit nie wymaga uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
parse_string in cJSON.c in cJSON before 2016-10-02 has a buffer over-read, as demonstrated by a string that begins with a " character and ends with a \ character.
Funkcja parse_string() w pliku cJSON.c nieprawidłowo obsługuje ciągi znaków JSON, które rozpoczynają się znakiem cudzysłowu (") i kończą odwrotnym ukośnikiem (\). Taka sekwencja powoduje odczyt danych poza granicą przydzielonego bufora pamięci. Atakujący może dostarczyć bibliotece spreparowany dokument JSON zawierający tego rodzaju ciąg, aby wywołać błąd.
Atakujący może uzyskać dostęp do danych z pamięci procesu wykraczających poza przeznaczony bufor, co może prowadzić do ujawnienia poufnych informacji, a w sprzyjających okolicznościach także do naruszenia integralności lub dostępności aplikacji korzystającej z biblioteki.
Należy zaktualizować bibliotekę cJSON do wersji zawierającej poprawkę z commita 94df772485c92866ca417d92137747b2e3b0a917 dostępnego w repozytorium GitHub. Należy zastosować patche dostępne u producenta zgodnie z referencjami.
Biblioteka cJSON (Davegamble cJSON) w wersjach sprzed 2016-10-02
Podatność została opublikowana na liście oss-security w dniu 2016-11-07, mimo że poprawka w repozytorium pochodzi z 2016-10-02. Wpis CVE został formalnie opublikowany dopiero 2019-04-29.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDavegamble Cjson
APPDavegamble< 0.0.0
Powiązane podatności
Out-of-bounds access w cJSON przez funkcję decode_array_index_from_pointer
cJSON: out-of-bounds access przez znak \x00 w literale tekstowym
Dostęp poza zakresem pamięci w cJSON związany z komentarzami wieloliniowymi
Use-after-free w bibliotece cJSON umożliwiający RCE
cJSON: niekontrolowana rekurencja prowadząca do wyczerpania stosu (DoS)