WIKI

7.1 Activityactivity-aliasservicereceiver导出组件检测

(1)描述

Activityactivity-aliasservicereceiver组件对外暴露会导致数据泄露和恶意的dos攻击。

(2)风险等级

提醒

(3)影响范围

所有

(4)检测方法

检测类型:静态分析

检测Activityactivity-aliasservicereceiver。先检测组件的exported属性,再检测组件的permission对应的protectionlevel属性.

Step1:找出要检查的攻击面(即对外开放的组件)

组件的exported属性

exported=”true”

intent-filteractionlauncher(启动界面)

safe

actioncategory不是”launcher”

check

exported未设置

intent-filteractionexported defaultfalse

safe

intent-filteractionexported defaulttrue

check

exported=”false”

safe

 

Step2:根据android:permission的属性找攻击面

组件的permission

未设置android:permission属性

check

android:permission属性值为normal或者dangerous

check

android:permission属性值为signature或者signatureOrSystem

Safe

 

Step3:合并step1step2,确定组件风险

待检测组件

exported=”true”

actioncategory不是”launcher”

未设置android:permission属性

中危

android:permission属性值为normal或者dangerous

中危

android:permission属性值为signature或者signatureOrSystem

safe

exported未设置

intent-filteractionexported defaulttrue

未设置android:permission属性

中危

android:permission属性值为normal或者dangerous

中危

android:permission属性值为signature或者signatureOrSystem

safe

(5)修复建议

ü  最小化组件暴露。对不会参与跨应用调用的组件添加android:exported=”false”属性。

ü  设置组件访问权限。对跨应用间调用的组件或者公开的receiverserviceactivityactivity-alias设置权限,同时将权限的protectionLevel设置为”signature””signatureOrSystem”

ü  组件传输数据验证。对组件之间,特别是跨应用的组件之间的数据传入与返回做验证和增加异常处理,防止恶意调试数据传入,更要防止敏感数据返回。

(6)漏洞利用

0x01 使用Activity Manager启动敏感暴露组件

am start -n 包名/组件路径

例如:am start -n com.test/com.test.SecondActivity

 

0x02 使用恶意应用调用其他应用的暴露组件

例如:

Intent i = new Intent();

i.setComponent(new ComponentName("com.isi.testapp","com.isi.testapp.Welcome"));

startActivity(i);

(7)样例分析

http://www.wooyun.org/bugs/wooyun-2010-0169746

http://www.wooyun.org/bugs/wooyun-2010-0104965

(8)参考资料

http://jaq.alibaba.com/blog.htm?spm=0.0.0.0.Wz4OeC&id=55

http://bobao.360.cn/learning/detail/122.html