Podatność typu use-after-free w silniku JavaScript Hermes (Facebook) pozwala atakującemu na zdalne wykonanie kodu (RCE) poprzez dostarczenie złośliwego kodu JavaScript. Błąd jest krytyczny (CVSS 9.8) i nie wymaga żadnego uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
A use-after-free related to unsound inference in the bytecode generation when optimizations are enabled for Hermes prior to commit da8990f737ebb9d9810633502f65ed462b819c09 could have been used by an attacker to achieve remote code execution. 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 wynika z nieprawidłowego wnioskowania (unsound inference) podczas generowania bytecode'u, gdy włączone są optymalizacje kompilatora Hermes. Prowadzi to do sytuacji use-after-free — silnik odwołuje się do już zwolnionego obszaru pamięci, co atakujący może wykorzystać do przejęcia kontroli nad wykonaniem. Luka jest eksploitowalna wyłącznie w scenariuszach, w których Hermes wykonuje niezaufany kod JavaScript — np. w aplikacjach ładujących zewnętrzny skrypt.
Atakujący może osiągnąć zdalne wykonanie dowolnego kodu (RCE) w kontekście aplikacji korzystającej z Hermes, co może prowadzić do pełnego naruszenia poufności, integralności oraz dostępności danych.
Należy zaktualizować Hermes do wersji zawierającej commit da8990f737ebb9d9810633502f65ed462b819c09 lub nowszej. Jako środek tymczasowy warto rozważyć wyłączenie optymalizacji kompilatora Hermes oraz unikanie wykonywania niezaufanego kodu JavaScript w środowiskach opartych na tym silniku.
Facebook Hermes we wszystkich wersjach poprzedzających commit da8990f737ebb9d9810633502f65ed462b819c09. Dotyczy wyłącznie przypadków, gdy Hermes jest używany do wykonywania niezaufanego kodu JavaScript — większość standardowych aplikacji React Native nie jest podatna.
Podatność jest eksploitowalna jedynie gdy Hermes wykonuje niezaufany JavaScript — producent wprost wskazuje, że większość aplikacji React Native nie jest narażona na atak.
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 payload JS
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