快科技 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 合并窗口这项优化就有望正式并入主线。
届时,装上新版内核的老电脑在安全防护不打折的前提下,性能表现有望小幅提升。



登录后才可以发布评论哦
打开小程序可以发布评论哦