原创漏洞 | ClamAV PESpin 解包器堆缓冲区溢出漏洞

· 2026-09-11 18:32 · 4 阅读

微步情报局 2026-09-11 18:32 北京

点击查看漏洞详情

漏洞概况

ClamAV 是开源恶意软件扫描引擎,广泛用于邮件网关、文件网关与终端安全产品中的病毒检测。

近日,Cisco 官方发布通告,修复了ClamAV PESpin 解包器堆缓冲区溢出漏洞(CVE-2026-20339),该漏洞由微步XGPT发现并报送 Cisco 官方。

ClamAV 的 PESpin 解包器存在整数溢出导致的堆缓冲区溢出漏洞,未认证攻击者提交含 PESpin 内容的特制 PE 文件并使其被扫描后,可造成扫描进程崩溃、中断杀毒扫描,满足特定利用条件时可执行任意代码建议受影响用户尽快修复。

    int blobsz = 0;   /* 有符号 32 位 */
    for (j = 0; j < sectcnt; j++)
        blobsz += (bitmap & 1) ? sections[j].vsz : sections[j].rsz;  /* 无溢出检查 */
    ep = cli_max_malloc(blobsz);          /* 回绕 → 过小堆块 */
    for (j = 0; j < sectcnt; j++) {
        uint32_t rsz = (bitmap & 1) ? sections[j].vsz : sections[j].rsz;
        memcpy(to, sects[j], rsz);        /* 按真实节区长度写入 —— 越界发生于此 */
        to += rsz;
    }

    ClamAV 扫描被识别为 PESpin 打包的 PE 时,`unspin()` 会解密、解压各节区,再把它们拼成一块连续镜像。该函数用有符号 32 位整数 `blobsz` 累加各节尺寸,并且不做溢出检查。`blobsz` 回绕之后,`unspin()` 仍按这个过小值调用 `cli_max_malloc`,再按各节真实长度做 `memcpy`,从而在堆上越界写。

    (完整漏洞情报请查阅https://x.threatbook.com/v5/vul/XVE-2026-46443)

    漏洞处置优先级(VPT)

    综合处置优先级:中风险

    基本信息

    步编

    XVE-2026-46443

    CNNVD编号

    CNNVD-2026-92320721

    CVE编号

    CVE-2026-20339

    漏洞类型

    堆缓冲区溢出

    利用条件评估

    利用漏洞的网络条件

    远程

    是否需要绕过安全机制

    对被攻击系统的要求

    无特殊要求

    利用漏洞的权限要求

    无须用户权限

    是否需要受害者配合

    利用情报

    是否有POC

    已知利用行为

    暂无

    漏洞影响范围

    产品名称

    ClamAV

    受影响版本

    0.90 <= version < 1.4.6、1.5.0 <= version < 1.5.4

    有无修复补丁

    修复方案

    官方修复方案

    官方已发布修复方案,请访问链接下载:
    https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-clamav-WuuvVd26

    临时缓解措施

    将 `clamd.conf` 中 `ScanPE` 设为 `no`,或对 `clamscan` 使用 `--scan-pe=no`,关闭 PE 深度解析与 packer 解压,使扫描不再进入 PESpin 解包。

    微步产品支撑

    微步漏洞情报于2026-08-07收录该漏洞。

    微步下一代威胁情报平台NGTIP及X情报中心已于漏洞收录时向漏洞订阅用户推送该漏洞情报,并将持续推送后续更新;对于已经录入资产的用户,支持实时自动化排查受影响资产。

    跳转微信打开