L1 Terminal Fault 这个bug 详情和处理方式, 详情请参考linux kernel 官方文档:
https://www.kernel.org/doc/html/latest/admin-guide/l1tf.html
其中介绍该bug的主要一段话:
L1 Terminal Fault is a hardware vulnerability which allows unprivileged speculative access to data which is available in the Level 1 Data Cache when the page table entry controlling the virtual address, which is used for the access, has the Present bit cleared or other reserved bits set.
说的直白一点就是,在page table walk的时候,其中一项权限检查就是检查PTE 的 P位,P位有效才可以做虚拟地址到物理地址的转换,P位无效的时候,正常情况下要产生GP fault。但是intel的cpu设计的够激进,在权限检查的时候会做推测执行,导致虚拟地址非法转换成物理地址,并将物理地址的内容读入到cache中。
AMD的cpu不存在该漏洞,国产X86 cpu 兆芯的产品也不存在该漏洞。
如果你是intel的cpu, 在linux OS中grub 只需添加内核参数 l1tf=full 即可软件修补该漏洞。当然了,大众用户,一般不需要修补。
验证的POC 网址:
https://github.com/gregvish/l1tf-poc
作者已经试过该POC可以work,请读者自行尝试。