代码改变世界

转载-隐藏在手机中的第二个操作系统

2013-11-20 16:41  杨兴亚  阅读(409)  评论(0编辑  收藏  举报

英文原文:The second operating system hiding in every mobile phone

  每一部智能手机或其它拥有 3G、LTE 通迅能力的设备实际上都运行着两个操作系统,这是个众所周知但又很少被提起的话题。除了那个我们能看的见的系统(Android、iOs、PalmOS),设备上还运行着一个专门处理无线信号的系统。由于这部分任务是高度依赖时效的,必需有一个实时系统来处理它们。

  这个系统固化在固件中并运行在基频芯片上。据我所知,此类基频芯片上运行的系统都完全是厂商私有的。例如,内置于高通的基频芯片(MSM6280)中的实时操作系统叫做 AMSS,它是基于其私有的 REX 内核开发的,共包含 69 个并行的任务,用来处理从 USB 到 GPS 的所有事务。它运行在一个 ARMv5 的处理器上。

  现在我们的问题很清楚了:人们很难了解这些基频芯片和内置的闭源软件,也没有一个相应的机构来检查它们。这个现象很奇怪,要知道这个小小的芯片上处理的任务对于一部移动设备是多么的重要。你也许会假设这部分实时系统是安全和受到保护的,但实际并非如此。你的设备上可能有这个世界上最安全的主系统,但你仍有另一个系统是你不了解、也没有文档并且是厂商私有的;你所能做的仅仅是去找那些高通、英飞凌或其它家的支持人员。

  基频软件的安全问题不是由于某些失误引起的,从设计之初它就是这样的。基频芯片和无线电的标准是在 80 年代制定的,90 年代完成了根据标准开发的程序——很自然,这些程序反映的是 90 年代人们对安全的认知。例如,那时很少有什么漏洞攻击,所以今天人们可以针对漏洞进行肆意的攻击。更糟糕的是基频芯片对基站来的信号(例如手机信号塔)是 100% 信任的。没有认证,所有内容都自动是可信的。最后,基频芯片通常是主处理器,而运行着应用系统的处理器是从处理器。

  所以,我们有一个完备的操作系统,它运行于 ARM 处理器上,该系统上没有或只有很少的漏洞,它完全相信从所连基站上传来的每一条指令、每一段代码和数据。这样的情况会导致什么?

  有了以上的认知,卢森堡大学安全领域的研究员 Ralf-Philipp Weinmann 对高通和英飞凌的基频芯片软件进行了反向工程,他很容易的找到了一大堆的漏洞,这些漏洞涉及各个模块,每一个都能被加以利用——例如使系统崩溃,甚至让攻击者远程执行代码。不要忘了这:这些都是通过无线信号过来的攻击。其中一个漏洞仅仅只需要从远端发送一个 73 字节的消息就可以执行远程代码。

  这意味着一些疯狂的事情都可以基于这些漏洞实现了。例如,你可以使用 Hayes 指令集打开自动应答。这是一种在 1981 年为调制解调器开发的命令式的语言,然而它在今天智能手机的基频芯片上却还在使用!自动应答可以是静音并且用户不可见的。

  当然,我们也许可以认为那些电信巨头们的手机信号塔中的基站是安全的,然而事实是基站正在变得越来越廉价,并且 eBay 上就能买到——现在甚至连基于开源的基站软件都有了。这种基站可以用来对付手机,放一个在闹市区、金融区或其它机密的地方,你就可以远程打开手机、摄像头、安装木马、给昂贵的国际长途号码打电话/发短信。相信我,死锁住目标手机也是可以的。

  这是一个非常严重的问题,但你却从未听说过。这些软件是如此的底层和复杂,我相信世界上没几个人能真正反里面的每一处都搞懂。

  复杂性导致写一个自己的基站软件很困难。仅仅是 GSM 里面囊括的标准就够让人头大的了,这还不包括其它的。现在你必须加上 UMTS、HSDPA 等等。每一个标准都涵盖了一堆荒谬而复杂的专利。为了确保完成所有这一切,通迅主管部门要求基频软件必需通过认证。

  面对如此这么多的阻力,我们不难明白为什么手机厂商们只是优化并延用那些过时的基频芯片和软件。为了确保兼容性,每一个特性手机上都有相应的处理软件,但这些处理软件实际上是一个黑盒。任何时候有人真正的研究里面的代码,就会发现一堆的问题和臭虫,也就使人不得不思考这种荒唐的情况什么时候才能好转。

  希望本文能使大家有一个清醒的认识,无论是发达国家还是发展中国家,移动通迅设备都是现代社会的基石,可它们的枢轴软件却是质量可疑的、不被人了解的、完全私有的并从未在设计上考虑过安全。