CVE-2024-8932
NoneCVSS
—
EPSS
1.3%
Published
Nov 22, 2024
CISA due date
—
Cloudanix analysis
A flaw in older PHP versions on 32-bit systems can let specially crafted input corrupt memory when handling directory lookups, potentially crashing applications or allowing misuse.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Uncontrolled long string inputs to ldap_escape() on 32-bit systems trigger an integer overflow that results in an out-of-bounds write.
Why it matters to the business
Legacy 32-bit PHP deployments using LDAP functions may experience application crashes or potential memory corruption, increasing risk to services that still run on older hardware or operating systems.
How an attack unfolds
An attacker supplies an excessively long string argument to ldap_escape() in a PHP application running on a 32-bit system; the integer overflow bypasses length checks and writes attacker-controlled data beyond allocated buffers.
How to fix it
Upgrade PHP to 8.1.31 or later, 8.2.26 or later, or 8.3.14 or later on all 32-bit systems. Apply the exact fixed commits listed for php/php-src and the corresponding Ubuntu chromium-browser patches where applicable.
How to confirm the fix worked
Verify the installed PHP version is at or above the fixed releases; run regression tests that exercise ldap_escape() with maximum-length inputs on 32-bit builds.
Typical attack path
- Identify a PHP application that calls ldap_escape() with user-controlled input
- Craft a string longer than 2^31-1 bytes to trigger the 32-bit integer overflow
- Trigger the vulnerable code path to cause the out-of-bounds write
- Leverage the resulting memory corruption for denial of service or further exploitation
How to detect it
Monitor application logs and core dumps for segmentation faults or abnormal memory access patterns around LDAP calls; correlate with web request logs showing unusually long parameters to ldap_escape().
What your security team should do
- Prioritize inventory of all 32-bit PHP installations and schedule upgrades within standard change windows
- Add version checks for PHP 8.1 < 8.1.31, 8.2 < 8.2.26, and 8.3 < 8.3.14 to continuous monitoring
- Review LDAP-related code for direct exposure of user input to ldap_escape()
- Plan migration off 32-bit platforms where feasible to eliminate the class of integer-overflow issues
The record
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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Bitnami | libphp | 0 | 8.1.31 |
| Bitnami | php | 0 | 8.1.31 |
| Bitnami | php | 8.1.0 | 8.1.31 |
| Bitnami | php-min | 0 | 8.1.31 |
| Bitnami | php-min | 8.1.0 | 8.1.31 |
| Chainguard | php-8.1 | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-apache | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-bcmath | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-bcmath-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-bz2 | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-bz2-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-calendar | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-calendar-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-cgi | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ctype | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ctype-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-curl | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-curl-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-dbg | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-dev | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-doc | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-dom | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-dom-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-exif | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-exif-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-fileinfo | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-fileinfo-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-fpm | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-fpm-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ftp | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ftp-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gd | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gd-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gettext | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gettext-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gmp | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-gmp-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-iconv | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-iconv-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-intl | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-intl-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ldap | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-ldap-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mbstring | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mbstring-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mysqli | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mysqli-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mysqlnd | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-mysqlnd-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-odbc | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-odbc-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-opcache | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-opcache-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-openssl | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-openssl-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pcntl | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pcntl-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_dblib | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_dblib-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_mysql | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_mysql-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_odbc | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_odbc-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_pgsql | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_pgsql-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_sqlite | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pdo_sqlite-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pear | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pgsql | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-pgsql-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-phar | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-phar-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-posix | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-posix-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-simplexml | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-simplexml-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-soap | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-soap-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sockets | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sockets-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sodium | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sodium-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sysvsem | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sysvsem-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sysvshm | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-sysvshm-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xml | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xml-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xmlreader | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xmlreader-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xmlwriter | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xmlwriter-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xsl | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-xsl-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-zip | 0 | 8.1.31-r0 |
| Chainguard | php-8.1-zip-config | 0 | 8.1.31-r0 |
| Chainguard | php-8.2 | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-apache | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-bcmath | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-bcmath-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-bz2 | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-bz2-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-calendar | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-calendar-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-cgi | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ctype | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ctype-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-curl | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-curl-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-dbg | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-dev | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-doc | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-dom | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-dom-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-exif | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-exif-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-fileinfo | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-fileinfo-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-fpm | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-fpm-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ftp | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ftp-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gd | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gd-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gettext | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gettext-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gmp | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-gmp-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-iconv | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-iconv-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-intl | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-intl-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ldap | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-ldap-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mbstring | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mbstring-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mysqli | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mysqli-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mysqlnd | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-mysqlnd-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-odbc | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-odbc-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-opcache | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-opcache-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-openssl | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-openssl-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pcntl | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pcntl-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_dblib | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_dblib-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_mysql | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_mysql-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_odbc | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_odbc-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_pgsql | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_pgsql-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_sqlite | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pdo_sqlite-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pear | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pgsql | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-pgsql-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-phar | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-phar-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-posix | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-posix-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-simplexml | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-simplexml-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-soap | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-soap-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sockets | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sockets-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sodium | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sodium-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sysvsem | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sysvsem-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sysvshm | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-sysvshm-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xml | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xml-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xmlreader | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xmlreader-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xmlwriter | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xmlwriter-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xsl | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-xsl-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-zip | 0 | 8.2.26-r0 |
| Chainguard | php-8.2-zip-config | 0 | 8.2.26-r0 |
| Chainguard | php-8.3 | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-apache | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-bcmath | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-bcmath-config | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-bz2 | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-bz2-config | 0 | 8.3.14-r0 |
| Chainguard | php-8.3-calendar | 0 | 8.3.14-r0 |
Related vulnerabilities
- CVE-2025-14177 In PHP versions:8.1.* before 8.1.34, 8.2.* before 8.2.30, 8.3.* before 8.3.29, 8.4.*… Also affects libphp
- CVE-2025-14180 In PHP versions 8.1.* before 8.1.34, 8.2.* before 8.2.30, 8.3.* before 8.3.29, 8.4.*… Also affects libphp
- CVE-2025-14178 In PHP versions:8.1.* before 8.1.34, 8.2.* before 8.2.30, 8.3.* before 8.3.29, 8.4.*… Also affects libphp
- CVE-2024-11233 In PHP versions 8.1.* before 8.1.31, 8.2.* before 8.2.26, 8.3.* before 8.3.14, due to an… Also affects libphp
- CVE-2024-11236 In PHP versions 8.1.* before 8.1.31, 8.2.* before 8.2.26, 8.3.* before 8.3.14… Also affects libphp
- CVE-2024-11234 In PHP versions 8.1.* before 8.1.31, 8.2.* before 8.2.26, 8.3.* before 8.3.14, when using… Also affects libphp
- CVE-2024-8929 In PHP versions 8.1.* before 8.1.31, 8.2.* before 8.2.26, 8.3.* before 8.3.14, a hostile… Also affects libphp
- CVE-2024-9026 In PHP versions 8.1.* before 8.1.30, 8.2.* before 8.2.24, 8.3.* before 8.3.12, when using… Also affects libphp