Błędne obliczenia rozmiaru ciągu znaków w funkcji preg_quote w HHVM umożliwiają wywołanie integer overflow, który prowadzi do heap overflow. Podatność może być wykorzystana zdalnie bez uwierzytelnienia i bez interakcji użytkownika, co czyni ją krytyczną.
▸ Pokaż oryginał (EN)
Due to incorrect string size calculations inside the preg_quote function, a large input string passed to the function can trigger an integer overflow leading to a heap overflow. This issue affects HHVM versions prior to 4.56.3, all versions between 4.57.0 and 4.80.1, all versions between 4.81.0 and 4.93.1, and versions 4.94.0, 4.95.0, 4.96.0, 4.97.0, 4.98.0.
Funkcja preg_quote w HHVM nieprawidłowo oblicza rozmiar przetwarzanego ciągu znaków. Przekazanie odpowiednio dużego ciągu wejściowego powoduje przepełnienie liczby całkowitej (integer overflow) przy wyliczaniu wymaganego rozmiaru bufora. Skutkuje to alokacją zbyt małego bufora na stercie (heap), a następnie jego przepełnieniem (heap overflow) podczas zapisywania danych. Atakujący może w ten sposób nadpisać struktury pamięci i przejąć kontrolę nad wykonaniem programu.
Skuteczne wykorzystanie podatności umożliwia atakującemu zdalne wykonanie dowolnego kodu (RCE) na serwerze z uprawnieniami procesu HHVM, a także naruszenie poufności i integralności danych oraz dostępności systemu.
Należy zaktualizować HHVM do wersji 4.56.3 lub nowszej (w gałęzi 4.56.x), albo do pierwszej wersji poza wymienionymi zakresami podatnych wydań. Szczegółowe informacje dostępne są w oficjalnym biuletynie bezpieczeństwa pod adresem https://hhvm.com/blog/2021/02/25/security-update.html oraz w powiązanym commicie na GitHub.
Facebook HHVM w wersjach wcześniejszych niż 4.56.3, wszystkich wersjach od 4.57.0 do 4.80.1 włącznie, wszystkich wersjach od 4.81.0 do 4.93.1 włącznie, oraz wersjach 4.94.0, 4.95.0, 4.96.0, 4.97.0 i 4.98.0
Poprawka została opublikowana 25 lutego 2021 r. zgodnie z wpisem na blogu HHVM (data poprzedzająca datę publikacji CVE). Commit naprawczy dostępny publicznie na GitHub: 08193b7f0cd3910256e00d599f0f3eb2519c44ca.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HFacebook Hhvm
APPFacebook4.94.04.95.04.96.04.97.04.98.04.81.0 – 4.93.14.57.0 – 4.80.1< 4.56.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
Use-after-free w Facebook HHVM podczas deserializacji obiektów z dynamicznymi właściwościami
Integer overflow i out-of-bounds write w funkcji ldap_escape HHVM
Out-of-bounds write w HHVM podczas przetwarzania danych EXIF