1. 程式人生 > >APP漏洞自動化掃描專業評測報告(上篇)

APP漏洞自動化掃描專業評測報告(上篇)

一、前言

隨著Android作業系統的快速發展,運行於Android之上的APP如雨後春筍般湧現。由於一些APP的開發者只注重APP業務功能的實現,對APP可能出現安全問題不夠重視,使得APP存在較多的安全隱患。國內一些安全廠商為這些開發者提供了各種各樣的安全服務,包括APP的加固、安全漏洞分析等。

目前在業界有很多自動化檢測APP安全性的線上掃描平臺。為了瞭解目前國內移動APP線上漏洞掃描平臺的發展情況,我進行了一次移動安全掃描平臺的評測分析;主要從漏洞項對比、掃描能力對比以及掃描結果這三個方向來對比。

希望此次的調研結果可以為讀者提供更加可靠的安全漏洞掃描服務建議。

二、分析物件

這一章主要介紹需要對比的掃描平臺和需要測試的APP樣本。

2.1 對比平臺

對上述掃描平臺,我都上傳APP進行了測試,簡單比較它們的掃描結果。最後,綜合檢測結果、它們在漏洞掃描領域的知名度以及它們的使用者數量,我選取表中前五個掃描平臺,即阿里聚安全、360APP漏洞掃描、金剛、百度和AppRisk進行詳細的對比分析;由於金剛和優測都是騰訊旗下的產品,所以我選擇了專注於APP審計的金剛審計系統。

愛加密掃描速度很快,但整個漏洞掃描就是為其加密模組做鋪墊,掃描項非常簡單,沒有實際的漏洞掃描,只是簡單的字串匹配,故掃描速度非常快。梆梆加密掃描速度也比較快,掃描內容比愛加密要豐富,一共14項,包含了一些高危漏洞的掃描,如與WebView相關的一些漏洞等,但是其漏洞掃描模組也是為了給自己的加固服務做鋪墊,所以沒有選取這兩家。AppTest掌測測試成本太高,每次測試2999元起,所以沒有對它進行詳細分析。騰訊優測的掃描結果與金剛非常相似,但沒有金剛詳細;有時候掃描結果只有漏洞概述,沒有漏洞的詳細資訊,也沒有修復建議。愛內測的掃描結果非常簡略,只判斷是否存在漏洞,而不統計漏洞的個數以及漏洞位置。

AppScan和Fortify SCA是國外的掃描平臺,分別屬於IBM和惠普。我分析了它們的掃描結果,AppScan的免費版本檢測結果沒有多大的參考價值,重要的漏洞資訊都沒有顯示,如果測試時間超過4個小時,則會中斷掃描服務。Fortify SCA的掃描側重Web應用程式,雖然也可以掃描Android程式,但掃描結果以Web漏洞為主,差強人意,而且在免費試用15天后,每測試一個APP需要花費2000美元,所以我沒有詳細分析這兩個平臺。

以下簡單統計了各個平臺的收費情況,如下表:

掃描平臺 是否收費 備註
阿里聚安全漏洞掃描 免費 完全免費
360APP漏洞掃描 免費 完全免費
騰訊金剛審計系統
免費 完全免費
百度移動雲測試中心 9.9元/次 新使用者可以獲得一張9元代金券,只能用百度錢包支付剩餘的0.9元
AppRisk Scanner  不詳 普通賬戶可以測試2個app,隨後可以通過可以通過郵件聯絡AppRisk升級賬戶
愛加密 免費 漏洞掃描主要為其加密服務做推廣,掃描能力很差
梆梆加固 免費 漏洞掃描主要為其加密服務做推廣,掃描能力較差
AppTest掌測 2999元/次 AppTest掌測還有其他測試服務,收費標準不同,安全測試是2999元/次
TestIn測試平臺 2000元/次 安全掃描服務需要填寫非常詳細的申請表才有機會獲得1次試用服務
騰訊優測  200元/次 新使用者免費使用一次。通過U幣的形式付款,1U幣=1元
愛內測 免費 愛內測免費版主要為其定製化檢測做廣告
AppScan  混合 AppScan將使用者分為免費賬戶和標準賬戶,免費賬戶的掃描結果簡單;標準賬戶可以按次收費也可以按月收費
Fortify SCA 2000美元/個 新使用者免費試用15天,超過15天后每測試一個APP需要2000美元,一年內可對同一個APP進行多次測試

2.2 測試樣本

測試樣本:

名稱  版本
WiFi萬能鑰匙 4.0.9
墨跡天氣 5.0916.02
新浪微博 6.7.0
測試app
手機百度 7.4

通過上傳精心構造的包含各種漏洞的“測試APP”,測試它們的掃描能力,隨後上傳應用市場中下載量較大的應用程式進行實際測試。由於受時間和資源的限制,並未大規模上傳應用進行測試,也只是詳細對比了WiFi萬能鑰匙的掃描結果。因此掃描結果有些許的片面性,但總體反映各個掃描平臺的檢測能力。

三、總體能力對比

3.1 掃描時間對比

以下列表各個掃描平臺掃描時間的對比,金剛只能檢測50M以內的APP,所以沒有新浪微博的檢測時間,而百度每檢測一次收費9.9元,而且沒有記錄掃描時間;受限於時間和經費,沒有再次檢測APP以獲取掃描時間,單位:分。

阿里聚安全 360 百度 金剛 Apkrisk
WiFi萬能鑰匙(5.38M) 6 458 1395 3
墨跡天氣(14.9M) 16 1256 1577 4
手機百度(36.8M) 21 261 710 7
新浪微博(53.2M) 45 1112 8

補充一下,時間的獲取是以掃描介面內對應APP給出的或者是以收到掃描結束通知為依據的。可以看出,阿里聚安全和AppRisk的掃描時間與APP的大小成正比,而360和金剛沒有明顯的規律。當用戶把APP投入阿里聚安全和AppRisk中掃描時,可以根據APP的大小預測大致的掃描時間;而投入到360和金剛時卻無法預測大致的掃描時間。

3.2 漏洞項對比

360將許多型別相同的漏洞分成多個具體的漏洞,我將其合併一下(元件匯出歸為一類,檔案讀寫歸為一類,SQL注入歸為一類)。

以下是具體漏洞個數對比:

漏洞型別 阿里聚安全 360 金剛 百度 Apkrisk
WebView元件遠端程式碼執行漏洞
WebView繞過證書校驗漏洞
WebView明文儲存密碼風險
WebView元件系統隱藏介面漏洞
元件匯出風險
存在可以被惡意訪問的表單
存在外部可訪問的表單
原生代碼執行漏洞
本地SQL注入漏洞
私有檔案遍歷漏洞
getDir任意讀寫
通用簽名漏洞
安全加固風險
不安全的反射
META-INF目錄存在敏感檔案資訊
ContentProvider檔案跨域訪問
Native動態除錯
固定埠監聽風險
Zip檔案目錄遍歷漏洞
金鑰硬編碼
廣播資訊洩露風險
Url使用者敏感資訊洩露
Uri使用者敏感資訊洩露
外部URL可控的WebView
KeyStore風險
嘗試使用root許可權
Intent敏感資料洩露風險
執行其他可執行程式風險
第三方庫檢測
日誌洩露風險
Dex檔案動態載入風險
資料庫全域性讀寫漏洞
WebView File域同源策略繞過
Fragment注入漏洞
初始化IVParameterSpec函數出錯
PendigIntent誤用風險
使用者自定義許可權濫用風險
SharedPrefs任意讀寫
原始碼洩露漏洞(混淆率等)
App存在隱式意圖呼叫
加密雜湊函式漏洞MD5
加密雜湊函式漏洞SHA-1
證書弱校驗
主機名弱校驗
隨機數加密破解漏洞
Intent Scheme URL漏洞
本地拒絕服務
全域性檔案可讀可寫
強制型別轉換本地拒絕服務漏洞
AES/DES弱加密
RSA弱加密風險
除錯開關開啟風險
備份功能開啟風險
中間人攻擊

從上表可以看出,五個產品相同的掃描項有9種,其中四個產品相同的掃描項有7種。總的來說,這五個產品基本覆蓋了目前Android應用程式可能出現的所有漏洞。

總體覆蓋量排名:阿里聚安全(35個)>360(31個)>百度(26個)>金剛(23個)>Apkrisk(20個)

3.3 掃描能力對比

最後我用自己編寫的測試APP測試各個掃描平臺的掃描能力。這些掃描能力主要分為靜態檢測能力和動態檢測能力。靜態檢測能力包括檢測隱藏dex、過程間分析、正向分析、逆向分析;動態測試主要是指測試拒絕服務漏洞的能力,拒絕服務漏洞又可以劃分為:空Intent引起的拒絕服務,強制型別轉換引起的拒絕服務以及序列化物件導致的拒絕服務。由於這些檢測能力決定了掃描器掃描結果的精度和準度,因此我詳細分析了各個掃描平臺的掃描能力。

由於內容太長,我將掃描能力和掃描結果單獨作為下篇分享出來,敬請關注!