Cloudanix VulnDB

CVE-2024-11236

Critical · 9.8

CVSS

9.8

EPSS

2.1%

Published

Nov 24, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in older PHP versions on 32-bit computers lets attackers send specially crafted data that can take over the server.

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

Attackers can achieve remote code execution on affected 32-bit PHP deployments, leading to full system compromise, data theft, or service disruption; the high CVSS and public disclosure increase urgency for organizations still running older 8.1/8.2/8.3 releases.

How an attack unfolds

An attacker supplies an excessively long string to any code path that calls ldap_escape() with attacker-controlled data; on 32-bit builds the integer overflow occurs during length calculations, allowing the subsequent write to corrupt adjacent memory and potentially hijack control flow.

How to fix it

Upgrade PHP to 8.1.31 or later, 8.2.26 or later, or 8.3.14 or later; apply the exact commits or packages listed for php/php-src (38123aca18c3c1bd1f109ec77af2f175d7afcf35) and any downstream distributions; disable 32-bit builds where possible or isolate affected services until patched.

How to confirm the fix worked

Verify running PHP version with 'php -v' or phpinfo(); confirm the patch commit is present in source; test that ldap_escape() no longer accepts inputs that previously caused overflow on 32-bit systems; re-scan with vulnerability assessment tools after upgrade.

Typical attack path

  1. Identify a web application or script that passes unsanitized input into ldap_escape() on a 32-bit PHP installation
  2. Craft a payload containing a string long enough to trigger the 32-bit integer overflow
  3. Send the payload via HTTP, CLI, or other entry point that reaches the vulnerable call
  4. Achieve out-of-bounds write and gain arbitrary code execution or crash the process

How to detect it

Search web server and application logs for unusually long strings passed to LDAP-related functions; monitor for segmentation faults or crashes in PHP processes handling LDAP escape operations; inspect core dumps or memory logs for signs of out-of-bounds writes around ldap_escape calls.

What your security team should do

  • Immediately inventory all 32-bit PHP 8.1/8.2/8.3 installations and prioritize upgrade to the fixed releases
  • Apply patches within the next 48 hours given the critical CVSS and public exploitability
  • Review application code for direct or indirect calls to ldap_escape() with untrusted input
  • Consider disabling LDAP functionality or moving to 64-bit deployments if upgrades cannot be completed quickly

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