Błąd w mechanizmie konwersji BigInt do Number w silniku JavaScript Hermes umożliwia wykonanie dowolnego kodu (RCE) poprzez zapis poza granicami bufora (out-of-bound write). Podatność dotyczy wyłącznie środowisk, w których Hermes wykonuje niezaufany kod JavaScript.
▸ Pokaż oryginał (EN)
An error in BigInt conversion to Number in Hermes prior to commit a6dcafe6ded8e61658b40f5699878cd19a481f80 could have been used by a malicious attacker to execute arbitrary code due to an out-of-bound write. Note that this bug is only exploitable in cases where Hermes is used to execute untrusted JavaScript. Hence, most React Native applications are not affected.
Podczas konwersji wartości typu BigInt do typu Number w silniku Hermes dochodzi do nieprawidłowego zapisu danych poza przydzielonym obszarem pamięci (CWE-787: out-of-bound write). Błąd ten może zostać wykorzystany przez atakującego poprzez dostarczenie spreparowanego kodu JavaScript do wykonania przez podatną wersję silnika. Podatność jest możliwa do wyeksploatowania jedynie wtedy, gdy Hermes przetwarza niezaufany JavaScript — np. pobierany dynamicznie ze źródeł zewnętrznych.
Atakujący może wykonać dowolny kod w kontekście procesu uruchamiającego silnik Hermes, co potencjalnie prowadzi do pełnego przejęcia kontroli nad aplikacją lub urządzeniem. Zagrożone są poufność, integralność oraz dostępność systemu.
Należy zaktualizować silnik Hermes do wersji zawierającej commit a6dcafe6ded8e61658b40f5699878cd19a481f80 lub nowszej. Zgodnie z referencjami producenta należy zastosować patche dostępne w repozytorium GitHub facebook/hermes oraz w poradniku bezpieczeństwa Facebook.
Facebook Hermes we wszystkich wersjach poprzedzających commit a6dcafe6ded8e61658b40f5699878cd19a481f80. Większość aplikacji React Native nie jest podatna, o ile nie wykonują niezaufanego kodu JavaScript.
Podatność ma ograniczony zakres — jest exploitowalna wyłącznie w aplikacjach używających Hermes do wykonywania niezaufanego kodu JavaScript (np. pobieranego dynamicznie). Standardowe aplikacje React Native bundlujące JavaScript statycznie nie są dotknięte tym problemem, co potwierdza oficjalny opis producenta.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HFacebook Hermes
APPFacebook< 2023-02-02
Powiązane podatności
Use-after-free w Facebook Hermes umożliwiający RCE przez JavaScript
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
Use-after-free w Facebook Hermes umożliwiający RCE przez payload JS
Out-of-bounds write w Facebook Hermes przy obsłudze dużych tablic