CRITICAL🇬🇧 English

CVE-2021-31875

Off-by-one heap buffer overflow w Cesanta MongooseOS mJS podczas parsowania JSON

CVSS 9.8v3.1pub. 2021-04-29upd. 2024-11-21

W bibliotece mJS 1.26 (Cesanta MongooseOS) specjalnie spreparowany ciąg JSON może wywołać przepełnienie bufora sterty (heap-based buffer overflow) typu off-by-one w funkcji mjs_json_parse. Podatność sklasyfikowana jako CRITICAL może potencjalnie prowadzić do przejęcia kontroli nad przepływem wykonania programu.

Pokaż oryginał (EN)

In mjs_json.c in Cesanta MongooseOS mJS 1.26, a maliciously formed JSON string can trigger an off-by-one heap-based buffer overflow in mjs_json_parse, which can potentially lead to redirection of control flow. NOTE: the original reporter disputes the significance of this finding because "there isn’t very much of an opportunity to exploit this reliably for an information leak, so there isn’t any real security impact."

🤖 Analiza AI
Jak działa

Błąd polega na przekroczeniu granic bufora o jeden bajt (off-by-one) podczas przetwarzania złośliwie sformatowanego ciągu JSON w pliku mjs_json.c. Nieprawidłowe obliczenie rozmiaru bufora (CWE-193) skutkuje zapisem poza jego granicami w obszarze sterty (CWE-787, heap-based buffer overflow). Atakujący może dostarczyć specjalnie spreparowany ciąg JSON, który wywołuje ten błąd. Wektor ataku jest sieciowy, nie wymaga uwierzytelnienia ani interakcji użytkownika.

Skutki

Udane wykorzystanie podatności może potencjalnie doprowadzić do przekierowania przepływu sterowania programem (redirection of control flow), co w skrajnym przypadku może skutkować wykonaniem dowolnego kodu. Warto odnotować, że oryginalny badacz zakwestionował praktyczną możliwość niezawodnego wykorzystania tej podatności do wycieku informacji lub osiągnięcia realnego skutku bezpieczeństwa.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dostępna jest wersja 1.26 z poprawką opublikowaną w repozytorium GitHub (https://github.com/cesanta/mjs/releases/tag/1.26) oraz pull request w repozytorium 418sec (https://github.com/418sec/mjs/pull/2).

Kogo dotyczy

Cesanta MongooseOS mJS w wersji 1.26 (plik mjs_json.c, funkcja mjs_json_parse)

Uwagi

Oryginalny reporter podatności zakwestionował jej praktyczne znaczenie, wskazując na brak realnego wpływu na bezpieczeństwo ze względu na trudność niezawodnego wykorzystania do wycieku informacji. Ocena CVSS 9.8 (CRITICAL) pochodzi od klasyfikatora, a nie od oryginalnego badacza.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Cesanta Mongooseos Mjs

    APP
    Cesanta
    1.26
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Memory
CWE
Referencje

Powiązane podatności

CVE-2023-50044CRITICAL9.8PL ✓ten sam vendor

Cesanta MJS: out-of-bounds read w funkcji getprop_builtin_foreign

CVE-2023-43338CRITICAL9.8PL ✓ten sam vendor

Przejęcie wskaźnika funkcji w Cesanta MJS umożliwiające RCE

CVE-2022-25299CRITICAL9.8PL ✓ten sam vendor

Zapis plików poza docelowym folderem w Cesanta Mongoose (mg_http_upload)

CVE-2021-26528CRITICAL9.1PL ✓ten sam vendor

Zapis poza granicami pamięci (OOB write) w Cesanta Mongoose HTTP server 7.0

CVE-2021-26529CRITICAL9.1PL ✓ten sam vendor

Zapis poza granicami bufora (OOB write) w Cesanta Mongoose HTTPS — mg_tls_init