导语:Nightwatch Cybersecurity于8月29日发布消息称,发现Android新漏洞,它使恶意应用程序得以绕过权限检查和现有的防护,访问系统广播信息。
Nightwatch Cybersecurity于8月29日发布消息称,发现Android新漏洞,它使恶意应用程序得以绕过权限检查和现有的防护,访问系统广播信息。根据该通报,这一漏洞的信息如下:
【漏洞名称】Android 安全漏洞
【漏洞编号】CNNVD-201809-120(CVE-2018-9489)
攻击者可借助WiFi广播利用该漏洞绕过权限检测,泄露有关用户设备的信息,例如WiFi网络名称,BSSID,本地IP地址,DNS服务器信息和MAC地址。
目前,谷歌已经在安卓9.0 Pie上修复了此漏洞,但它仍然存在于较旧版本的安卓系统中,而且谷歌似乎不打算对旧版本上的漏洞进行修复。这意味着CVE-2018-9489能影响安卓9.0以前的全部系统版本,基本就是目前市面上95%以上的安卓设备。
具体来说, CVE-2018-9489安全漏洞能将有关用户设备的信息暴露给设备上运行的所有应用程序,包括WiFi网络名称、BSSID、本机IP地址、DNS服务器信息和MAC地址。按着原来的安全设想,这些隐私信息都是要都是要通过Android 6及更高版本的API提供,并且通常需要额外的权限才能访问其余信息。但是,CVE-2018-9489安全漏洞的存在,让设备上的任何应用程序都可以捕获此信息,从而绕过任何权限检查和现有保护。这就意味着,攻击者可以通过监听这些广播信息,对任何安卓设备进行识别、追踪,甚至进行地理定位。恶意应用访问其他网络信息后,还可能在本地的WiFi网络中进行探索甚至攻击。
攻击过程
Android上的应用程序通常被操作系统和操作系统本身隔离开来,不过,进程和操作系统之间的交互仍然可以通过几种机制实现,比如Intent机制,Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的联系。
在SDK中给出了Intent作用的表现形式为:
· 通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
· 通过Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
· 通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给broadcast receivers;
而CVE-2018-9489安全漏洞就是利用Intent机制窃取广播信息的,虽然这个机制设置的非常好,但应用程序开发人员却忽略如何正确的部署这些限制以及如何更好的保护敏感数据。这在Android系统中应用程序中是比较普遍的,一旦设备被恶意感染,就会处于监控状态,并且截取其他程序的广播信息。
根据Nightwatch的说法,操作系统开发人员也对这种疏忽感到内疚,他们发现Android操作系统本身会定期使用两种不同的Intent机制,广播有关WiFi连接和WiFi网络接口的信息。
这意味着攻击者可以发现这些信息,而理论上这些信息只能通过WifiManager获取。WifiManager这个类, 是Android提供给开发者使用的一个系统服务管理类, 其中包含对WiFi的响应的操作函数; 其隐藏掉的系统服务类为IWifiService, 为Android私有。如果要查看WifiManager,则需要额外的权限要求。另外,MAC地址在Android版本6及更高版本上的功能中甚至不可用,这使得它的安全性非常好。
由于监听系统广播的应用程序不需要这些权限,因此系统会允许程序在用户不知情的情况下捕获这些信息,即使在Android 6或更高版本上也可以捕获真正的MAC地址。
有了这些信息,攻击者就可能会造成各种类型的破坏,包括利用网络信息进一步嗅探和攻击本地WiFi。此外,由于MAC地址是硬编码的,因此即使使用MAC地址随机化,攻击者也可用于识别和跟踪任何Android设备。
研究人员说:
网络名称和BSSID可用于通过查找BSSID数据库(如WiGLE或SkyHook),从而对用户进行地理定位。
该漏洞有点类似于最近发现的Man-in-the-Disk (MitD) 漏洞,Man-in-the-Disk攻击是因为没有限制应用程序对外部存储的访问,外部存储是所有应用共享的资源,而且不受到安卓内置沙箱的保护。该漏洞已在DEF CON 2018中讨论过,另外,该漏洞还涉及跨应用程序信息泄漏,这意味着,任何app均可能篡改其它app的外部存储数据。在安卓系统内部一共有两种类型的存储,分别是内部存储(Internal Storage)和外部存储(External Storage)。内部存储结果安卓沙箱隔离,每个应用使用不同的区域;外部存储一般是SD卡或设备存储的逻辑分区,是所有应用共享的。外部存储主要用于应用与PC之间共享文件,比如消息应用要与手机相册应用分享图片就要访问外部存储上的媒体文件。这意味着,写入其中的任何数据都可能被设备上的另一个应用程序窃取并改变数据。而且这一猜测,目前已经在安装在Android设备上的Fortnite游戏中得到了验证,因为测试人员已经通过该机制获得了游戏玩家的数据了。
是故意还是有意为之,要修复此漏洞,必须升级到安卓9.0
在3月份被告知此漏洞后,谷歌在本月早些时候的Android P(Android 9)中解决了这个漏洞。但是,他们不打算修复旧版本的操作系统,因此要修复此漏洞,必须升级到安卓9.0。
而Android 9.0才刚刚在北京时间2018年8月7日上午正式发布,这意味着要想获得安全保护,用户就必须升级到还不到一个月大的新版本中。这让人不得不怀疑,目前Google正在在学iOS强制升级的手段,推广新系统。另外Android 9.0还未得到市场的充分验证,安全性和体验都有待验证,因此这样强力升级的手段,很令人反感。
根据Google于8月31日更新的最新Android版本市场份额表来看,一个月大的Android 9.0根本没上榜,也就意味着它现在的市场份额连0.1%都不到。
另外,我们都知晓每个采用Android的手机制造商都会基于某个版本,定制自己设备的硬件和配套设置,要想让全球的用户为解决该漏洞都直接升级到最新版本,难度可想而知,这从Google最近几次推动系统升级的努力失败可以看出。
整体看来,用户量最多的还要属 Android 6.0 Marshmallow,占比23.5%;其次是 Android 7.0,占比23.5%;下来是Android 5 Lollipop(棒棒糖),占比20.4%。此外Android 8 Oreo(奥利奥)占有12.1%,也算不小的份额,同时还有大量 的用户停留在 Android 5.0 版本之前。
之所以Android 的市场比较混乱,是因为iOS设备仅由苹果生产,而Android设备则是由无数Android手机厂商生产,且其生产的每款Android手机上的底层芯片都不一样。因此,升级这件事可以不是Google一家说了算的,设备和手机厂商需要花费大量的时间和成本,才能升级到最新的操作系统。