Podatność typu use-after-free w środowisku uruchomieniowym Facebook HHVM pojawia się podczas deserializacji obiektów posiadających dynamiczne właściwości. Błąd może prowadzić do przejęcia kontroli nad procesem, co czyni go krytycznym zagrożeniem dla aplikacji opartych na HHVM.
▸ Pokaż oryginał (EN)
When unserializing an object with dynamic properties HHVM needs to pre-reserve the full size of the dynamic property array before inserting anything into it. Otherwise the array might resize, invalidating previously stored references. This pre-reservation was not occurring in HHVM prior to v4.32.3, between versions 4.33.0 and 4.56.0, 4.57.0, 4.58.0, 4.58.1, 4.59.0, 4.60.0, 4.61.0, 4.62.0.
Podczas deserializacji obiektu z dynamicznymi właściwościami HHVM powinno z wyprzedzeniem zarezerwować pełny rozmiar tablicy dynamicznych właściwości przed wstawieniem jakichkolwiek danych. Jeśli rezerwacja nie nastąpi przed operacją wstawiania, tablica może ulec zmianie rozmiaru (resize), co unieważnia wcześniej przechowywane referencje do jej elementów. Dostęp do unieważnionych referencji stanowi klasyczny błąd use-after-free — odwołanie do obszaru pamięci, który został zwolniony lub przemieszczony. Atakujący może spreparować odpowiednio skonstruowany serializowany obiekt, aby wywołać ten stan.
Udane wykorzystanie podatności może umożliwić atakującemu zdalne wykonanie kodu (RCE), ujawnienie poufnych danych lub destabilizację działania serwisu — wszystkie trzy wymiary (poufność, integralność, dostępność) są ocenione jako wysokie w wektorze CVSS.
Należy zaktualizować HHVM do wersji 4.32.3 lub wyższej (poza wymienionymi podatnymi wersjami z gałęzi 4.33–4.62). Szczegółowe informacje o aktualizacji bezpieczeństwa dostępne są na blogu HHVM (https://hhvm.com/blog/2020/06/30/security-update.html) oraz w powiązanym commicie na GitHub.
Facebook HHVM w wersjach wcześniejszych niż 4.32.3 oraz w wersjach od 4.33.0 do 4.56.0, a także w wersjach 4.57.0, 4.58.0, 4.58.1, 4.59.0, 4.60.0, 4.61.0 i 4.62.0.
Wpis CVE opublikowany w marcu 2021 roku, natomiast aktualizacja bezpieczeństwa producenta (blog HHVM) pochodzi z 30 czerwca 2020 roku, co wskazuje na znaczne opóźnienie między wydaniem patcha a formalną rejestracją podatności.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HFacebook Hhvm
APPFacebook4.57.04.58.04.58.14.59.04.60.04.61.04.62.04.33.0 – 4.56.1 (bez)< 4.32.3
Powiązane podatności
HHVM: użycie przestarzałego protokołu TLS 1.0 zamiast TLS 1.3
RCE poprzez integer overflow w IOBuf w Facebook Folly i HHVM
Out-of-bounds write w HHVM podczas przetwarzania danych EXIF
Integer overflow i out-of-bounds write w funkcji ldap_escape HHVM
Integer overflow w preg_quote HHVM prowadzący do heap overflow (RCE)