CVE-2026-34876Mbed TLS 3.6.6之前版本存在一个安全漏洞。该漏洞源于`mbedtls_ccm_finish()`函数中缺少对`tag_len`参数的有效性验证,导致发生越界读取。攻击者可以通过调用多部分CCM API并传入过大的`tag_len`参数,利用此漏洞读取相邻的CCM上下文数据。尽管Mbed TLS 4.x也存在相同的缺失验证,但由于该函数在4.x中未作为公共API公开,因此风险主要存在于使用Mbed TLS 3.x版本的应用程序中。成功利用此漏洞可能导致敏感信息泄露。
该漏洞位于Mbed TLS加密库的CCM(Counter with CBC-MAC)模式实现中,具体涉及`library/ccm.c`源文件中的`mbedtls_ccm_finish()`函数。漏洞的根本原因在于函数未能正确校验输入的`tag_len`(认证标签长度)参数是否超过了内部16字节认证缓冲区的大小。当应用程序使用多部分CCM API时,如果攻击者能够控制或诱导应用程序传入一个超过16字节的`tag_len`值,`mbedtls_ccm_finish()`在执行过程中将读取缓冲区边界之外的内存区域。这种越界读取操作允许攻击者获取紧邻CCM上下文结构体的内存数据,这些数据可能包含加密密钥、初始化向量或其他敏感操作上下文信息。虽然在Mbed TLS 4.x版本中该代码缺陷依然存在于内部实现中,但由于该函数未暴露给公共API,普通应用程序难以直接调用,因此主要影响范围集中在Mbed TLS 3.x系列版本。攻击者无需认证且无需用户交互即可通过网络发起攻击。