W bibliotece Artifex MuJS (wersje 1.0.1–1.1.1) istnieje podatność typu buffer overflow w pliku jsdtoa.c, wynikająca z integer overflow podczas odczytu wykładnika liczby zmiennoprzecinkowej. Podatność ma krytyczny wynik CVSS 9.8 i może być wykorzystana zdalnie bez uwierzytelnienia.
▸ Pokaż oryginał (EN)
Buffer-overflow in jsdtoa.c in Artifex MuJS in versions 1.0.1 to 1.1.1. An integer overflow happens when js_strtod() reads in floating point exponent, which leads to a buffer overflow in the pointer *d.
Funkcja js_strtod() podczas parsowania wykładnika liczby zmiennoprzecinkowej nie waliduje poprawnie zakresu wartości całkowitej, co prowadzi do integer overflow. Przepełnienie liczby całkowitej skutkuje następnie buffer overflow na wskaźniku *d w pliku jsdtoa.c. Atakujący może dostarczyć specjalnie spreparowany ciąg znaków reprezentujący liczbę zmiennoprzecinkową z nieprawidłowym wykładnikiem, aby wywołać ten błąd.
Atakujący może spowodować uszkodzenie pamięci procesu, co potencjalnie prowadzi do wykonania dowolnego kodu (RCE), przejęcia kontroli nad systemem lub jego destabilizacji (odmowa usługi). Wektor ataku sieciowy bez wymaganych uprawnień i interakcji użytkownika znacząco zwiększa ryzyko.
Należy zaktualizować Artifex MuJS do wersji zawierającej poprawkę dostępną w repozytorium producenta (commit 833b6f1672b4f2991a63c4d05318f0b84ef4d550 na GitHub). Jeśli aktualizacja nie jest możliwa, należy ograniczyć przetwarzanie niezaufanych danych wejściowych przez bibliotekę MuJS.
Artifex MuJS w wersjach od 1.0.1 do 1.1.1 włącznie.
Błąd został zgłoszony i udokumentowany w issue #148 repozytorium GitHub projektu MuJS. Poprawka została wprowadzona w commicie 833b6f1672b4f2991a63c4d05318f0b84ef4d550.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HArtifex Mujs
APPArtifex1.0.1 – 1.1.1
Powiązane podatności
Use-after-free w MuJS — błąd dostępu do właściwości source wyrażenia regularnego
Heap buffer overflow w Artifex MuJS — zagnieżdżone bloki try/finally
Przepełnienie bufora w MuJS 1.0.5 przez nieograniczony rozmiar wyrażenia regularnego
Stack-based buffer overflow w Artifex MuJS — funkcje Number#toFixed() i numtostr
Heap-based buffer overflow w MuJS — przepełnienie bufora na stercie