PHP 8.4.26 RC1 / 8.5.11 RC1:hash_pbkdf2() 堆缓冲溢出与 SNMP 释放非 malloc 地址
2026-09-08 tagged,来源 linuxcompatible.org。相对 8 月 27 日的稳定版,这批 RC 以安全加固和内存安全修复为主,没有新增 CVE 编号的修复(8.4 的 7 月安全版、8.5 的 8 月稳定版之外)。
PHP 8.4.26 RC1
Hash:hash_pbkdf2() 缓冲区溢出
Lazizbek Ergashev 报告,hash_pbkdf2() 在以较大的输出长度调用时,缓冲区大小计算不足,可导致堆破坏。该函数常用于密钥派生场景,需要尽快升级。
// 受影响路径的调用形态:输出长度较大时触发计算不足
hash_pbkdf2('sha256', $password, $salt, $iterations, $length);
SNMP::setSecurity():context engine ID 超 32 字节
当 context engine ID 超过 32 字节时,SNMP::setSecurity() 会释放一个并非由 malloc 分配的地址,形成 use-after-free 隐患。
EOL 提示
PHP 8.4 的支持将在 2026 年 12 月结束(EOL),8.4.26 属于最后的维护版本之一。
PHP 8.5.11 RC1
Ilia Alshanetsky 贡献了大部分安全相关补丁:
- DOM、Phar、Intl 的 use-after-free;
- 多个扩展的双重释放与内存泄漏;
- Opcache 竞态条件修复;
- JIT 崩溃修复。
升级与自查建议
- 8.5 用户:可直接用 8.5.11 RC1 替换 8.5.10 进行测试。
- 8.4 用户:建议等稳定版发布后尽快应用,
hash_pbkdf2()溢出是关键理由。 - 升级后用
php -v与php --ri hash、php --ri snmp确认实际加载的版本与扩展状态;密钥派生链路涉及hash_pbkdf2()的服务优先排期。
发行信息见官方发行页 php.net。
另:Ubuntu USN-8743-1(2026-09-10)修复了 php8.1 / 8.3 / 8.5 的以下问题:
- CVE-2026-17543:PostgreSQL 扩展反斜杠转义导致的 SQL 注入;
- CVE-2026-17544:
bccomp越界写; - CVE-2026-7260:phar 循环符号链接导致的 DoS。
使用发行版打包 PHP 的环境,需要同时跟上发行版的安全更新节奏。