美国黑客教父谈黑客如何入侵CPU的微码?

  在英特尔奔腾处理器BUG之后的每个现代CPU中,汇编指令并不是CPU实际执行的一对一映射。在CPU内部,有一个解码器可以将汇编转换为更原始的指令,这些指令被送入CPU的内部调度程序和管道。驱动解码器的代码是CPU的微代码,它存在于通常无法访问的ROM中。但是过去已经部署了微代码补丁来修复CPU硬件错误,所以它肯定是可写的。美国黑客教父:“这实际上是一个黑客邀请,并开始攻击AMDK8和K10处理器的微代码。”

  在微码中玩耍的障碍是令人生畏的。它将汇编语言变成了某种东西,但是内部CPU,ALU等使用的指令集是完全未知的。黑客带我们走过他们的第一道攻击线,这基本上是在黑暗中猜测。首先,他们绘制出每个x86汇编代码在微码ROM中的位置。使用此信息以及更新微码的能力,他们可以加载并执行任意微码。他们仍然对微代码一无所知,但他们知道如何运行它。所以我们中国黑客教父也曾经说过,中国必须拥有自己的芯片。

  所以他们开始上传随机微码,看看它做了什么。这个随机微码几乎每次都会崩溃。其余时间,输入和输出状态之间没有区别。但是,经过一周的运行,一个突破:微码XOR'ed。从这里,他们发现了命令的语法,并开始通过反复试验发现更多命令。在比赛的最后阶段,他们继续将芯片拆开并用显微镜和OCR软件读出ROM内容,至少足以验证一些微码操作是否在ROM中烧毁。

  结果是29个微代码操作,包括逻辑,算术,加载和存储命令,足以开始编写微码代码。编写的第一个微代码程序自然有助于进一步发现。但不久之后,他们编写了微代码后门,这些后门是在执行给定计算时触发的,而隐秘的特洛伊木马则通过以编程方式将故障引入计算来加密或“不可察觉”地泄露数据。这意味着几乎无法察觉的恶意软件驻留在CPU内部。

  黑客然后勇敢地让我们完成了基于浏览器的攻击,首先在调试器中我们可以验证他们的自定义微码是否被触发,然后在调试器外面突然xcalc弹出。什么启动了该计划?从未修改的浏览器内部计算网站上的特定数字。

​  黑客还演示了在微码中引入一个简单的数学错误,这使得加密例程在另一个特定乘法完成时失败。虽然这听起来可能不是很多,但如果你在关于基于单个偶发比特错误显示密钥的讨论中注意到了,你会发现这实际上是几百万倍的强大因为每次都会发生错误。

  团队没有完成他们的微代码探索,还有更多的命令集需要发现。因此,作为一个概念证明,几乎完全不可检测的特洛伊木马可能存在于编译代码和机器上的CPU之间运行的微代码中。但是,更有趣的是,它也是一个开始探索自己的邀请。并不是每天都有一个全新的计算机黑客攻击领域。(欢迎转载分享)

猜你喜欢

转载自blog.csdn.net/w3cschools/article/details/82386931
今日推荐