日期:2014-05-17 浏览次数:20796 次
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/01/winrt_exploit
近日,一位独立开发者发现了一种在运行着Windows RT的微软Surface上运行未签名桌面应用的方式。该漏洞利用了Windows 8的一处内核Bug,该Bug当然也被WinRT继承下来了。C.L. Rokr发现该处Bug会导致“未签名的桌面应用能够运行在Windows RT上”。InfoQ采访了Rokr以了解其研究发现。
InfoQ:你的计算机背景是什么?
Rokr:我是个专业的嵌入式应用开发者。我觉得逆向工程很有意思,但却从来没有找到过关于这方面的好工作。
InfoQ:研究并发现该漏洞花了多长时间?
Rokr:我知道该处Bug已经有段时间了,但其用处却很有限。在数据区的任何地址处都会将给定值减1。没有办法修改代码,因为这些页是只读的。在内核中找到适合的点花了我大约3周时间,主要是因为我之前从未如此仔细研究过Windows。
InfoQ:你这么做的动机是什么?为了解锁设备以运行你需要的应用还是仅仅是好奇?
Rokr:在我发现新的Visual Studio有个ARM目标时,我就编译了一个示例Win32应用。接下来,我就等待着我的Surface能够快些到来。在Reddit的一次AMA讲座时,Surface团队清楚地表示遗留应用将无法运行在Windows RT上,但我相信他们仅仅表示x86代码是无法运行在ARM机器上,这一点我很清楚。后来,有人提到代码签名,我再一次相信这仅仅是本地安全策略的一部分,用户可以禁用掉它,因为这正是微软的做法。你能够想象得到我第一次在Surface上运行示例时的样子,它无法运行。
InfoQ:你说到“颇具讽刺意味的是,Windows内核的一处漏洞存在了一段时间,并且还被移植到了ARM上,就像Windows的其他部分一样”。
Rokr:这很奇怪。微软确实希望Windows 8与Windows RT能有所不同,但最终他们之间的相似性使我能够做到这一点。当然了,静态分析很有帮助,但拥有一个可用的系统(启用内核调试)使得我可以在很短的时间内查明一切重要的东西,无需将我的Surface连接到逻辑分析器上(我不确定这是否可能,有些人说Tegra3是个堆叠包,上面运行着RAM)。
InfoQ:在Windows 8上这么做有多难?
Rokr:如果Windows 8拥有同样的限制,那么过程也一样。我一开始是在Windows 8上这么做的,因为可以使用内核调试器限制它,就像微软对RT所做的那样,但后来发现不行。
InfoQ:其他人可能觉得这不是什么问题,但微软解决这个问题容易么?只需发布一个“必选”的系统更新就行么?
Rokr:微软会像其他Bug那样修复它的,这是一件好事。如果他们没有将Code Integrity作为可选,那么我还会发现其他的,如果我找不到,也会有人找到的。
有多家新闻网站报道了微软对于Rokr所做的这一切的回应:
微软:这个场景并不是个安全Bug,并不会对Windows RT用户造成威胁。当需要访问本地系统、管理员权限或是调试器时,上面所描述的机制并不是每个用户都会的,也不是合理的行为。此外,Windows Store是用户在Windows RT上安装应用的唯一一种受支持的方式。有一些机制可以扫描安全威胁,并确保来自Store的应用是合法的,可以正常获取并使用。
我们对人们的这种创造力以及付出的辛勤努力感到由衷的钦佩。在未来的发布中,我们不保证这些方式还可以使用。
查看英文原文:Researcher Breaches Windows RT's Security System