漏洞概述 在 函数中,存在一个漏洞,该函数用于解析 UEFI 签名列表。根据 UEFI 规范, 包含 字节,这些字节是供应商特定的数据,位于固定的 28 字节头和实际签名条目之间。 函数在读取条目之前没有跳过这些供应商特定的字节,导致攻击者可以将任意 SHA256 哈希注入到可信测量哈希列表中。 影响范围 此漏洞允许攻击者通过构造 TPM 事件日志,将任意 SHA256 哈希注入到可信测量哈希列表中,从而可能绕过远程验证器的安全机制。 修复方案 1. 验证签名头大小:确保 不超过剩余的签名列表空间。 2. 跳过供应商特定字节:在读取条目之前,使用 跳过 字节。 3. 添加回归测试:添加回归测试以确认供应商特定的字节不被视为哈希。 4. 代码优化:使用 代替 来跳过供应商特定的字节,避免分配不必要的内存。 5. 常量定义:使用 常量代替魔法数字 32。 6. 测试拆分:将 测试拆分为两个确定性测试。 POC 代码