瑞典斯德哥尔摩 KTH 皇家理工学院的计算机科学教授 Pontus Johnson,刚刚在一篇学术文章中介绍了他在通用图灵机(UTM)中发现的可执行任意代码的相关漏洞。作为历史上最早的计算机设计之一,通用图灵机(UTM)是由已故的人工智能学家 Marvin Minsky 在 1967 年提出的一项概念模拟设计。尽管他承认这么做没有“现实意义”,但此事还是引发了业内人士的广泛讨论。
(来自:Marvin L. Minsky | PDF)
The Register 指出,这其实是一个相当有趣的哲学观点,即如果计算机的最简单概念之一容易受到用户的干预,那我们应该的设计过程中尝试部署哪些安全特性?
Pontus Johnson 在论文中写道:“通用图灵机常被认为是最简单、最抽象的计算机模型,但通过利用 UTM 缺乏输入验证这一缺点,就能够诱骗它运行第三方编写的程序”。
据悉,Marvin L. Minsky 在 UTM 的概念设计中描绘了一款基于磁带的机器,它能够从模拟磁带中读取并执行相当简单的程序。
磁带上的指令以单行字母数字字符来表示,且能够通过模拟磁头的左右移动来读取。尽管用户能够在磁带开头进行输入,但在 UTM 模型中,却没有考虑到用户不该修改随后的程序。
Pontus Johnson 补充道:“抛开历史意义不谈,我们还是可以深入讲解这一最简单计算机概念的脆弱性倾向”。
然而 UTM 的“安全性”取决于一位数字,它被用来告诉机器“用户输入到此为止,之后的所有内容,都可适用机器刚刚读取的参数来执行“。
尽管 Marvin L. Minsky 没有打造安全或易受攻击的系统的意图,但计算机科学家们显然还是喜欢从基础学术原理下手论证。
验证攻击的方法也很是简单,只需在用户输入字段中编入‘输入在此结束’字符,然后补上自己想要执行的程序即可。
届时 UTM 会执行该操作,并跳过原本预期的后续程序。如果将复杂性扩大一些,你会发现它甚至具备了 SQL 注入漏洞的所有特征。
综上所述,对于硬件和固件设计人员来说,最好还是从一开始就考虑到各项安全措施的部署。感兴趣的朋友,可查阅 CVE-2021-32471的更多细节。