Loading
0

阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解

动态注册BroadcastReceiver导致导出的Receiver这种情况非常少被大家注意,现有的一些安全检测工具、扫描器都不能发现动态注册的BroadcastReceiver。在此阶段,动态注册BroadcastReceiver隐藏在所有代码中,在应用的任何地方都可能出现,需要扫描器全局分析应用的代码找出关键函数registerReceiver,还要找出其IntentFilter所设置的Action和Receiver的权限设置,现在一般一个普通的正常Android应用都有几十M的大小,反编译成smali代码会更多,扫描器遇到的挑战主要是查找的时间和空间挑战,还有多个参数查找的准确性。目前业界只有阿里聚安全的扫描器有准确扫描动态注册BroadcastReceiver导致的本地拒绝服务的能力。
通过阿里聚安全的漏洞扫描器对一些样本进行了检测,也发现了不少动态注册BroadcastReceiver导致的本地拒绝服务攻击。
三、本地拒绝服务漏洞现状
为了了解本地拒绝服务漏洞的现状,阿里聚安全的应用漏洞扫描器针对国内外的各行业主要APP进行了扫描,共扫描了三百多款APP。
国内行业主要是通过采集国内某应用市场的APP,我们采集了各个行业的TOP APP总共有151个,发现拒绝服务漏洞的总个数为970个,平均个数为6.4个**,其中影音播放类的APP本地拒绝服务个数最多,健康类安全类和运营商类比较少、游戏类的最少。**
国内行业APP本地拒绝服务漏洞情况:

柱状图是国内各个行业APP按本地拒绝服务漏洞平均个数排序:

下图是各个组件引起的本地拒绝服务的数量、占比情况:

国内行业动态注册BroadcastReceiver导致的本地拒绝服务漏洞有247个,约占拒绝服务漏洞总数的25%,比静态注册BroadcastReceiver的要多不少:

国外行业主要是通过采集Google Play上的APP,我们也采集了各个行业的TOP APP总共有177个,发现拒绝服务漏洞的总个数是649个,平均漏洞个数为3.7个,平均漏洞个数最多的是办公类应用,最少的和国内行业一样是游戏。
国外行业APP本地拒绝服务漏洞情况:

国外各个行业的应用本地拒绝服务漏洞平均个数排序:

各个组件引起的本地拒绝服务的数量、占比情况:

国外行业动态注册BroadcastReceiver导致的本地拒绝服务漏洞有147个,约占拒绝服务漏洞总数的23%,比国内的情况略少,可见动态注册BroadcastReceiver导致的本地拒绝服务都没有引起大家的重视。

总体上来看,本地拒绝服务风险因为具有Android版本无关性,漏洞本身对APP影响也不大,只与应用开发者是否注意、重视有关,所以现在还经常在应用中出现。在各大厂商的安全应急响应中心评级为低危漏洞,也有厂商不收此类漏洞,但是这些攻击面依然存在,如果深入分析这些组件,有的不仅仅是引发本地拒绝服务风险,必须遵循最小权限原则,没有必要导出的组件不要导出。
四、开发者建议
(1)阿里聚安全的漏洞扫描器已经具备覆盖动态注册Receiver产生的拒绝服务漏洞(目前,还没发现友商的漏洞扫描器有这样的能力),使用阿里聚安全的漏洞扫描器进行扫描,可及时发现这些漏洞。
(2)不必要导出的组件将其exported属性显式的设为“false”,这样可以减少应用的攻击面。
(3)导出的组件在getIntent()后,Intent.getXXXExtra()时用try…catch做好异常处理。
(4)在导出的组件设置好权限控制,不让任意第三方应用访问。
(5)对于动态注册的BroadcastReceiver,尽量少用registerReceiver()方法,如果只在本应用内通信,改用LocalBroadcastManager的registerReceiver()进行本地注册,如果必须导出给外部应用,在使用registerReceiver()时要指定好相应的访问权限。

分页阅读: 1 2
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。