CVE-2026-31697Linux内核中的crypto模块CCP驱动存在安全漏洞。在处理CPU ID检索请求时,如果PSP固件命令执行失败(例如用户空间提供的缓冲区长度不足),驱动程序未能正确处理错误状态,仍尝试将ID数据复制到用户空间。这导致读取超出内核分配缓冲区范围的数据,进而造成内核内存信息泄露。
该漏洞位于Linux内核的 `drivers/crypto/ccp/sev-dev.c` 文件中的 `sev_ioctl_do_get_id2` 函数。当用户空间通过ioctl调用 `SEV_GET_ID2` 时,驱动会与PSP固件交互。如果固件返回错误(如 `-EOVERFLOW`,表示用户缓冲区太小),驱动程序本应中止操作。然而,存在逻辑缺陷导致驱动程序在固件报错后仍执行 `copy_to_user`。此时,复制操作使用的长度是固件要求的长度(较大),而内核分配的临时缓冲区大小是基于用户输入(较小)。这种长度不匹配导致 `copy_to_user` 发生越界读取,攻击者可借此读取内核堆内存中的敏感数据,并可能触发KASAN告警导致系统崩溃。