W bibliotece Artifex MuJS 1.0.5 wykryto przepełnienie stosu (stack-based buffer overflow) w implementacjach funkcji Number#toFixed() oraz numtostr w pliku jsnumber.c. Podatność uzyskała ocenę krytyczną CVSS 9.8, ponieważ może być wykorzystana zdalnie bez uwierzytelnienia.
▸ Pokaż oryginał (EN)
An issue was discovered in Artifex MuJS 1.0.5. The Number#toFixed() and numtostr implementations in jsnumber.c have a stack-based buffer overflow.
Błąd wynika z nieprawidłowej obsługi bufora na stosie w funkcjach odpowiedzialnych za konwersję liczb do reprezentacji tekstowej — Number#toFixed() oraz numtostr — zaimplementowanych w pliku jsnumber.c. Przekazanie odpowiednio spreparowanej wartości numerycznej może spowodować zapis poza granicami przydzielonego bufora na stosie (CWE-787: Out-of-bounds Write). Exploit może być wywołany poprzez przetworzenie złośliwego kodu JavaScript przez silnik MuJS.
Udany atak może prowadzić do wykonania dowolnego kodu (RCE) w kontekście aplikacji korzystającej z biblioteki MuJS, a także do naruszenia poufności, integralności i dostępności systemu.
Należy zaktualizować bibliotekę MuJS do wersji zawierającej poprawkę wprowadzoną w commicie da632ca08f240590d2dec786722ed08486ce1be6 dostępnym w repozytorium GitHub projektu. Użytkownicy dystrybucji Fedora powinni zastosować patche dostępne w oficjalnym kanale aktualizacji pakietów.
Artifex MuJS w wersji 1.0.5
Poprawka została opublikowana w repozytorium GitHub projektu MuJS jako commit da632ca08f240590d2dec786722ed08486ce1be6. Błąd został zgłoszony w systemie śledzenia błędów Ghostscript pod numerem 700938.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HArtifex Mujs
APPArtifex1.0.5
Powiązane podatności
Use-after-free w MuJS — błąd dostępu do właściwości source wyrażenia regularnego
Buffer overflow w Artifex MuJS przez integer overflow przy parsowaniu liczb zmiennoprzecinkowych
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
Heap-based buffer overflow w MuJS — przepełnienie bufora na stercie