老旧英特尔CPU有救了!KCFI安全优化让性能损失大降90%

倚天百科 百科资讯 3

8月11日消息,英特尔开发者皮特·齐尔斯特拉近日为Linux内核准备了一项KCFI(内核控制流完整性)优化,这项改动主要让广泛部署、不支持FineIBT特性的老旧英特尔处理器受益。

KCFI是Linux内核的一种安全机制,用于拦截控制流劫持攻击,在间接调用前校验目标函数类型,防止攻击者篡改跳转流程。

它的搭档FineIBT属于软硬结合方案,依赖英特尔间接分支跟踪硬件,只在第11代酷睿Tiger Lake及更新处理器上可用。

因此第10代酷睿及更早的旧机和部分老服务器只能用普通KCFI序列执行检查,开销相对偏高。新补丁专门改写这段序列,在启动阶段把总会触发的跳转指令换成直接跳到预留字节位置,从而减少每次间接调用多占的指令周期。

新序列还顺带利用了英特尔定版的新单字节指令UDB(操作码0xD6),它能作为立即数嵌进test指令,跳转时直接落到该字节位置,实现更省空间,也规避了此前借用保留操作码的争议。

从测试数据看,开启KCFI后老平台原本会累积可观的性能损耗,而新方案几乎消除了其中的主要拖累项。基准测试显示,性能损耗回落约90%。

目前补丁已进入tip/tip.git仓库的x86/core分支,Linux 7.2预计8月下旬发布正式版,随后的7.3合并窗口这项优化就有望正式并入主线。

届时,装上新版内核的老电脑在安全防护不打折的前提下,性能表现有望小幅提升。