阿里聚安全掃描器之本地拒絕服務(wù)檢測詳解

阿里聚安全的Android應(yīng)用漏洞掃描器有一個(gè)檢測項(xiàng)是本地拒絕服務(wù)漏洞的檢測,采用的是靜態(tài)分析加動(dòng)態(tài)模糊測試的方法來檢測,檢測結(jié)果準(zhǔn)確全面。本文將講一下應(yīng)用漏洞掃描器在針對(duì)本地拒絕服務(wù)的檢測方法。

一、本地拒絕服務(wù)產(chǎn)生原因和影響

Android應(yīng)用使用Intent機(jī)制在組件之間傳遞數(shù)據(jù),如果應(yīng)用在使用getIntent(),getAction(),Intent.getXXXExtra()獲取到空數(shù)據(jù)、異常或者畸形數(shù)據(jù)時(shí)沒有進(jìn)行異常捕獲,應(yīng)用就會(huì)發(fā)生Crash,應(yīng)用不可使用(本地拒絕服務(wù))。惡意應(yīng)用可通過向受害者應(yīng)用發(fā)送此類空數(shù)據(jù)、異?;蛘呋螖?shù)據(jù)從而使應(yīng)用產(chǎn)生本地拒絕服務(wù)

阿里聚安全的博客以前有一篇文章《Android應(yīng)用本地拒絕服務(wù)漏洞淺析》,里面詳細(xì)講了產(chǎn)生本地拒絕服務(wù)的四種情況:

  1. NullPointerException空數(shù)據(jù)異常:應(yīng)用程序沒有對(duì)getAction()等獲取到的數(shù)據(jù)進(jìn)行空指針判斷,從而導(dǎo)致空指針異常而導(dǎo)致應(yīng)用崩潰。
  2. ClassCastException類型轉(zhuǎn)換異常:程序沒有對(duì)getSerializableExtra()等獲取到的數(shù)據(jù)進(jìn)行類型判斷而進(jìn)行強(qiáng)制類型轉(zhuǎn)換,從而導(dǎo)致類型轉(zhuǎn)換異常而導(dǎo)致應(yīng)用崩潰。
  3. IndexOutOfBoundsException數(shù)組越界異常:程序沒有對(duì)getIntegerArrayListExtra()等獲取到的數(shù)據(jù)數(shù)組元素大小的判斷,從而導(dǎo)致數(shù)組訪問越界而導(dǎo)致應(yīng)用崩潰。
  4. ClassNotFoundException異常:程序沒有無法找到從getSerializableExtra ()獲取到的序列化類對(duì)象的類定義,因此發(fā)生類未定義的異常而導(dǎo)致應(yīng)用崩潰。

當(dāng)應(yīng)用被惡意應(yīng)用攻擊時(shí),本地拒絕服務(wù)一般會(huì)導(dǎo)致正在運(yùn)行的應(yīng)用崩潰,首先影響用戶體驗(yàn),其次影響到后臺(tái)的Crash統(tǒng)計(jì)數(shù)據(jù),另外比較嚴(yán)重的后果是應(yīng)用如果是系統(tǒng)級(jí)的軟件,可能導(dǎo)致手機(jī)重啟。Nexus 5曾經(jīng)出現(xiàn)過這樣的情況,它預(yù)裝了一個(gè)用來測試網(wǎng)絡(luò)連通性的系統(tǒng)應(yīng)用,這個(gè)應(yīng)用是隱藏狀態(tài),無法在桌面上打開,包名為com.lge.SprintHiddenMenu。在Android 4.4.3之前的版本里,這個(gè)應(yīng)用里有大量導(dǎo)出的activity,這些 activity不需要任何權(quán)限就可以被外部調(diào)用。其中一個(gè)為com.lge.SprintHiddenMenu.sprintspec.SCRTN的組件是導(dǎo)出的,并且沒有任何權(quán)限限制,給它發(fā)送一個(gè)空Intent,可導(dǎo)致Nexus 5手機(jī)重啟。

二、阿里聚安全掃描器的進(jìn)化提升

一個(gè)簡單的本地拒絕服務(wù)類漏洞,要想進(jìn)行大規(guī)模的自動(dòng)化掃描,掃描器也要做不少的工作,并且隨著對(duì)本地拒絕服務(wù)漏洞的認(rèn)識(shí),阿里聚安全的漏洞掃描器也在不斷進(jìn)行優(yōu)化提高。

2.1 空Intent階段

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式