IPBUF安全漏洞报告
English
CVE-2026-5477 CVSS 7.5 高危

CVE-2026-5477 wolfSSL CMAC整数溢出漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-5477
漏洞类型
整数溢出、签名伪造
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
wolfSSL (wolfCrypt)

相关标签

wolfSSLCVE-2026-5477CMACInteger OverflowCryptographicwolfCrypt

漏洞概述

wolfSSL的wolfCrypt CMAC实现中存在整数溢出漏洞。该漏洞源于`wc_CmacUpdate`函数用于跳过首个块XOR链接的保护逻辑使用了32位变量。当处理的数据量达到2^28个块(约4GB)时,该变量会发生回绕归零,导致错误地丢弃当前的CBC-MAC链状态。这使得攻击者能够利用共同的消息后缀,在无需密钥的情况下伪造CMAC标签,实施前缀替换攻击,严重破坏消息完整性。

技术细节

该漏洞位于wolfSSL的`wc_CmacUpdate`函数中。CMAC算法依赖于对每个数据块进行XOR操作以维护CBC-MAC链状态。代码原使用`if (cmac->totalSz != 0)`条件来优化第一个块的处理(因为摘要初始化为0,XOR操作为空操作)。然而,`totalSz`被定义为32位无符号整数(word32)。当处理的数据量超过4GB(即2^28个块)时,`totalSz`会溢出并回绕至0。此时,保护条件误判当前块为“第一个块”,从而跳过了关键的XOR链接步骤,导致内部链状态被重置。攻击者若诱导应用处理大量数据触发溢出,随后发送具有特定后缀的消息,即可生成有效的CMAC标签,实现零工作量伪造。

攻击链分析

STEP 1
步骤1:数据预处理
攻击者诱导受害者系统或应用程序处理超过4GB的数据流,或者利用巨型文件耗尽计数器。
STEP 2
步骤2:触发整数溢出
随着数据量达到2^28个块,`wc_CmacUpdate`中的`totalSz`计数器发生溢出并回绕至0。
STEP 3
步骤3:状态重置
由于`totalSz`变为0,保护逻辑误判当前为第一个块,跳过XOR链接,导致CMAC内部状态被错误重置或丢弃。
STEP 4
步骤4:伪造标签
攻击者发送恶意构造的消息,该消息与之前处理的某条合法消息拥有相同的后缀。由于内部状态被重置,系统计算出相同的CMAC标签,攻击者成功通过验证。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <stdio.h> #include <stdint.h> // Simulation of the vulnerable logic in wc_CmacUpdate void simulate_vulnerable_update(uint32_t totalSz, int isLastBlock) { // The vulnerable guard: checks if totalSz is not zero // In the real code, totalSz wraps around after 4GB of data if (totalSz != 0) { printf("[+] Performing XOR chaining with previous state.\n"); } else { // This block is executed when totalSz wraps to 0 after 4GB printf("[!] VULNERABLE: Skipping XOR (treated as first block).\n"); printf("[!] CBC-MAC chain state is discarded/reset.\n"); } } int main() { // Scenario: Processing data that causes totalSz to wrap // 2^28 blocks * 16 bytes/block = 4GB (approx limit for word32) printf("--- Normal Operation (< 4GB) ---\n"); simulate_vulnerable_update(16, 0); printf("\n--- After 4GB Overflow (totalSz wraps to 0) ---\n"); // Simulate the state where totalSz has wrapped around to 0 // due to integer overflow after processing massive data. simulate_vulnerable_update(0, 0); printf("\n--- Impact ---\n"); printf("An attacker can now send a message with a common suffix,\n"); printf("and it will generate the same CMAC tag as the previous message.\n"); return 0; }

影响范围

wolfSSL (Specific versions prior to fix in PR #10102)

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面对单次CMAC运算的数据总量进行限制,确保处理的数据量不超过4GB,从而避免触发计数器溢出。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表