首页 > 编程语言 >Intel 的 Control-flow Enforcement Technology (CET) 是一项硬件级的安全技术,旨在增强程序控制流的保护,防止攻击者利用控制流劫持(如 ROP(Return

Intel 的 Control-flow Enforcement Technology (CET) 是一项硬件级的安全技术,旨在增强程序控制流的保护,防止攻击者利用控制流劫持(如 ROP(Return

时间:2024-12-05 19:24:23浏览次数:3  
标签:硬件 控制流 Programming Oriented 地址 CET 跳转 攻击者

Intel 的 Control-flow Enforcement Technology (CET) 是一项硬件级的安全技术,旨在增强程序控制流的保护,防止攻击者利用控制流劫持(如 ROP(Return-Oriented Programming)JOP(Jump-Oriented Programming) 等技术)来绕过传统的防护机制(如 DEP 和 ASLR)。CET 通过对程序的控制流进行严格的保护,限制恶意代码对程序执行路径的操控,从而增加了攻击者成功实施攻击的难度。

CET 的主要功能和工作原理

CET 主要由两部分组成:

  1. Indirect Branch Tracking (IBT)
    该功能防止了攻击者通过修改程序中的间接分支(如函数指针、虚函数表指针等)来控制程序的执行路径。间接分支是指那些不是固定目标的跳转指令(如 jmp, call 等),攻击者通常通过操控这些分支的目标地址来跳转到恶意代码。通过 IBT,Intel CET 通过在硬件层面上对每个间接分支进行检查,确保跳转目标是合法的,从而防止恶意的控制流劫持。

    • 工作原理:IBT 强制要求所有间接跳转必须跳转到合法的目标地址,这些目标地址必须位于特定的、经过验证的区域内。这样一来,恶意代码无法通过修改跳转目标地址来实现攻击。
  2. Shadow Stack
    Shadow Stack 是一个硬件保护机制,用于防止 栈溢出 攻击。它通过维护一个与程序栈独立的、专门用于保存返回地址的“影子栈”来工作。正常情况下,程序在栈上执行函数调用时,会将返回地址推入栈中。当函数返回时,程序会从栈中弹出返回地址并跳转到该地址。攻击者可能会通过栈溢出等方式修改返回地址,从而劫持程序控制流。Shadow Stack 通过在硬件上独立保存返回地址,确保即使栈被篡改,程序仍然能从正确的返回地址处返回。

    • 工作原理:Shadow Stack 会对比栈上的返回地址与影子栈中的返回地址,如果两者不匹配,程序会触发异常,防止攻击者利用篡改的返回地址进行控制流劫持。

CET 的安全增强

  • 防止 ROP 和 JOP 攻击
    ROP 和 JOP 攻击是通过组合程序中现有的代码片段(gadget)来执行恶意代码,避免了直接执行自注入的代码。CET 通过加强对间接分支和栈操作的保护,限制了这些攻击方式的有效性。

  • 增强的控制流保护
    CET 提供的间接分支追踪和影子栈机制,使得控制流的任何异常变更都能被及时发现,从而增强了程序的完整性保护。这比传统的 DEP(数据执行保护)和 ASLR(地址空间布局随机化)更加细粒度和强大。

  • 与其他安全技术协同工作
    CET 与现有的防护技术(如 ASLR、DEP、控制流完整性(CFI)等)协同工作,提供了更加全面的安全防护。比如,ASLR 随机化了程序的内存布局,增加了攻击者推测地址的难度,而 CET 在硬件层面上限制了恶意代码对程序控制流的篡改,进一步提高了防护效果。

CET 的工作流程

  1. 间接分支检查

    • 当程序执行到一个间接跳转指令时,CET 会检查该指令的目标地址是否符合预设的合法目标。如果目标地址不合法,程序会触发异常,防止攻击者跳转到恶意代码。
  2. 返回地址保护

    • 当程序进入函数调用时,CET 会将返回地址保存在影子栈中。如果栈上的返回地址被恶意篡改(例如,栈溢出攻击),CET 会通过对比栈上和影子栈中的地址,发现不一致并触发异常,防止跳转到不安全的位置。

硬件要求与支持

CET 是一种硬件功能,要求处理器支持并启用该技术。Intel 的 11代酷睿处理器(Rocket Lake) 及以后的处理器开始支持 CET。在操作系统和软件方面,支持 CET 需要操作系统、编译器和应用程序的配合。例如,Windows 10 和 Windows 11 都支持 CET,且开发者可以在编译时启用相关的控制流保护选项。

CET 的优点和局限性

优点:

  • 增强的控制流保护:CET 提供了比传统安全技术更强的控制流完整性保护,特别是在防范 ROP 和 JOP 等攻击方面。
  • 硬件层面的防护:通过硬件实现保护,相比软件防护(如 DEP、ASLR)更难被绕过。
  • 与其他安全技术兼容:CET 可以与其他现有的安全技术协同工作,如 ASLR 和 DEP,增强整体防护效果。

局限性:

  • 需要支持的硬件:CET 需要处理器本身支持,且在不支持的硬件上无法启用。
  • 兼容性问题:启用 CET 后,可能需要修改现有软件或编译选项,以确保与 CET 的兼容性。
  • 性能开销:尽管 CET 主要在硬件上执行,但仍然可能带来一定的性能开销,尤其是在高度依赖间接分支的程序中。

总结

Intel 的 Control-flow Enforcement Technology (CET) 是一项针对控制流劫持攻击的硬件级安全技术,通过引入 间接分支追踪(IBT)影子栈,加强了对恶意代码控制流篡改的防护。CET 与传统的防护机制如 DEP 和 ASLR 协同工作,提供了更为全面和强大的安全防护,尤其是针对 ROP 和 JOP 等高级攻击手段。随着越来越多的处理器和操作系统支持 CET,这项技术有望成为提升系统安全性的关键工具。

标签:硬件,控制流,Programming,Oriented,地址,CET,跳转,攻击者
From: https://www.cnblogs.com/suv789/p/18589249

相关文章

  • 控制流完整性(Control Flow Integrity, CFI) 是一种旨在保护程序免受控制流劫持攻击的安
    控制流完整性(ControlFlowIntegrity,CFI)是一种旨在保护程序免受控制流劫持攻击的安全技术。它通过确保程序的控制流(即程序执行过程中控制路径的顺序)始终按照预定的正确路径执行,从而防止攻击者利用漏洞改变程序的执行流程。CFI主要防御的是控制流劫持攻击,比如返回导向编程(ROP......
  • ROP(Return Oriented Programming) 是一种控制流劫持攻击技术,攻击者通过利用已存在的程
    ROP(ReturnOrientedProgramming)是一种控制流劫持攻击技术,攻击者通过利用已存在的程序代码片段(通常是函数中的一小段指令),将这些片段连接起来,从而构造出恶意的控制流,绕过传统的防御机制如数据执行保护(DEP)或非可执行栈(NX)。ROP攻击通常与缓冲区溢出攻击结合使用,目的是执行攻击者......
  • SEHH/SEHS2042 Computer Programming
    SEHH/SEHS2042ComputerProgrammingGroupProject–AIServiceTokenManagementSystem(Due:23:59,1Dec2024,Sunday)ExpectedLearningOutcomesdevelopcomputerprogramsinoneormorehighlevellanguageprogrammingenvironment;designanddevel......
  • PROG2004 Object Oriented Programming
    AssessmentBriefPROG2004ObjectOrientedProgramming(Assessment1)TitleAssessment1TypeProgrammingDeadline4December11:59AMWeighting20%AcademicIntegrityContractcheatingandtheuseofGenAI,suchasChatGPT,inthisassignmentarestrictlyproh......
  • MIT-Missing-Semester8: Metaprogramming
    A.LectureNotes:CourseoverviewBuildsystems依赖的库的版本。对于8.1.4,三个数字分别表示:major、minor、patch加功能:major添加库:minor安全修补:patchlock文件用于冻结版本。持续集成系统,会有budge的显示,显示了:版本号、测试的覆盖、依赖。cmake:编cmaven:java......
  • CS 551 Systems Programming
    CS551SystemsProgramming,Fall2024ProgrammingProject2nthisprojectwearegoingtosimulatetheMapReduceframeworkonasinglemachineusingmulti-processprogramming.1IntroductionIn2004,Google(thepaper“MapReduce:SimplifiedDataProcessin......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)
    A-Cyclic链接:A-Cyclic代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){ stringss; cin>>ss; cout<<ss[1]<<ss[2]<<ss[0]<<""<<ss[2]<<ss[0]<<ss[1]; return0;}B-Strawberri......
  • 去控制流平坦化混淆
    特征有大量的switch跳转视图使用ctrlshiftD打开d810选择ollvm变干净了许多......
  • 【图解python】 控制流与循环语句
    【图解python】 控制流与循环语句在这篇文章中,我们将介绍Python中的 控制流 和 循环语句,并通过丰富的示例来帮助初学者掌握这些基本概念。1.Python控制流基础1.1什么是控制流控制流是指程序根据条件判断来选择执行路径的过程。通过控制流,我们可以让程序根据不同......
  • C - Word Ladder (Toyota Programming Contest 2024#9 (AtCoder Beginner Contest 370)
    题目链接:C-WordLadder题目:样例:分析:不要被题目所吓到,一切长题目都是纸老虎。题目大意就是给你两个字符串s和t,一次只能更换一个字母,求s变到t更换的次数,并输出每次更换一个字母后的最小字典序字符串。题意好理解,可以直接暴力,大力出奇迹。但是有没有更好的方法呢?既然问了......