英特尔的芯片级设计漏洞导致 Linux 和 Windows 内核的关键部分必须重新设计
关于修复进展
开源程序员们已经因此修改了 Linux 的虚拟内存系统,但是代码注释被缩减,以隐藏漏洞的详细信息Windows 预计在本周四发布相关补丁,且补丁已经在去年十一月、十二月的 Windows Insider 版本中发布给了测试用户macOS 也需要进行升级。
关于修复方法
芯片微码更新不足以修复漏洞,必须修改系统或者购买新设计的 CPU目前 Linux 解决漏洞的方案是重新设计页表(KPTI 技术,前身为 KAISER)。之前普通程序和内核程序共用页表,靠 CPU 来阻止普通程序的越权访问。补丁的方案是让内核使用另外一个页表,而普通程序的页表中只保留一些必要的内核信息(例如调用内核的地址)。这个方案会导致每次普通程序和内核程序之间的切换(例如系统内核调用或者硬件中断)都需要切换页表,引起 CPU 的 TLB 缓存刷新。TLB 缓存刷新相对正常指令来说是非常耗时的,因此会降低系统的效率。KAISER 技术对系统性能的影响一般是 5%,最高可达 30%。一些高级的芯片功能(例如 PCID)可以支持其他的修补方式,从而减少性能影响。Linux 已经在 4.14 版本的开发过程中添加了对 PCID 的支持。在 Linux 系统中,KPTI 只有在英特尔芯片上才会启用,因此 AMD 芯片不受影响,且用户可以通过手动修改开关的方式关闭 KPTI。
关于漏洞影响
根据 AMD 在 Linux 内核邮件列表里发送的邮件,AMD 芯片没有发现这样的漏洞漏洞导致普通程序可以获得受保护的内核页表信息,进而导致一些内核保护机制(例如 KASLR,即内核地址空间布局随机化)可能被攻破微软 Azure 云服务将在 1 月 10 日进行维护并重启,人们推测可能是为了修复这个漏洞Amazon Web Services 通过邮件警告客户,本周五会有一次重要的安全更新======= 其他信息 =======还是根据 AMD 的那封邮件,人们推测出现问题的根源是“推测执行”(Speculative execution)机制。这个机制让 CPU 可以预测即将执行的代码,从而加快运行速度。人们猜测,可能芯片在完成权限检查之前,就会因为这个机制而执行本来不该执行的代码。也有人推测这个漏洞就是去年年末传言的虚拟机器监视器(hypervisor )的重大 bugKPTI 的前身 KAISER 本来是用来防止 time-based attack 的,但是因为性能损失较高而一直没有并入主流 Linux 版本中Linux 内核中阻止 KPTI 在 AMD 芯片上自动启用的代码是 AMD 自己提交的。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论1 条评论
2018-01-08 15:35