移动的目标总是更难击中。这就是Morpheus背后的基本前提,它是一款被设计用来阻止恶意软件的CPU。这不是一个商业产品,而是一个大学的研究项目,专门用来承担一个DARPA安全处理器挑战赛.到目前为止,它看起来是有效的,转移了所有的攻击。
睡眠完全在硬件中实现恶意软件保护。处理器本身可以阻止恶意软件攻击,超过任何你可能部署的基于软件的对抗措施。它的创造者不会说它是100%不受攻击的,只是说“它非常难以被入侵”。
它将一些现有的技术与一个新的维度结合起来:时间元素。Morpheus加密并混淆代码和数据,然后一遍又一遍地重复,不断移动东西,这样攻击者就没有时间弄清楚发生了什么。单独来看,墨菲斯的反制措施可能很熟悉,但结合起来就形成了一个坚硬的盾牌。
根据密歇根大学Morpheus团队的一名研究生Todd Austin的说法,所有的程序都有“定义语义”和“未定义语义”。换句话说,有些东西是在源代码中显式定义的(例如缓冲区的长度),有些东西只是假设的,比如CPU的本机字大小或内存中对象的首选对齐方式。他说,大多数恶意软件都利用了未定义的东西。例如,侧信道攻击将嗅探功耗、射频发射或计算时间的变化,以收集关于芯片内部正在发生什么的信息。堆栈指针的当前位置是在运行时确定的,而不是在代码中。所有这些东西(以及许多其他东西)都是未定义的语义;它们没有在程序源代码的任何地方指定,而是在真实硬件上运行真实代码的自然副作用。
你可以通过在芯片的行为中添加一些随机性来阻止侧通道攻击。这就像发送箔条来混淆雷达信号并降低信噪比。但是专门的攻击者(DARPA最担心的那种)最终会看穿这些对策,代码分析可以预测堆栈指针的运行时位置。所需要的只是时间。这就是摩尔甫斯登场的地方。
Morpheus随机分配内存地址和指针,并加密数据和代码。但随后它每50毫秒重复这一过程,完全抹去攻击者在解码加密过程中可能取得的任何进展。坏蛋们只有50毫秒的时间来做最坏的事,然后就得从头再来。这就是墨菲斯如此坚韧的原因。
“我自己一般不会说(这是不可破解的),因为我认为它是可以被破解的,”奥斯汀在一份报告中说IEEE Spectrum访谈.“但它非常难以破解。它可能可以被黑客攻击,但不是通过软件。”
“这实际上阻止了任何依赖于指针和代码的攻击。它只能阻止低级别的攻击。它不会阻止像SQL注入这样的事情发生在你的web服务器上。我们为DARPA挑战而建造的Morpheus机器实际上是为了阻止所谓的远程代码执行(RCE)攻击。”
Morpheus的保护工作在两个方面:随机和加密。首先,通过向内存块添加偏移量,将所有内存地址随机化。偏移量将添加到所有写周期,并为所有读周期减去偏移量。更困难的是,代码引用使用一个随机偏移量,而数据引用使用不同的随机偏移量。这两个独立的偏移量还可以防止代码和数据意外地相互干扰。(出于性能原因,位移的最后四位始终为零,以便对象保持字对齐。)内存地址环绕在地址空间周围,因此大偏移量不会创建不可用的地址。
程序代码不会看到这些。就它所知,一切都在它应该在的地方。这就是奥斯汀“未定义语义”的一个例子。这与x86处理器使用内存段来移动代码段、数据段和堆栈段的明显开始和结束的方式没有太大区别。事实上,任何带有MMU的CPU都在做同样的事情。与Morpheus不同的是,偏移量是随机生成的,每50毫秒变化一次。
第二,墨菲斯加密内容代码和数据段,除了移动它们之外。加密密钥也是随机的,并且每50毫秒更改一次。这有一个明显的好处,那就是混淆你的代码,这通常是恶意软件的第一个攻击点。例如,要利用缓冲区溢出的错误,首先必须知道有错误的代码驻留在哪里。恶意软件可以从一个已知的程序位置开始,也可以寻找一个已知的代码片段。Morpheus挫败了这两种攻击模式。
加密和解密发生在处理器的L1缓存之外,但在它的L2缓存(以及任何后续缓存)之前。这使得它对处理器不可见,包括底层内核代码,但是不外部DRAM不可见。即使缓存刷新也只能导出加密的数据。芯片之外的一切都是加密的;里面的所有内容都是明文。如果作恶的人设法在地址随机化的情况下找到了感兴趣的区域,那么数据本身就会被一个密钥加密,有效期只有50毫秒。
动态代码加密并不是一个新想法。IBM的PowerPC CodePack早在20世纪90年代就开始这样做了,尽管IBM的目标是代码压缩,而加密只是一个副作用。Morpheus和PowerPC都以对性能影响最小的方式将加密与地址生成一起处理。
随机地址偏移量也不是什么新鲜事。地址空间随机布局(ASLR)已经存在一段时间了,主流操作系统,如Windows、iOS和Android都在使用它。但是ASLR是在程序第一次加载时添加的一次性偏移量。Morpheus采用了这个概念,并以频繁的间隔重复它,避免攻击者需要时间来计算随机偏移。
50毫秒的重新随机化周期——墨菲斯团队称之为“搅动”——并不是固定的。他们在测试和模拟后得出了这个数字。更短的时间使得黑客攻击更加困难,但是开销会对性能产生不利影响。事实上,团队估计Morpheus会因为所有额外的工作而对性能造成5-10%的影响。
Austin指出,极短的搅乱周期(大约10毫秒)将迫使攻击者在物理上靠近被攻击的硬件。通过几个典型的网络路由器的周转时间将消耗掉大部分的搅动期,几乎没有给黑客留下时间来实施他们卑鄙的行为。
作为一个额外的保障,Morpheus可以启动立即搅动,如果它检测到攻击正在进行中。所以即使是50毫秒的延迟也是最坏的情况。
Morpheus基于RISC-V,主要是因为它是一种鼓励实验的开源CPU规范。“它可以远远超越RISC V,远远超越CPU。概念本身是独立于底层实现的,”Austin说。
可悲的是,安全措施正在成为我们设计的强制性组成部分,从硅布局开始。这增加了一层不必要的复杂性,如果它不能完美地工作,就浪费了精力。Morpheus的技术似乎非常有效,根据其设计者的说法,它们适用于任何CPU、DSP或GPU。如果他们的研究成功了,也许Morpheus将成为新硬件设计的标准部分,这样就少了一件需要担心的事情。