0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CET为何而生?CET安全防御机制解析

Linux阅码场 来源:内核功守道 作者:许庆伟 2022-11-25 09:09 次阅读

1 概述

CET(Control-flow Enforcement Technology)机制是 Intel提出基于硬件的⽤于缓解 ROP/JOP/COP的新技术。特别强调下,他是基于硬件⽀持的解决⽅案。从Intel的Tigerlake (11th gen),Alderlake (12th gen)/Sapphire-Rapid起,粗颗粒度地旨在预防前向( call/jmp )和后向( ret )控制流指令劫持来御防ROP的攻击。

因此针对防御对象不同,CET技术又分为CET-SS用于针对ROP的ret指令和CET-IBT用于针对JOP/COP的jmp/call指令,见图1 功守道。

4f6030d8-6c55-11ed-8abf-dac502259ad0.png

图1 功守之道

2 CET为何而生

在安全世界里,总是希望魔高一尺道高一丈。说到防御者CET,就不得不提他的进攻者ROP了。什么是ROP? 来看⼀个例⼦,假设程序中正常执行如下代码⽚段,注意此时其中不含ret或call指令。

4f80b614-6c55-11ed-8abf-dac502259ad0.png

图2 正常执行流

但是,如果稍加偏移⼀下解释代码的地址时,就会导致出现完全不⼀样的指令,如下图所示:

4f8e1fca-6c55-11ed-8abf-dac502259ad0.png

图3 RET CALL的gadget

如果按照红框中的顺序解释这些指令的时候,那么将会产⽣⾮代码预期的结果,会出现原代码中未出现过的 ret 指令以及 call 指令,这些指令序列被称为 gadget 。

通过仔细构造这些由ret指令终⽌的指令集,攻击者可以执⾏原程序中⾮预期的任意恶意代码,这种新产生ret攻击被称为 ROP 攻击,同理还有COP/JOP(call/jmp)攻击。

为了防御这种此类ROP攻击,Intel工程师在2016年起在硬件机制上推出了CET缓解机制,针对不同的攻击行为分为CET-SS(影子栈)和CET-IBT(间接跳转跟踪),即图1 功守道所示。

3 CET

CET-SS和CET-IBT 在实现机制上属于CPU内部异常,这里就涉及到中断机制。当执行启动CET发现执行执行流中没有endbr64或函数返回ret和影子栈中shandow stack保存的ret不一致时,CPU内部出发异常,这里CET占用的中断向量21号,触发#CP并归为陷阱执行中断处理程序exc_control_protection(),对CET-SS CET-IBT分情况进行报错。CET-IBT -> "traps: Missing ENDBR: xxx", CET-SS-> #CP(control protect)。

这里提一下CPU的异常,当CPU执行中发现ROP/JOP/COP后,CPU给自己发送中断信号。注意异常不一定是错误,只要是异于平常就都是异常。有些异常不但不是错误,它还是实现内核重要功能的方法。CPU异常分为3类:

1.陷阱(trap),陷阱并不是错误,而是想要陷入内核来执行一些操作,中断处理完成后继续执行之前的下一条指令;

2.故障(fault),故障是程序遇到了问题需要修复,问题不一定是错误,如果问题能够修复,那么中断处理完成后会重新执行之前的指令,如果问题无法修复那就是错误,当前进程将会被杀死;

3.中止(abort),系统遇到了很严重的错误,无法修改,一般系统会崩溃。CET归为陷阱。

4fa9a5b0-6c55-11ed-8abf-dac502259ad0.png

图4 CET中断异常处理流程

3.1 CET-SS(Shadow Stack)

3.1.1 原理分析

Intel 提出了⼀种基于硬件的 CET 解决⽅案,其中之⼀的 shadow stack 机制⽤于缓解 ROP 攻击。前⽂图2可以得知 ROP 依赖于 ret 指令,其中要执⾏的后续指令地址从堆栈中获得。因此 ROP 攻击的前提是攻击者能够在堆栈中构造数据。那么再来看 shadow stack 机制是怎么⼯作的。

CET 使操作系统能够创建⼀个 shadow stack (影⼦栈)。正常情况下,当执⾏ call 指令时,会将 call 指令后⼀条指令地址压栈。当启⽤了 shadow stack 后,会同时在普通数据栈和 shadow stack 中压⼊返回地址,随后在执⾏ ret 返回时,会将 shadow stack 中的返回地址和普通数据栈中的返回地址做对⽐,如匹配,则正常执⾏,如不匹配,则触发#CP(Controlflow Protection) 异常。如下图所示:

4fcf2650-6c55-11ed-8abf-dac502259ad0.png

图5 CET-SS针对ret指令触发#cp异常

3.1.2 验证方法

4febb7c0-6c55-11ed-8abf-dac502259ad0.png

图6 CET-SS test

以上内核代码以ko的形式进行加载,然后通过用户空间的app触发系统调用,这里的app被名字也命为shadow_test_fork(内核函数和app名字一致了,容易产生混淆,请大家理解)。系统调用最终调到图6中的shadow_test_fork()函数。发生如下异常报错,见图7。

50111d44-6c55-11ed-8abf-dac502259ad0.png

图7 CET-SS test result #CP

3.2 CET-IBT(Indirect Branch Tracking)

JOP/COP 攻击⼿法与 ROP 类似,只不过是把 ROP 中以 ret 指令做跳板的关键点替换成了 call/jmp 指令。还是拿讲述 ROP章节的两幅图(图2 图3)举例,图3中偏移解释字节码后出现了不同的指令,包含了:

5031f79e-6c55-11ed-8abf-dac502259ad0.png

图8 CET-IBT call指令攻击

这⼀指令序列,这就是 COP 中的 gadget ,以 call 指令为跳板,也就不需要 ret 指令的辅助了。这种不需要 ret 指令的攻击场景下,前⾯所说的 shadow stack 机制就失效了。这种情况下, CET 的第⼆种机制 IBT(Indirect Branch Tracking) 就应运⽽⽣了。

3.2.1原理分析

IBT(Indirect Branch Tracking),间接跳转跟踪"希望能防止攻击者让间接跳转(例如,通过指针变量进行的函数调用)进入一个不应该走到的地方。功守道之中是为了应对JOP/COP的。

IBT 是为了防御面向跳转编程的(jump-oriented programming);工作原理是试图确保每个 indirect branch 的目标确实都是适合作为跳转目标的。IBT 的方法有很多,每一种都有自己的优势和劣势。例如,内核在 5.13 开发周期中支持了编译器实现的 IBT 机制。

在这种模式下,编译器通过一个 "jump table, 跳转表" 来完成每一个间接跳转,不仅确保目标是要供间接跳转使用的,而且要确保被调用函数的原型与调用者所期望的一致。这种方法是很有效的,但要增加很多编译、运行时的开销。

英特尔的 IBT 方法相当简单,但优点是得到了硬件的支持,因此速度更快.如果 IBT 被启用,那么 CPU 将确保每个间接跳转都落在一条特殊指令(endbr32 或 endbr64)上(见图9),该指令执行时跟 no-op 效果一致。如果发现意外,那么处理器将引发一次 control-protection(#CP)exception。

504bdee8-6c55-11ed-8abf-dac502259ad0.png

图9 CET-IBT ENDBR标志嵌入辅助检测

3.3.2测试方法

5065457c-6c55-11ed-8abf-dac502259ad0.png

图10 内核测试函数

5080ece6-6c55-11ed-8abf-dac502259ad0.png

图11 CET-IBT 运行测试结果

3.3 硬件机制.

CPU 是如何实现这种校验机制的呢?答案是⽤了 ENDBRANCH 状态机。

CPU 在⽤户态和内核态分别设有⼀个 ENDBRANCH 状态机,状态机共有两个状态,为 IDLE 和WAIT_FOR_ENDBRANCH 。初始状态都为 IDLE ,当执⾏间接跳转 call 的时候,状态机会从 IDLE变为WAIT_FOR_ENDBRANCH ,这时候就意味着下⼀条指令就必须为 endbr32/64 ,如果是 endbr32/64 ,状态机就会从 WAIT_FOR_ENDBRANCH 变回 IDLE ,如果不是则会触发 #CP 异常。

509c2380-6c55-11ed-8abf-dac502259ad0.png

图12 状态机

3.4 其他objtool

需要在所有的间接跳转目标地址都添加 endbr 指令,这就为今后造成了一个潜在的陷阱:开发者可能会添加汇编函数但是忘记了这个指令。如果他们在没有启用 IBT 的情况下进行测试,那么这个问题就不会被注意到,可能直到有问题的代码被合并后的某个让人非常不爽的时间点才突然暴露出来。为了防止这种情况的发生,开发者加强了内核的 objtool 工具来检查所有的间接跳转,并确保所有的目标都恰当地标注(annotated)好了。

不过,有了这种检查之后,还可以采取另一个步骤:objtool 还可以列出所有包含 endbr 指令但是永远不会通过间接跳转到达的函数。这些函数不需要进行标注,没有它们的话,内核会更安全一些。因此,内核 build 的过程会从 objtool 中获取该列表,并通过用 nop4 指令覆盖 endbr 来 "封印" 这些函数。这就减少了攻击者在启用 IBT 时仍然可以选择的攻击目标。

正如 Peter Zijlstra 所指出的,删除不需要的 endbr 指令还有一个也许是令人惊讶的好处。内核限制了 loadable module 所能使用的函数,而那些专有的(proprietary)module 则受限更多。那些专有的 module 经常使用一个技术就是在内核的符号表中查找到它们需要的、未 export 的函数,然后通过间接跳转来调用它们,从而绕过内核的限制。但是,在启用 IBT 后,任何缺乏 endbr 指令的函数都不再能以这种方式调用了。

4 性能分析

50bcfe52-6c55-11ed-8abf-dac502259ad0.png

图13 递归调用

50cdabf8-6c55-11ed-8abf-dac502259ad0.png

图14 CET性能分析

50e5898a-6c55-11ed-8abf-dac502259ad0.png

图15 CET 性能分析

5 内核开发进度

内核开发者已经努力了一段时间,希望能让英特尔 IBT 功能进入 Linux 内核。实现这个功能的第一个 patch(针对用户空间代码而不是针对内核)是由 Yu-cheng Yu 在 2018 年发布的。然后,这项工作似乎成了那些不断穿越邮件列表的飞行荷兰人(flying-Dutchman)patch 之一,从未能够进入 mainline;第 30 版是 2021 年 8 月发布的,也没有达到能够合并的程度。类似的情况也发生在了用户空间的影子堆栈(user-space shadow-stack)patch set 上,在经历多次修订后,这些 patch 最近被 Rick Edgecombe 接手了。

2021年年底,Peter Zijlstra 决定创建一个独立的英特尔 IBT 实现来保护内核本身;第一个版是在去年 11 月发布的,Zijlstra 显然是 "在周五晚上/周六早上赶工出来的"。这项工作发展得很快,3月初发布的第四个修订版就是为 5.18 合并的版本了(链接见参考文档CET-IBT patches)

这就是目前为止的情况了。从 2020 年底上市的 Tiger Lake 一代开始,英特尔处理器就支持 IBT 了,只支持了内核代码。这并不是一个完美的工具,但它将提高攻击者攻击这类系统的门槛。同时,目前还不清楚用户空间的支持何时(或是否)会进入 mainline 内核;到目前为止发布的 30 个修订版中,有许多根本没有收到任何 review 意见。该部分已经被Rick Edgecombe接手并发布了v1版本,后续我们拭目以待,希望能在6.2中会合入全部的CET代码。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6718

    浏览量

    123165
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27466
  • JOP
    JOP
    +关注

    关注

    0

    文章

    2

    浏览量

    8382

原文标题:Intel CET 安全防御机制深度解析

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    知语云全景监测技术:现代安全防护的全面解决方案

    技术能够精准判断安全威胁的来源和意图,为企业和个人提供及时、准确的安全预警。 主动防御,有效应对:在发现安全威胁后,知语云全景监测技术能够迅速启动主动
    发表于 02-23 16:40

    基于InsiderThreat的安全防御体系结构研究_王辉

    基于InsiderThreat的安全防御体系结构研究_王辉
    发表于 03-19 11:38 0次下载

    基于多样化存储的缓存污染防御机制

    针对内容中心网络(CCN)中的缓存污染攻击问题,提出一种基于多样化存储的缓存污染防御机制。对不同业务内容采取差异化缓存从而减小网络受攻击面,将业务划分为三类并采用不同缓存策略:对隐私及实时性业务不予
    发表于 01-09 18:58 0次下载
    基于多样化存储的缓存污染<b class='flag-5'>防御机制</b>

    英特尔Tiger Lake处理器即将推出,CET为提供CPU级别的安全功能

    近日,英特尔宣布即将推出的移动CPU(代号“Tiger Lake”)将提供人们期待已久的安全层,称为控制流实施技术(CET),旨在防止常见的恶意软件攻击。CET可以防止对处理器控制流的攻击,后者
    的头像 发表于 06-18 14:10 3733次阅读

    担心数据泄露?2023 年数据安全防御的 6 个关键策略

    进入2023年,数据安全问题已经变得日益重要,近年来,网络安全事件频发,从大规模数据泄露到网络钓鱼攻击,一个个威胁警醒着我们数据安全防御的重要性。这一背景下,虹科DataLocker脱颖而出,为
    的头像 发表于 10-21 08:04 1219次阅读
    担心数据泄露?2023 年数据<b class='flag-5'>安全防御</b>的 6 个关键策略

    APP盾的防御机制及应用场景

    APP盾的防御机制以及在不同应用场景中的应用。01什么是APP盾?APPShieldAPP盾,全名ApplicationShield,是一种专门设计用于保护移动应
    的头像 发表于 01-20 08:31 2040次阅读
    APP盾的<b class='flag-5'>防御机制</b>及应用场景

    CET中电技术邀您参加中国分布式光储市场发展(南宁)研讨会

    ,针对分布式光储行业场景,如何帮助客户解决电网安全稳定运行问题。研讨会上,CET中电技术将展示CET光伏储能就地监控解决方案以及相关电力二次智能终端产品,欢迎莅临C
    的头像 发表于 04-24 08:35 361次阅读
    <b class='flag-5'>CET</b>中电技术邀您参加中国分布式光储市场发展(南宁)研讨会

    CET中电技术邀您参加2024智慧电厂建设先进技术及典型案例推广交流会

    深圳举行。本次交流会,CET中电技术将展示CET数字孪生可视化管理系统、CET分布式光伏集中运维管理平台、CET智能电力运维管理平台及相关产品,欢迎莅临
    的头像 发表于 05-21 08:35 612次阅读
    <b class='flag-5'>CET</b>中电技术邀您参加2024智慧电厂建设先进技术及典型案例推广交流会

    2024年第八届中国智慧轨道交通大会闭幕,CET中电技术产品获好评

    5月17-18日,2024年第八届中国智慧轨道交通大会在西安圆满闭幕,CET中电技术参与大会多个推广环节,对CET中电技术产品多维度展示。产品展示区域,CET中电技术展示了CET城市轨
    的头像 发表于 05-23 08:35 463次阅读
    2024年第八届中国智慧轨道交通大会闭幕,<b class='flag-5'>CET</b>中电技术产品获好评

    SNEC 2024即将启幕,CET中电技术与您相约上海

    6月13-15日,由亚洲光伏产业协会等主办的第十七届(2024)国际太阳能光伏与智慧能源(上海)大会暨展览会(简称SNEC2024),将在国家会展中心(上海)举行。CET中电技术参展本次展览会,将
    的头像 发表于 06-08 08:35 353次阅读
    SNEC 2024即将启幕,<b class='flag-5'>CET</b>中电技术与您相约上海

    低碳安全 智慧创新,CET中电技术邀您相约2024建筑电气高峰论坛

    7月11日,2024建筑电气高峰论坛将在北京举行,本次论坛以“低碳安全智慧创新”为主题,旨在聚焦低碳环保、安全高效、智慧创新的建筑电气发展路径,探讨最新技术与解决方案。「论坛信息」论坛名称:2024
    的头像 发表于 07-09 08:36 254次阅读
    低碳<b class='flag-5'>安全</b> 智慧创新,<b class='flag-5'>CET</b>中电技术邀您相约2024建筑电气高峰论坛

    CET建筑光储直柔解决方案,助力实现低碳建筑绿色用电

    CET建筑光储直柔解决方案,助力实现低碳建筑绿色用电
    的头像 发表于 07-31 08:36 955次阅读
    <b class='flag-5'>CET</b>建筑光储直柔解决方案,助力实现低碳建筑绿色用电

    为“绿”而生,向“数”前行!CET中电技术邀您参加2024国际数字能源展

    CET中电技术(展位:1号馆1A03B)邀您一起讨论“在新的数字能源技术和产品推动下,未来能源发展的新方向”。左右滑动查看更多关于CET中电技术CET中电技术创立
    的头像 发表于 08-31 08:05 208次阅读
    为“绿”<b class='flag-5'>而生</b>,向“数”前行!<b class='flag-5'>CET</b>中电技术邀您参加2024国际数字能源展

    CET中电技术邀您参加2024全国石油化工新型电力系统技术与应用大会

    在“双碳”目标与能源结构转型的背景下,聚焦石油和化工行业领域,优先使用可再生能源满足电能替代项目的用电需求,努力实现“双碳”目标。9月7-8日,以“安全绿色创新共赢”为主题的2024全国石油化工新型
    的头像 发表于 09-04 08:06 231次阅读
    <b class='flag-5'>CET</b>中电技术邀您参加2024全国石油化工新型电力系统技术与应用大会

    浅谈SOC片上系统LoRa-STM32WLE5数据安全防御机制

    LoRa-STM32WLE5 SoC模块不仅仅是一个具备出色通信能力的无线模块,更是一个集成了多重安全机制的高效SoC解决方案。通过AES硬件加密、PCROP读写保护、MPU内存管理等技术的结合,它为物联网设备提供了全方位的安全防
    的头像 发表于 09-06 17:37 437次阅读
    浅谈SOC片上系统LoRa-STM32WLE5数据<b class='flag-5'>安全防御机制</b>