7-Zip 曝高危漏洞,堆溢出可致任意代码执行,打开文件即触发(CVE-2026-48095)
GitHub Security Lab 研究员 Jaroslav Lobačevski 披露了 7-Zip NTFS 归档处理器中的堆缓冲区溢出漏洞。漏洞根源在于 CInStream::GetCuSize() 函数中一处 32 位移位运算的 C++ 未定义行为:当攻击者构造的 NTFS 镜像将 ClusterSizeLog 设为 28、CompressionUnit 设为 4 时,移位指数达到 32,触发 UB,导致 _inBuf 仅分配 1 字节,而后续读取操作将向这块 1 字节缓冲区写入多达 256 MB 的攻击者可控数据。溢出覆盖堆上紧邻的流对象 vtable 指针,形成经典的 vtable 劫持原语,可实现任意代码执行。尤其值得注意的是,7-Zip 在按扩展名匹配失败后会按文件签名回退尝试所有处理器,因此无论文件扩展名为 .7z、.zip、.rar 还是 .pdf,只要内容符合 NTFS 特征,均会路由至该漏洞路径,受害者仅需用 7-Zip 打开文件即可触发。 (github) CVSS 3.1 评分 8.8,已有公开 PoC。受影响版本为 26.00 及以下所有版本,修复版本为 26.01,建议立即升级。
来源:https://securitylab.github.com/advisories/GHSL-2026-140_7-Zip/
GitHub Security Lab 研究员 Jaroslav Lobačevski 披露了 7-Zip NTFS 归档处理器中的堆缓冲区溢出漏洞。漏洞根源在于 CInStream::GetCuSize() 函数中一处 32 位移位运算的 C++ 未定义行为:当攻击者构造的 NTFS 镜像将 ClusterSizeLog 设为 28、CompressionUnit 设为 4 时,移位指数达到 32,触发 UB,导致 _inBuf 仅分配 1 字节,而后续读取操作将向这块 1 字节缓冲区写入多达 256 MB 的攻击者可控数据。溢出覆盖堆上紧邻的流对象 vtable 指针,形成经典的 vtable 劫持原语,可实现任意代码执行。尤其值得注意的是,7-Zip 在按扩展名匹配失败后会按文件签名回退尝试所有处理器,因此无论文件扩展名为 .7z、.zip、.rar 还是 .pdf,只要内容符合 NTFS 特征,均会路由至该漏洞路径,受害者仅需用 7-Zip 打开文件即可触发。 (github) CVSS 3.1 评分 8.8,已有公开 PoC。受影响版本为 26.00 及以下所有版本,修复版本为 26.01,建议立即升级。
来源:https://securitylab.github.com/advisories/GHSL-2026-140_7-Zip/