CVE-2025-71077CVE-2025-71077是Linux内核中的一个安全漏洞,存在于TPM(可信平台模块)驱动程序中。漏洞根源在于tpm2_get_pcr_allocation()函数在处理PCR(平台配置寄存器)banks时,没有对允许的banks数量设置任何上限限制。攻击者可以通过外部I/O接口向系统传递超出合理范围的PCR banks数量值,当这个值超过系统处理能力时,可能导致内核资源耗尽或其他异常行为,最终引发本地拒绝服务(DoS)条件。该漏洞需要本地低权限用户即可触发,无需用户交互即可利用。虽然CVSS评分5.5属于中等严重程度,但其影响主要集中在系统可用性方面,攻击成功可能导致目标系统变得不稳定或无响应。
该漏洞的技术本质是边界条件检查缺失。在Linux内核的TPM2驱动程序中,tpm2_get_pcr_allocation()函数负责获取TPM设备的PCR分配信息。正常情况下,TPM设备应该只有有限数量的PCR banks(例如8个或更少),每个bank对应一组PCR寄存器。然而,该函数在处理来自TPM设备的响应时,没有验证PCR banks数量是否在合理范围内。攻击者可以通过恶意构造的TPM命令响应或利用存在缺陷的TPM设备固件,传递异常大的banks数量值(例如超过1000)。当内核尝试为每个bank分配内核数据结构时,会消耗大量内存和其他系统资源。如果攻击者持续发送此类请求或触发相关代码路径,可能导致内核内存耗尽、系统不稳定甚至崩溃。修复方案是在该函数中添加对PCR banks数量的上限检查,将允许的最大banks数限制为8个,确保即使收到异常响应也不会对系统造成严重影响。