前言

国外研究人员披露了Android漏洞(CVE-2018-9489)的信息。Android系统的内部广播机制会暴露敏感的用户和设备信息,手机上安装的应用可在用户不知情或未经许可的情况下访问获取这些信息。

Android系统的内部广播机制泄露的数据包括:Wi-Fi网络名称、Wi-Fi网络BSSID,本地IP地址、DNS服务器信息和设备的MAC地址等详细信息。部分信息(如Mac地址)在Android 6版本以上无法通过这个漏洞获取,但是剩下的依然可以通过监听广播来绕过权限检查和其他防范措施。

背景

Android是谷歌开发的用于手机和平板电脑的开源操作系统,保守估计全球有超过20亿台设备运行Android。Android上的应用程序通常与系统隔离,但是通过几种机制仍然可以实现应用程序的进程与操作系统间的交互。

比如说这次问题的源头。Android提供了“ Intent ”作为进程间的通信方式之一,该机制允许应用程序或系统发送可由其他应用程序收听的消息。尽管开发人员可以选择关闭或限制这个机制,但是在实践过程中工程师往往疏于部署限制机制或屏蔽敏感数据。这就导致了上文中的Android漏洞,手机上的恶意软件可以监听并捕获其他应用程序广播的消息。

安卓系统提供的最常见的安全机制是权限控制,旨在保护用户的隐私信息不受侵害。应用程序必须通过应用程序清单(“ AndroidManifest.xml ”)中的特殊“ uses-permission ”标记明确请求访问某些信息或功能。根据许可的类型(如“正常”、“危险”等),系统可以在应用安装期间向用户显示授权信息,或者在运行期间再次提示。某些权限只能由系统应用程序使用,并且不向第三方开发人员开放。

Google Play和运行时的应用程序权限截图:

漏洞详情

Android系统通过“ Intent ”机制广播有关Wi-Fi连接和Wi-Fi网络接口的信息:

WifiManager的NETWORK_STATE_CHANGED_ACTION

WifiP2pManager的WIFI_P2P_THIS_DEVICE_CHANGED_ACTION

这些信息包括设备的MAC地址、Wi-Fi接入点的BSSID、网络名称以及本地IP、网关IP和DNS服务器地址等信息。此信息可供用户设备上运行的所有应用程序使用。

虽然应用程序也可以通过WifiManager访问此信息,但这样的话需要应用程序清单中的“ ACCESS_WIFI_STATE ”权限。通过Wi-Fi进行地理定位通常需要“ 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版本进行了测试,结果显示所有测试设备和Android版本都可以复现这个问题,尽管某些设备未在“ NETWORK_STATE_CHANGED_ACTION ”Intent中显示实际MAC地址,但它们仍在“ WIFI_P2P_THIS_DEVICE_CHANGED_ACTION ”Intent内。同时由于MAC地址是固定且与硬件绑定,所以哪怕设备的MAC地址是随机化的,也可以用它来识别和跟踪任何Android设备。而针对网络名称和BSSID信息,可通过查询BSSID数据库(如WiGLE或SkyHook)来定位用户。恶意软件可以使用这些网络信息来进一步试探和攻击本地Wi-Fi网络。研究人员表示所有版本的Android系统均会受到影响,包括各种分支,如亚马逊的Kindle FireOS。谷歌在Android P/9中修复了这个问题,但不会为旧版本的系统提供更新,建议用户升级到Android最新版本。

问题复现

通过应用程序

对于Android设备用户,可以按如下方式复制这些问题:

1. 安装Vilius Kraujutis开发的“Internal Broadcasts Monitor”应用。

2.  打开应用,然后点击“Start”开始监控广播信息。

3.  观察系统广播信息,特别是“android.net.wifi.STATE_CHANGE”和“android.net.wifi.p2p.THIS_DEVICE_CHANGED”这两条。

示例:

通过代码

使用代码复现,需要创建一个广播接收器并注册以接收这些信息:

android.net.wifi.WifiManager.NETWORK_STATE_CHANGED_ACTION

android.net.wifi.WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION

示例代码如下所示:

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle state) {

IntentFilter filter = new IntentFilter();

filter.addAction(

android.net.wifi.WifiManager.NETWORK_STATE_CHANGED_ACTION);

filter.addAction(

android.net.wifi.WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

registerReceiver(receiver, filter);

}

BroadcastReceiver receiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

Log.d(intent.toString());

….

}

};

后续

因为这是一个重大的API变更,谷歌仅在Android P/9中修复了这个问题,旧版的Android系统不会得到更新,建议用户升级到Android P/9或更高版本。

Android系统广播机制存在漏洞,恶意软件可绕过安全机制跟踪用户的更多相关文章

  1. Android系统广播处理机制

    Android系统中的广播是广泛用于应用程序之间通信的一种手段,它类似于事件处理机制,不同的地方就是广播的处理是系统级别的事件处理过程(一般事件处理是控件级别的).在此过程中仍然是离不开Intent对 ...

  2. Struts2漏洞利用原理及OGNL机制

    Struts2漏洞利用原理及OGNL机制研究   概述 在MVC开发框架中,数据会在MVC各个模块中进行流转.而这种流转,也就会面临一些困境,就是由于数据在不同MVC层次中表现出不同的形式和状态而造成 ...

  3. Android证书验证存漏洞 开发者身份信息可被篡改(转)

    原帖地址:http://bbs.pediy.com/showthread.php?p=1335278#post1335278 近期在国内网易,雷锋网等网站爆出谷歌市场上的索尼官方的备份与恢复应用&qu ...

  4. android签名分析及漏洞修复

    本篇我们来看看android的签名机制.发布出来的apk都是有META-INF文件夹,里面包含如下三个文件: 下面来一一解释这三个文件的作用(打包apk时签名过程):SignApk.main() 1. ...

  5. android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)

    继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) ...

  6. android ioctl fuzz,android 本地提权漏洞 android root

    目前正在研究android 三方设备驱动 fuzzer , 也就是下图所说的 ioctl fuzzing, 下图是由keen team nforest 大神发布: 欢迎正在研究此方面的人联系我共同交流 ...

  7. wemall app商城源码Android之ListView异步加载网络图片(优化缓存机制)

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之L ...

  8. android 系统广播

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00012731 String ADD_SHORTCUT_ ...

  9. ZT Android 4.2 BT系统之蓝牙关闭过程全跟踪

    Android 4.2 BT系统之蓝牙关闭过程全跟踪 分类: android 2013-08-03 00:34 2252人阅读 评论(10) 收藏 举报 代码位置:       frameworks/ ...

随机推荐

  1. git与pycharm合并,珠联璧合

    前段时间提交代码都是各种手写push push push,好蠢,今天尝试了一下ide直接提交,爽的一匹,做个总结. 首先github帐号肯定要有. 看图,设置好帐号啥的 再设置git路径,这个应该自动 ...

  2. hadoop环境安装及错误总结

    历时N天的hadoop环境,终于配好了 主要参考 Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 1.开机默认进入字符界面或者是图形界面:http://blog.cs ...

  3. 浅谈ES5和ES6继承和区别

    最近想在重新学下ES6,所以就把自己学到的,记录下加强下自己的理解 首先先简单的聊下ES5和ES6中的继承 1.在es5中的继承: function parent(a,b){ this a = a; ...

  4. HDU 6025 Coprime Sequence

    枚举,预处理. 预处理前缀$gcd$与后缀$gcd$,枚举删哪一个即可. #include <bits/stdc++.h> using namespace std; int T,n; ]; ...

  5. 洛谷——P2393 yyy loves Maths II

    P2393 yyy loves Maths II 题目背景 上次蒟蒻redbag可把yyy气坏了,yyy说他只是小学生,蒟蒻redbag这次不坑他了. 题目描述 redbag给了yyy很多个数,要yy ...

  6. Linux Shall命令入门

    Linux Shall命令入门 ifconfig                                            //查看ip信息 service network start   ...

  7. 在win7环境建立一个超隐秘账户

    在win7环境下,系统安全得到了加强,今天来看看怎样在win7环境下新建一个超级隐藏用户. 首先,我们需要新建一个普通的账户. 在win7中我们使用net  user  添加或者删除账户都是被拒绝的. ...

  8. 2017-2018-1 JAVA实验站 冲刺 day03

    2017-2018-1 JAVA实验站 冲刺 day03 各个成员今日完成的任务 小组成员 今日工作 完成进度 张韵琪 写博客.进行工作总结 100% 齐力锋 部分按钮图片.对按钮图片进行ps 100 ...

  9. Problem E: 深入浅出学算法006-求不定方程的所有解

    Description 现有一方程ax+by=c,其中系数a.b.c均为整数,求符合条件的所有正整数解,要求按x由小到大排列,其中a b c 均为不大于1000的正整数 Input 多组测试数据,第一 ...

  10. bzoj 1211: [HNOI2004]树的计数 -- purfer序列

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...