Blackphone被普遍认为是目前最安全的Android智能机。不幸的是,无论设计者把系统设计的怎么安全,它肯定还是存在漏洞的。我们最近发现了一个漏洞,这个漏洞允许攻击者远程控制手机的调制解调器功能。 Blackphone是SGP科技的全资子公司SilentCircle开发的,Blackphone提供给用户控制应用程序的权限,比如绑定无声电话、无声短信服务即匿名服务和加密通信服务,这样就没有人对语音、视频和短信进行窃听了。 shell@blackphone:/dev/socket $ ls -l at_pal
srw-rw-rw- radio system 2015-07-31 17:51 at_pal 除了被Android上的SELinuxfile_contexts使用,网上没有任何地方提及了这个socket。它似乎是nVidia Shield tablet,这个东西似乎是另一种带有Icera调制解调器的被广泛使用的Android设备,但是它现在已经被nVidia放弃了。随着我们的进一步挖掘,我们发现有一些应用程序会和这个socket交互,尤其是agps_daemon,它需要更高的shell权限因为它是一个system/radio user。 细节展示 I/AGPSD ( 219): agps_PortParseArgs: Getting property (agpsd.dev_path=/dev/ttySHM3) from environment I/AGPSD ( 219): agps_PortParseArgs: Getting property (agpsd.socket_path=/dev/socket/at_pal) from environment D/AGPSD ( 219): Kernel time: [9.408745] D/AGPSD ( 219): vendor/nvidia/tegra/prebuilt/ceres/../../icera/ril/agpsd/agps_daemon.c Version : 1.12 D/AGPSD ( 219): vendor/nvidia/tegra/prebuilt/ceres/../../icera/ril/agpsd/agps_daemon.c Built Dec 2 2014 12:00:30 D/AGPSD ( 219): agps_uplinkThread: Entering I/AGPSD ( 219): open_tty_port: Opening /dev/ttySHM3 I/AGPSD ( 219): agps_downlinkThread: Entering 根据日志,我们可以看出这是一个nVidia Icera调制解调二进制,它在监听一个"socket_path"/dev/socket/at_pal,打开一个/dev/ttySHM3上的tty_port。之后,我们用IDA Pro打开agps_daemon,想法很快被确认,然后我们可以看到这个权限的过程在at_pal socket上监听,然后write所有从socket到ttySHM3d端口的内容。我们之后大概看了下二进制,发现这个ttySHM3端口被radio监听了。这就意味着我们已经发现了一种方式直接与调制解调器进行谈话!我们很容易就能确认这种使用shell命令行润行agps_daemon的方式是可行的,因为我们看到一个"test"县城已经被遗留到了代码里; 进制,我们可以看出这些假的命令行是被发送给调制解调器的。这将允许一个攻击者运行称一个shell使用者然后发送命令行给radio,或者利用一个带有internet权限的安卓应用发送命令行给radio。 AT + CMUT - 设置调制解调器是否静音(防止响铃) ATD - 设置呼叫ID或者无法拨出电话 AT+CMGT + AT+CMGS - 发送SMS,安卓设备上不可见 AT+CCFC - 设置呼叫转移,防止来电显示 AT+CSCS + AT+CUSD - 发送USSD代码 除了上边的代码,还有很多看起来不标准的代码,或者是执行任何可见操作的代码。进一步调查之后,我们能够找到其他的代码路径,这些允许攻击者这么做: 发送和接受短信(不会在Android 主UI中展示,也不会让用户以任何方式注意到)
拨号或连接电话(这个对用户来说会非常明显,因为UI会弹出对话,然而这会导致一些不可撤销的电话,这些电话必须通过调制解调互动挂断)
静默检查手机通话状态(用户的电话打了那个号码,用户是打电话还是接电话)
重置APN/SMSC/Power设置
强制取消一些号码的通话
静音
强制/取消强制来电显示设置
杀调制解调(强硬重启回复所需的调制解调)
找到连接的信号塔(基站)
静默注册呼叫号码转移(Blackphone将不会注意到任何打入的电话、来电这不会受到任何通知) 还有很多我们没有列举的方式,一些代码看起来潜在危害很大。一旦我们确认这些研究结果,我们需要一个CVE并联系SilentCircle公司。他们要求我们通过Bugcrowd提交问题。这个问题被分配为CVE-2015-6841,我们通过了Bugcrowd的bug赏金,相信SilentCircle修复了bug。 2015-08-25 – 联系供应商、销售商,要求进入Bugcrowd,问题通过Bugcrowd被提交,提交CVE
2015-09-04 – 问题在Bugcrowd发布
2015-09-10 – 问题通过MITRE CERT被分配为CVE-2015-6841
2015-09-30 – 供应商承认并接受提交
2015-11-02 – 问题标记为已解决,获得奖励,供应商修复
2015-12-07 – 发布包含已修复bug的补丁1.1.13 RC3 * 原文链接:sentinelone |