php-src 官方安全公告(2026-05-07,评级 medium)披露 cve-2026-6104:mbstring 的 mbfl_name2encoding_ex() 在解析含 nul 字节的编码名时发生全局缓冲区越界读,mb_convert_encoding() 等常用函数都在受影响路径上。修复版本为 8.4.21 与 8.5.6。

▲ php/php-src Security Advisories 公告页
漏洞机制
该函数在 MIME 名称匹配循环里用 strncasecmp(mime_name, name, name_len) 比较,再检查 mime_name[name_len] 是否为结尾 NUL。当 name 本身内嵌 NUL(如 "UTF-8\x00AAAA…")时,比较在 NUL 处即判等,随后的 mime_name[name_len] 却按调用方传入的完整长度去读——而 mime_name 只有 6 字节,越界读取 16+ 字节到相邻全局内存。编码别名匹配存在同样问题。AddressSanitizer 在 8.4.20 上复现为 global-buffer-overflow。
影响与风险
编码名来自用户输入(如表单里的导出编码选项、API 参数)时,攻击者可稳定触发越界读:轻则进程崩溃,重则把相邻全局内存内容带入后续处理造成信息泄漏。mbstring 是中文环境的高频扩展,凡把编码参数暴露给外部的应用都应关注。
修复与升级
升级到 8.4.21 / 8.5.6 及以上(受影响分支仅 8.4 与 8.5)。缓解:对外暴露编码参数的应用先把编码名过一遍白名单(只接受 mb_list_encodings() 中登记的名称),拒绝包含 NUL 或非法字符的输入。
修复补丁(官方提交)
该问题由官方提交 56ee76f82045 修复(2026-05-03),提交说明为「GHSA-74r9-qxhc-fx53: [mbstring] Fix out-of-bounds access in mbfl_name2encoding_ex()」。改动涉及 2 个源码/测试文件,核心变更如下:
ext/mbstring/libmbfl/mbfl/mbfl_encoding.c
@@ -349,7 +349,8 @@ const mbfl_encoding *mbfl_name2encoding_ex(const char *name, size_t name_len)
/* search MIME charset name */
for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
if ((*encoding)->mime_name) {
- if (strncasecmp((*encoding)->mime_name, name, name_len) == 0 && (*encoding)->mime_name[name_len] == '\0') {
+ size_t mime_len = strlen((*encoding)->mime_name);
+ if (mime_len == name_len && strncasecmp((*encoding)->mime_name, name, name_len) == 0) {
return *encoding;
}
}
@@ -359,7 +360,8 @@ const mbfl_encoding *mbfl_name2encoding_ex(const char *name, size_t name_len)
for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
if ((*encoding)->aliases) {
for (const char **alias = (*encoding)->aliases; *alias; alias++) {
- if (strncasecmp(name, *alias, name_len) == 0 && (*alias)[name_len] == '\0') {
+ size_t alias_len = strlen(*alias);
+ if (alias_len == name_len && strncasecmp(name, *alias, name_len) == 0) {
return *encoding;
}
}
▲ 补丁片段摘自上述提交
完整补丁与测试用例可在官方提交页面查看:https://github.com/php/php-src/commit/56ee76f82045ab728f3e63e20bf9530621e829cb

▲ 官方公告

▲ php-src 修复提交
关键信息
| 项目 | 内容 |
|---|---|
| 类目 | 安全漏洞 |
| 级别 | 中 |
| 日期 | 2026-05-07 |
| 关联编号 | CVE-2026-6104 / GHSA-74r9-qxhc-fx53 |
| 影响范围 | ext-mbstring;官方修复版本 8.4.21 / 8.5.6 |
| 核验状态 | 已官方确认 |
| 受影响与修复 | ext-mbstring 修复 8.4.21;ext-mbstring 修复 8.5.6 |
| 修复提交 | 56ee76f82045(PHP-8.4) |
来源:https://github.com/php/php-src/security/advisories/GHSA-74r9-qxhc-fx53











