简介
远程 Debian 主机上缺少一个或多个与安全性相关的更新。
描述
远程 Debian 12 主机上安装的多个程序包受到 dla-4821 公告中提及的多个漏洞影响。
- ------------------------------------------------------------------------- Debian LTS 公告 DLA-4821-1 [email protected] https://www.debian.org/lts/security/Arnaud Rebillout 2026 年 10 月 5 日https://wiki.debian.org/LTS
- -------------------------------------------------------------------------
Package:perl Version:5.36.0-7+deb12u4 CVE ID: CVE-2025-15649 CVE-2026-7010 CVE-2026-7017 CVE-2026-8376 CVE-2026-12087 CVE-2026-13221 CVE-2026-19487 CVE-2026-42496 CVE-2026-42497 CVE-2026-48959 CVE-2026-48962 CVE-2026-57432 CVE-2026-57433 Debian Bug:1137345 1138854 1138856 1138858 1138859 1138860 1138863 1138905 1138906 1140152 1141639 1142037 1144668
在 Perl 编程语言中发现多种漏洞。
CVE-2025-15649
IO::Uncompress::Unzip 中的标头解析
Perl 2.215 之前的 IO::Uncompress::Unzip 版本在解析 DOS 日期畸形的 zip 标头时传播未捕获异常。
_dosToUnixTime() 解码 local-file-header last-modification date 字段,并在无 eval guard 的情况下调用 Time::Local::timelocal()。日期字段解码为超出范围的月、日或小时的标头会导致 timelocal() 终止。异常传播到 IO::Uncompress::Unzip->new($file),其中调用者预期 undef plus $UnzipError。
CVE-2026-7010
HTTP::Tiny 中的 CRLF 验证
Perl 0.093 之前的 HTTP::Tiny 版本不会验证 HTTP 请求行中的 CRLF 或控制字段标头值。未经验证的输入为请求行中的方法和 URI、成为“Host:”标头的 URL 主机以及 HTTP/ 1.1 控制数据字段值。
控制这些输入之一(例如,用户提供的传递到 webhook 或 URL 提取端点的 URL)的攻击者就可以注入额外的标题并让请求绕过上游服务器。
CVE-2026-7017
HTTP::Tiny 凭证转发在重定向上
Perl 0.095 之前的 HTTP::Tiny 版本会让将凭据标头转发至跨源重定向目标。当服务器返回 3xx 重定向时,“_maybe_redirect”位于“Location:”标头后面,“_prepare_headers_and_cb”将调用程序的“headers”参数重新合并到新请求中,而不检查重定向目标是否与原始 URL 共享源。因此,调用程序提供的“Authorization”、“Cookie”和“Proxy-Authorization”头会跨方案、主机或端口边界,并跨方案、主机或端口边界,包括“https”到“http”降级,从而在线路上以明文形式暴露它们,将其重新发送到重定向名称的任何主机。HTTP::Tiny POD 说明指出,授权标头将不会包含在仅应用到 URL-userinfo Basic-auth 路径,而不应用到调用程序明确传递的标头的重定向请求中。
CVE-2026-8376
Perl_study_chunk 中的缓冲区溢出漏洞
Perl 5.40.5-RC1 之前的版本,从在 5.42.3-RC1 之前的 5.41.0 版本,从在 5.43.11 之前的 5.43.0 版本,在 32 位构建上编译具有重复固定字符串的正则表达式时,会发生堆缓冲区溢出。
regcomp_study.c 中的 Perl_study_chunk 会检查已加入的子字符串缓冲区的大小,单位为字符而非字节。对于具有较大最小计数的量化固定子字符串,字节长度 mincount
对于具有较大计数下限的量化固定子字符串,字节长度 mincount * l 可能会导致 SSize_t 溢出,从而产生过小的 SvGROW 分配;后续副本会写入缓冲区末端之外。在 32 位 perl 版本中编译受攻击者控制的正则表达式的调用程序会在编译时触发堆缓冲区溢出。
CVE-2026-12087
Socket:pack_ip_mreq_source() 越界堆读取
Perl 2.041之前的套接字版本存在越界堆读取。在 Socket.xs 中,pack_ip_mreq_source() 会在读取参数前检查其源参数的长度,因此检查会改为测试从前面的 multiaddr 参数继承的字节长度。两个地址都占用 4 字节字段,因此有效的 multiaddr 可让任意长度的源通过检查,然后通过固定大小的副本将源复制到 4 字节 imr_sourceaddr 字段中。短于 4 字节的源不会被拒绝,并且副本最多可读取超出其缓冲区末尾 3 个字节。调用源值短于 4 字节的 pack_ip_mreq_source() 会将相邻堆内存复制到返回的打包结构中。
CVE-2026-13221
静默不正确的正则表达式匹配
Perl 5.40.5-RC1 之前的版本,从在 5.42.3-RC1 之前的 5.41.0 版本,从在 5.43.10 之前的 5.43.0 版本,在 Perl_study_chunk 中编译超过 65535 个固定字符串分支的交替时,会产生静默的错误正则表达式匹配。当这些分支组合成 trie 时,第一个分支和共享尾部之间的增量将存储在 16 位字段中。分支计数超过 65535 会使字段溢出,且 trie 的匹配决策表将被截断,不会任何警告或错误。此形状的模式会产生误报匹配(匹配不应匹配的字符串)和误报匹配(无法匹配应匹配的字符串)。当这种模式阻止访问或过滤决策时,结果是错误的。
CVE-2026-19487
不正确的正则表达式匹配结果
当过时的失败标记在 S_find_byclass 年初结束 Aho-Corasick 预扫描时,来自 5.41.9 之前的 5.9.4 Perl 版本会生成错误的正则表达式匹配结果。预扫描会在拍摄对象中遍历完整图案可能匹配的位置,引擎会从记录的最左边的位置进行尝试。失败的转换会设置失败的标志,而后来的成功转换不会清除它,因此预扫描会将过时标志读取为失败,并在记录较早启动的候选标记之前停止。它采用一个主题,其中记录了一个候选人,然后后面的角色通过成功的失败链接强制回退。示例:ABCDE =~ m/ABCF|BCDE|C/;# 在偏移 2 处匹配 C,而不是 BCDE ABCDE =~ m/ABCF|BCDE|C(G)/;# 无匹配,缺少 BCDE 像这样的替换可能会错过应匹配的输入,或者在错误的分支上匹配它,因此根据结果做出的访问或过滤决策可能是错误的。
CVE-2026-42496
Archive::Tar 符号链接提取
Archive::Perl 3.08 之前的 Tar 版本会提取符号链接,其中提取目录外有攻击者控制的目标。
_make_special_file() 将 tar 标头的链接名传递到 symlink(),而不针对绝对路径或 .. 段。用于保护常规文件提取的安全提取模式检查未涵盖符号链接目标。随后通过提取的名称打开会读取或写入攻击者所选路径。
CVE-2026-42497
Archive::Tar 硬链接提取
Archive::Perl 3.08 之前的 Tar 版本会提取硬链接,其中提取目录外有攻击者控制的路径。
_make_special_file() 将 tar 标头的链接名传递到 link(),而不针对绝对路径或 .. 段,从而创建了一个共享受害者文件 inode 的硬链接。后续通过提取的名称进行写入会修改受害者文件,而 _extract_file() 中的后解压缩 chmod、chown 和 utime 区块(仅针对通过 -l 的符号链接进行保护)仅在提取过程中将 tar 标头的模式、所有者和时间戳应用到共享 inode。
CVE-2026-48959
IO::Uncompress::Unzip 中的 CPU 耗尽
Perl 2.220 之前的 IO::Uncompress::Unzip 版本允许通过 fastForward 中的每字节读取循环使 CPU 耗尽。 fastForward() 将长度 $offset (偏移的位数,1 到 19)与区块大小 $c (而不是 $offset 其本身)进行比较,因此 $c 每次迭代从 16 KiB 缩小到 1-19 字节。从攻击者通过 IO::Uncompress::Unzip->new($zip, Name => $target) 提供的 zip 提取指定条目会驱动每字节读取循环,该循环会随条目的压缩大小进行缩放,最高可达非 Zip64 的 4 GiB 上限。
CVE-2026-48962
IO-Compress 中通过输出 glob 执行代码
Perl 的 2.220 之前的 IO::Compress 版本可通过攻击者控制的输出 glob 在 File::GlobMapper 中执行任意代码。
_parseOutputGlob() 将调用程序提供的输出 glob 字符串括在双引号中,并将其存储在解析器状态中;然后,_getFiles() 通过 eval STRING 运行存储的表达式。输出 glob 中的文字双引号关闭 dquote 封装程序,后面的字符被评估为 Perl。输出 glob 中的任意 Perl 以调用进程的权限执行。
CVE-2026-57432
pack() 和 unpack() 中的越界堆读取
Perl 5.40.5-RC1 之前的版本,5.41.0 在 5.42.3-RC1 之前的版本,5.43.0 在 5.43.11 之前的版本中,在 S_measure_struct 中存在整数溢出问题,导致在 pack 和 unpack 中出现堆越界读取。
S_measure_struct 将每个项目的大小乘以重复计数添加到累积总计中,而不进行溢出检查,因此包装或拆包模板中的大量重复计数将签名 SSize_t 总计包装为负数。然后,@、X 和 x 位置代码通过有符号长度比较来保护其移动,当长度为负时传递,从而将缓冲区指针推进到越界之外。从不受信任的输入派生的模板可读取堆内存,并通过缓冲区,并将其返回给调用程序。
CVE-2026-57433
Storable 中有符号的整数溢出
Perl 3.41 之前的 Storable 版本在反序列化构建的 SX_HOOK 记录时存在一个有符号的整数溢出。retrieve_hook_common 从 SX_HOOK 记录中读取已签名的 32 位项目计数,并使用该计数加一调用av_extend。计数 I32_MAX 会导致加法操作的结果回绕成一个负值。传递到 thaw 或 retrieve 的构建 blob 会触发溢出;av_extend收到负计数并因恐慌而终止,从而终止反序列化。
对于 Debian 12 bookworm,这些问题已在版本 5.36.0-7+deb12u4 中得到修复。
建议您升级 perl 程序包。
如需了解 perl 的详细安全状态,请参阅其安全跟踪页面:
https://security-tracker.debian.org/tracker/perl
有关 Debian LTS 安全公告、如何将这些更新应用到系统以及常见问题解答的更多信息,请访问以下网址:https://wiki.debian.org/LTS
Tenable 已直接从 Debian 安全公告中提取上述描述块。
请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。
插件详情
文件名: debian_DLA-4821.nasl
代理: unix
支持的传感器: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Continuous Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus
风险信息
矢量: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C
矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
时间矢量: CVSS:3.0/E:P/RL:O/RC:C
漏洞信息
CPE: cpe:/o:debian:debian_linux:12.0, p-cpe:/a:debian:debian_linux:libperl-dev, p-cpe:/a:debian:debian_linux:libperl5.36, p-cpe:/a:debian:debian_linux:perl-base, p-cpe:/a:debian:debian_linux:perl-debug, p-cpe:/a:debian:debian_linux:perl-doc, p-cpe:/a:debian:debian_linux:perl-modules-5.36, p-cpe:/a:debian:debian_linux:perl
必需的 KB 项: Host/local_checks_enabled, Host/Debian/release, Host/Debian/dpkg-l
易利用性: Exploits are available
参考资料信息
CVE: CVE-2025-15649, CVE-2026-12087, CVE-2026-13221, CVE-2026-19487, CVE-2026-42496, CVE-2026-42497, CVE-2026-48959, CVE-2026-48962, CVE-2026-57432, CVE-2026-57433, CVE-2026-7010, CVE-2026-7017, CVE-2026-8376
IAVA: 2026-A-0618, 2026-A-0696-S, 2026-A-0889