资讯 PHP 8.4.26 RC1 / 8.5.11 RC1:hash_pbkdf2() 堆缓冲溢出与 SNMP 释放非 malloc 地址

2026-09-16 21:02:59

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 -vphp --ri hashphp --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 的环境,需要同时跟上发行版的安全更新节奏。

复制全文 生成海报 PHP 安全 内存安全 版本更新

推荐文章

程序员茄子在线接单