首页 网络安全 正文

Perl 正则编译堆缓冲区溢出CVE-2026-8376

摘要

栋科技漏洞库关注到 Perl 5.43.10及之前版本中存在的正则编译堆缓冲区溢出漏洞,现已追踪为CVE-2026-8376,CVSS 3.X评分8.6。

Perl 是一门老牌、实用、跨平台的脚本语言,广泛用于文本处理和系统管理,以文本处理强、正则表达式无敌、系统运维好用而闻名。

一、基本情况

Perl 是一门文本处理超强的老牌脚本语言,正则引擎非常强大,早期很多网站、CMS 用 Perl 开发,因此被广泛用于运维与工具开发。

Perl 开源编程语言用于文本处理、日志分析、系统脚本、Web 开发(早期)、自动化工具,大量服务器、开源工具、安全软件都使用。

Perl 正则编译堆缓冲区溢出CVE-2026-8376

栋科技漏洞库关注到 Perl 5.43.10及之前版本中存在的正则编译堆缓冲区溢出漏洞,现已追踪为CVE-2026-8376,CVSS 3.X评分8.6。

二、漏洞分析

CVE-2026-8376漏洞是Perl 5.43.10 及更早版本在32 位编译环境下,编译包含重复固定字符串的正则表达式时存在堆缓冲区溢出漏洞。

该漏洞源于受影响版本中,Perl_study_chunk 函数在 regcomp_study.c 中以字符数而非字节数检查连接子串缓冲区大小。

当编译带大量最小计数量化固定子串的正则表达式时,计算字节长度表达式 mincount * l 可能溢出 SSize_t,导致 SvGROW 分配不足,

导致后续复制操作写入缓冲区边界外,若在32位Perl环境调用者编译攻击者构造的恶意正则表达式,会在编译阶段触发堆缓冲区溢出。

1、缓解措施

在 32 位 Perl 环境中,在安装修复版本前,禁止编译来自不可信来源的正则表达式。

2、修复方案

通过在 regcomp_study.c 的 Perl_study_chunk 函数中添加溢出检查,

mincount>=SSize_t_MAX / l或old>SSize_t_MAX - mincount * l时,调用FAIL("Regexp out of space") 终止正则编译防止缓冲区溢出。

三、影响范围

Perl ≤ 5.43.10

四、修复建议

Perl > 5.43.10

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接