Intel应对ROP攻击的新技术

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

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

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

没有更多推荐了,返回首页