W bibliotece Artifex MuJS 1.0.5 odkryto podatność polegającą na braku ograniczenia rozmiaru programu wyrażenia regularnego w funkcji regcompx w pliku regexp.c. Prowadzi to do przepełnienia bufora listy składni, co zostało ocenione jako krytyczne zagrożenie (CVSS 9.8).
▸ Pokaż oryginał (EN)
An issue was discovered in Artifex MuJS 1.0.5. regcompx in regexp.c does not restrict regular expression program size, leading to an overflow of the parsed syntax list size.
Funkcja regcompx odpowiedzialna za kompilację wyrażeń regularnych nie weryfikuje ani nie ogranicza rozmiaru generowanego programu wyrażenia regularnego. Atakujący może dostarczyć specjalnie spreparowane wyrażenie regularne, które powoduje przepełnienie wewnętrznej listy przechowującej sparsowaną składnię. Odpowiada to klasyfikacji CWE-185 (niepoprawna walidacja wyrażeń regularnych), gdzie błędna obsługa danych wejściowych prowadzi do naruszenia integralności pamięci.
Atakujący zdalnie, bez uwierzytelnienia, może doprowadzić do naruszenia poufności, integralności oraz dostępności systemu — w skrajnym przypadku możliwe jest wykonanie dowolnego kodu (RCE) w kontekście procesu korzystającego z biblioteki MuJS.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Poprawka została opublikowana w repozytorium MuJS pod adresem wskazanym w referencjach (commit 7f50591861525f76e3ec7a63392656ff8c030af9).
Artifex MuJS w wersji 1.0.5
Podatność dotyczy biblioteki JavaScript MuJS wykorzystywanej m.in. w produktach ekosystemu Ghostscript/MuPDF. Poprawka dostępna jako konkretny commit w oficjalnym repozytorium git.ghostscript.com.
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
Stack-based buffer overflow w Artifex MuJS — funkcje Number#toFixed() i numtostr
Heap-based buffer overflow w MuJS — przepełnienie bufora na stercie