Release date:
2026-10-09 07:00:04 UTC
Description:
- CVE-2025-1218: out-of-bounds reads in the mysqlnd wire-protocol parser. A
malicious or compromised MySQL server could send a truncated packet and make
the client read past the end of the packet buffer. Re-implementation, against
the PHP 5.3 mysqlnd sources, of upstream 114dbb74368e6a6cd6e48ddb4a76dbe8728b84e2
(GHSA-r6x9-5r99-36j7, php-8.2.34 / php-8.3.34); the upstream diff does not
apply to 5.3 in any form, so every bound was re-derived from 5.3's own
bookkeeping. BAIL_IF_NO_MORE_DATA, which only noticed an over-read after it
had happened, is replaced by BAIL_PREMATURE_END / BAIL_IF_NOT_ENOUGH_DATA_EX,
and php_mysqlnd_net_field_length()/_ll() are given the bytes still left in the
packet so a length encoding can no longer be read out of bounds. Memory-safety
fixes cover the greeting (its server version string ran estrdup() off a
2048-byte stack buffer with no terminator guarantee on this branch - strictly
worse here than on any later branch - plus the 31-byte fixed block and the
split scramble), the OK and result-set header packets, the EOF packet, the
in-row EOF marker, the result-set field metadata lengths (which leaked heap
bytes into user-visible column metadata), the text-protocol row field lengths
and ps_fetch_time/date/datetime. The two new checks in prepare_read are
HARDENING ONLY and provably cannot fire; the mysqlnd_ps.c change is a memory
leak fix on the newly reachable prepare-EOF failure path, not an over-read.
The auth-response, SHA256-public-key and caching-sha2 packet readers, the
change-user auth-switch branch and the pluggable-auth parts of the greeting
do not exist at 5.3, so those parts of the upstream fix have no target here.
The 38 upstream .phpt tests are not carried - the fake_server.inc they drive
needs PHP 8.0 syntax - so the C fix ships without tests
- The same mysqlnd_ps.c hunk also corrects that path's result free from
mnd_efree() to upstream's php-7.0 form, mnd_pefree(stmt->result,
stmt->result->persistent): mysqlnd_result_init() allocates the result with
mnd_pecalloc(..., persistent), so on a persistent connection the Zend
allocator was being handed a malloc()ed block. Before the change a hostile
prepare over p:127.0.0.1 aborts with "zend_mm_heap corrupted" on a build
with the Zend MM heap checks compiled in; after it the same run completes,
and a non-persistent connection is unaffected either way
- Also fixes a pre-existing use-after-free on the row-reader failure path: the
CVE-2024-8929 error loops free every field decoded so far without clearing
the zvals, and the result set frees them again at teardown. All 2 sites now
clear after freeing. Confirmed under AddressSanitizer with the Zend allocator
disabled - heap-use-after-free before, clean after, on the three new
short-length tests and the nine CVE-2024-8929 stmt-row tests. Upstream still
carries the same loops unguarded in php-8.2.34 through php-8.5.11
- mysqlnd: initialise every pre-allocated row field before decoding
(php-5.3.29-mysqlnd-rowp-init-fields.patch). The row readers pre-allocate a
zval per column with MAKE_STD_ZVAL(), which sets no type, and only type it
when the decode loop reaches that column; the CVE-2024-8929 error paths
abandon a row part-way, leaving the rest allocated but never typed, and the
result set still frees the whole row at teardown. Each column is now
ZVAL_NULL()ed at allocation. Verified with valgrind under USE_ZEND_ALLOC=0.
PHP 5 only, and kept separate from the CVE patch because the defect predates
it and is reachable without it
Updated packages:
-
alt-php53-5.3.29-219.el9.x86_64.rpm
sha:6e482315b59c4d083c687e26a4525a0eab04ddc68c307a615adeadb50e5c1b3c
-
alt-php53-bcmath-5.3.29-219.el9.x86_64.rpm
sha:8b3cd5c928de917352cd54ae207494ce94879a063859425624f6b2a40f6e484b
-
alt-php53-cli-5.3.29-219.el9.x86_64.rpm
sha:395077c51d09fa54439ace255efbfa46964c1a1234553886eeeb0ac2fc2f2eaa
-
alt-php53-common-5.3.29-219.el9.x86_64.rpm
sha:1d83ab4ec7524cd1602ea60d52a13bc4d59aac2025f0b2664be1cc666f1dea35
-
alt-php53-dba-5.3.29-219.el9.x86_64.rpm
sha:cf3dd0aee5657b1d02c7da6a2a28c2116e95505f311517f4cdc0b6fe4b046c9c
-
alt-php53-dbx-5.3.29-219.el9.x86_64.rpm
sha:ea8549263f73d3a2b28c5bfdd6b9956ba69e5844dfbcaa9d4fa0e4cd0bb4a81c
-
alt-php53-devel-5.3.29-219.el9.x86_64.rpm
sha:50bd9dd771c152c744d6309fe24e7dd097430385aff4e3ca9a53dae47a1ddfdd
-
alt-php53-enchant-5.3.29-219.el9.x86_64.rpm
sha:0f92404ce1bc6718198639f06c0fee6f45560b05c24a6192fd2e5e06e1588b99
-
alt-php53-firebird-5.3.29-219.el9.x86_64.rpm
sha:023bed2358ae7743f760c7276bb4b4a005e736c48da213637c5316edc9dead16
-
alt-php53-gd-5.3.29-219.el9.x86_64.rpm
sha:d244ee994f3c89e720d660bac8c665fbe168e491e52342aa371a6305b481b854
-
alt-php53-imap-5.3.29-219.el9.x86_64.rpm
sha:c6389366b3cef7ca3ce6ada7e96b7e0d11b72b1e8f3ce8e8aa50714757561fbb
-
alt-php53-intl-5.3.29-219.el9.x86_64.rpm
sha:d6c9b0f56d8805d0e10f1ffb1f782081b0160b909b3e2434e2cc564667c45ac9
-
alt-php53-ldap-5.3.29-219.el9.x86_64.rpm
sha:132e02d5a9452f2d1e5fc6019dbab34e8f5aeb23d6f1f066f3247215fa2b6711
-
alt-php53-mbstring-5.3.29-219.el9.x86_64.rpm
sha:02fcdd87dae6483e8828971093d00c93fedd71cf91990f8ad3de7e5f41487251
-
alt-php53-mcrypt-5.3.29-219.el9.x86_64.rpm
sha:9ccda9aae494c99eb923b1df0bb8ef731ce7b12241f5521d6ccc4b332117e964
-
alt-php53-mssql-5.3.29-219.el9.x86_64.rpm
sha:1f70891641a5d3cca676268be66d4f020f0e39f5b062a4b497a0a153d1065e05
-
alt-php53-mysqlnd-5.3.29-219.el9.x86_64.rpm
sha:1312579b5717845883666fec62dbf325f5b066e4230ad78db2c42b7fe4e82e4c
-
alt-php53-odbc-5.3.29-219.el9.x86_64.rpm
sha:cea578543b48bdf5dd4ad45e669d505ffa4f2c57ad7d7a800f9ce09104f9878d
-
alt-php53-pdo-5.3.29-219.el9.x86_64.rpm
sha:07027fb12c6d4c1a7f1b166a11e392ae64b0e216191e3579eb7e2be22c10ebe1
-
alt-php53-pgsql-5.3.29-219.el9.x86_64.rpm
sha:cc2da42673ac2ebc1adff1f80fce0a434535def7f1263ffe187776b33935f2aa
-
alt-php53-php-fpm-5.3.29-219.el9.x86_64.rpm
sha:017e9426b046c9c5cf292e460057ccf46888411eb234f7ec279b4898a6e005ff
-
alt-php53-process-5.3.29-219.el9.x86_64.rpm
sha:aef19671f45afecbbbdda0d716764d6ac457cae88ab5b893bf26a19c84a18250
-
alt-php53-pspell-5.3.29-219.el9.x86_64.rpm
sha:31b2785fc242af764deeeadbabfb32b0dccb0c0af9d05283c8d05de133dfe343
-
alt-php53-recode-5.3.29-219.el9.x86_64.rpm
sha:4d0aa3f03a414f074c462f2f3b01d9d2cb4e0225f86c57599035aed172ae5947
-
alt-php53-snmp-5.3.29-219.el9.x86_64.rpm
sha:7d4d316b34613d1c78ab2c30e7d5ac3c1cdce9bfc79755b4a38160783f0644bd
-
alt-php53-soap-5.3.29-219.el9.x86_64.rpm
sha:42d84ee51c9aa59e45278a2a23742a37785bc284aa6b204563ea9d8adb81367d
-
alt-php53-sqlite-5.3.29-219.el9.x86_64.rpm
sha:da9e239fa96f66a2fac51f657162f2936c32c3e89410195d420fb4a40e95b18b
-
alt-php53-sybase-5.3.29-219.el9.x86_64.rpm
sha:a993c903b7619a26f2bf3149a2c151f7e026dd6e089244cfe4cbbb742488e4ad
-
alt-php53-tidy-5.3.29-219.el9.x86_64.rpm
sha:32fc9dd1f4e050ff0406d14e5167c492ded0d07d37f8f84f73a2f2075708c301
-
alt-php53-xml-5.3.29-219.el9.x86_64.rpm
sha:9be434904d9ba94807dbc6efa034de66c91ada74e35bcd93d238430db8cdfc25
-
alt-php53-xmlrpc-5.3.29-219.el9.x86_64.rpm
sha:aff5b86bba201059ad8fd561f4916f036452429d0c92d28c5ffa9e240dbd2e8e
Notes:
This page is generated automatically and has not been checked for errors. For clarification or
corrections please contact the
CloudLinux Packaging Team.