Intel应对ROP攻击的新技术

Intel长期与社区合做,以加强操做系统和软件的安全防御。但随着防御技术的加强,攻击者也相应地提升技术手段,JOP(Jump Oriented Programming)和ROP(Return Oriented Programming)就是被普遍采用的手段。由于使用的是内存中已有的代码,因此很难被发现。
Intel和Microsoft在过去的10年里,设计了十多种方案来解决这个问题,最后归结于x86/64架构的CET(Control-flow Enforcement Technology) specification。基于以往的经验教训,包括定义新的扩展指令、改动ISA等,Intel为安全防御机制所定的目标以下。web

  • 对绝大多数设计或实现良好的软件是透明的,只须要极少的改动,甚至不须要改动。
  • 不但对应用程序,并且对操做系统起做用。适应于绝大多数语言编写的程序。
  • 那些使用了CET功能的软件,也能够在旧平台上运行,只不过是再也不具备安全防御能力。
  • 但愿可以防护全部的JOP/ROP攻击。

CET的两个关键组成部分是shadow stack和indirect branch tracking。
CET中新增的shadow stack彻底用于监控控制流的变化,而传统的栈(程序运行时在内存中所占有的部分空间),同时用于控制流信息和数据的保存。在CET被使能的状况下,CALL指令除了把返回地址压入传统栈中以外,还把它压入了影子栈。传统栈中的内容不受任何影响。执行RETURN指令的时候,返回地址从两个栈中同时弹出,只有它们的内容一致,控制流才会转移到返回地址上去。对影子栈的写保护机制使得攻击者很难同时修改两个栈中的返回地址,也就很难修改控制流,进而实现攻击行为。
Intel的ISA架构下还增长了一条ENDBRANCH指令,用来标识一个合法的间接分支挥着跳转。若是非法,则CPU会产生一个异常,显示器为危险操做。为了兼容,该指令在当前的Intel处理器中被实现为NOP。
Intel长期以来一直致力于减小安全特性对性能的冲击,CET也不例外,但其对性能的影响与软件特性相关。安全