Błąd optymalizacji bytecode w silniku JavaScript Facebook Hermes prowadzi do podatności use-after-free, która może zostać wykorzystana do uzyskania arbitralnego wykonania kodu. Podatność jest krytyczna, ponieważ nie wymaga żadnego uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
A bytecode optimization bug in Hermes prior to commit e6ed9c1a4b02dc219de1648f44cd808a56171b81 could be used to cause an use-after-free and obtain arbitrary code execution via a carefully crafted payload. Note that this is only exploitable in cases where Hermes is used to execute untrusted JavaScript. Hence, most React Native applications are not affected.
Błąd znajduje się w etapie optymalizacji bytecode silnika Hermes — podczas przetwarzania kodu JavaScript nieprawidłowa optymalizacja powoduje, że program odwołuje się do obszaru pamięci, który został już zwolniony (use-after-free, CWE-416). Atakujący może skonstruować specjalnie spreparowany payload JavaScript, który wywołuje ten błąd i pozwala na kontrolowane wykonanie dowolnego kodu. Podatność jest możliwa do wykorzystania wyłącznie wtedy, gdy silnik Hermes jest użyty do wykonywania niezaufanego kodu JavaScript.
Skuteczny atak pozwala atakującemu na uzyskanie pełnego, arbitralnego wykonania kodu (RCE) w kontekście procesu uruchamiającego Hermes. Zagrożone są poufność, integralność oraz dostępność systemu.
Należy zaktualizować Facebook Hermes do wersji zawierającej commit e6ed9c1a4b02dc219de1648f44cd808a56171b81 lub nowszej. Szczegóły dostępne w referencjach producenta: https://www.facebook.com/security/advisories/cve-2023-28081. Dodatkowo należy upewnić się, że Hermes nie jest używany do wykonywania niezaufanego kodu JavaScript, co eliminuje możliwość wykorzystania podatności.
Facebook Hermes we wszystkich wersjach poprzedzających commit e6ed9c1a4b02dc219de1648f44cd808a56171b81; dotyczy wyłącznie środowisk, w których Hermes wykonuje niezaufany kod JavaScript — większość aplikacji React Native nie jest podatna.
Producent wyraźnie zaznacza, że większość aplikacji React Native nie jest narażona, ponieważ podatność wymaga wykonywania niezaufanego kodu JavaScript przez Hermes. Scenariusze ryzyka obejmują przede wszystkim środowiska dynamicznie ładujące zewnętrzny kod JS.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HFacebook Hermes
APPFacebookwszystkie wersje
Powiązane podatności
Use-after-free w Facebook Hermes umożliwiający RCE przez JavaScript
RCE w Facebook Hermes — błąd zapisu poza granicami przy konwersji BigInt
RCE w Facebook Hermes via type confusion przy kopiowaniu właściwości obiektów
Type confusion w TypedArray silnika Hermes umożliwia RCE przez JavaScript
Out-of-bounds write w Facebook Hermes przy obsłudze dużych tablic