Podatność w funkcji ldap_escape() w PHP na systemach 32-bitowych pozwala na przepełnienie liczby całkowitej (integer overflow) przy przetwarzaniu zbyt długich ciągów wejściowych, co skutkuje zapisem poza granicami bufora (out-of-bounds write). Błąd otrzymał ocenę CVSS 9.8, co klasyfikuje go jako krytyczny.
▸ Pokaż oryginał (EN)
In PHP versions 8.1.* before 8.1.31, 8.2.* before 8.2.26, 8.3.* before 8.3.14, uncontrolled long string inputs to ldap_escape() function on 32-bit systems can cause an integer overflow, resulting in an out-of-bounds write.
Funkcja ldap_escape() nie kontroluje prawidłowo długości przekazywanych ciągów wejściowych na systemach 32-bitowych. Gdy atakujący dostarczy odpowiednio długi ciąg znaków, dochodzi do przepełnienia zmiennej całkowitej (CWE-190), co powoduje błędne obliczenie rozmiaru bufora. W konsekwencji zapis danych odbywa się poza przydzielonym obszarem pamięci (CWE-787, out-of-bounds write), co może prowadzić do uszkodzenia sterty lub stosu procesu.
Atakujący może zdalnie, bez uwierzytelnienia, doprowadzić do wykonania arbitralnego kodu (RCE), ujawnienia poufnych danych lub odmowy usługi (crash aplikacji). Pełna triada CIA jest zagrożona, co potwierdza maksymalny wynik CVSS dla składowych C/I/A.
Należy zaktualizować PHP do wersji 8.1.31, 8.2.26 lub 8.3.14 (odpowiednio do używanej gałęzi). Dostępne są również patche dla dystrybucji Debian (komunikat debian-lts-announce z grudnia 2024). Do czasu aktualizacji należy rozważyć ograniczenie długości danych wejściowych przekazywanych do ldap_escape() na poziomie aplikacji lub filtrowanie ich przed przetworzeniem.
PHP w wersjach 8.1.x przed 8.1.31, 8.2.x przed 8.2.26 oraz 8.3.x przed 8.3.14, działające na systemach 32-bitowych i korzystające z funkcji ldap_escape().
Podatność dotyczy wyłącznie platform 32-bitowych. Na systemach 64-bitowych integer overflow w tym kontekście nie występuje. Poprawka opisana jest w GitHub Security Advisory GHSA-5hqh-c84r-qjcv.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPHP
APPPhp8.1.0 – 8.1.31 (bez)8.2.0 – 8.2.26 (bez)8.3.0 – 8.3.14 (bez)
Powiązane podatności
PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi)...
Use-after-free w rozszerzeniu SOAP PHP umożliwiające RCE
PHP use-after-free przez __set lub ??= z wyjątkami — RCE
PHP PDO SQLite — błędne cytowanie ciągów prowadzące do SQL injection