Nightwatch网络安全研究公司公布了他们发现的重要漏洞:Android操作系统的系统广播向设备上运行的所有应用程序暴露了用户设备的信息。泄露的信息包括WiFi网络名称,BSSID,本地IP地址,DNS服务器信息和MAC地址。其中一些信息(MAC地址)不再通过Android 6或更高版本的api访问,通常需要额外的权限才能访问其余的信息。但是,通过监听这些广播,设备上的任何应用程序都可以捕获这些信息,从而绕过任何权限检查和现有的缓解措施。
由于MAC地址不会改变且与硬件绑定,所以即使MAC地址随机化,这也可以用来精确地识别和跟踪任何Android设备。网络名称和BSSID可以通过查找BSSID数据库(如WiGLE或SkyHook)来定位用户。其他网络信息可以被流氓应用程序用于进一步探索和攻击本地WiFi网络。
所有设备上运行的Android版本都被认定受到了影响,包括fork(比如Kindle上的亚马逊Fire OS)。供应商(谷歌)修复了Android P / 9中的这些问题,但不打算修复旧版本。鼓励用户升级到Android P / 9或更高版本。供应商已指定CVE-2018-9489跟踪此问题。还建议进行进一步的研究,以确定这是否在野外被利用。
背景
Android系统是由谷歌开发的用于手机和平板电脑的开源操作系统。据估计,全球有超过20亿台设备在运行Android系统。Android上的应用程序通常被操作系统和操作系统本身隔离开来。然而,进程和操作系统之间的交互仍然可以通过几种机制实现。
值得一提的是,Android提供了“ Intents ”作为进程间通信方式之一的使用。使用“Intens”的广播允许应用程序或操作系统范围内发送可由其他应用程序收听的消息。虽然有限制阅读此类消息的功能,但应用程序开发人员通常忽略正确实施这些限制,或屏蔽敏感数据。这导致了Android应用程序中的常见漏洞——在同一设备上运行的恶意应用程序可以监视并捕获由其他应用程序广播的消息。
Android中存在的另一种安全机制是权限。这些旨在保护用户隐私的安全措施。应用程序必须通过应用程序清单(“AndroidManifest.xml ”)中的特殊“使用权限”标记明确请求访问某些信息或功能。根据许可的类型(“普通”、“危险”等),OS可以在安装期间向用户显示许可信息,或者可以在运行期间再次提示。某些权限只能由系统应用程序使用,并且不能由常规开发人员使用。
Google Play和运行时的应用程序权限屏幕截图
漏洞详细信息
Android操作系统使用两种与定期广播有关WiFi连接和WiFi网络接口的信息:Wifi管理的NETWORK_STATE_CHANGED_ACTION和WifiP2pManager的WIFI_P2P_THIS_DEVICE_CHANGED_ACTION。这些信息包括设备的MAC地址,WiFi接入点的BSSID和网络名称,以及各种网络信息,例如本地IP范围,网关IP和DNS服务器地址。所有在用户设备上运行的应用程序都可以使用此信息。
虽然应用程序也可以通过Wifi管理访问此信息,但这通常需要应用程序清单中的“ ACCESS_WIFI_STATE ”权限。通过WiFi进行地理定位通常需要“ ACCESS_FINE_LOCATION ”或“ ACCESS_COARSE_LOCATION ”权限。此外,在Android版本6.0及更高版本中,设备的实际MAC地址不再通过API提供,并始终返回地址“02:00:00:00:00:00”。然而,监听系统广播的应用程序不需要这些权限,因此允许在不知道用户的情况下捕获这些信息,并且甚至在Android 6或更高版本上捕获真实MAC地址。
尝试在Android 7.0中获取MAC地址的应用的屏幕截图
供应商响应
供应商在Android P / 9中解决了这些问题。因为这将是一个重大的API更改,供应商不打算修复以前的Android版本。研究人员建议用户将系统升级到Android P / 9或更高版本。