前言
隨著移動互聯網的發展和智能手機的普及,基於android系統的各類app出現爆發式增長,但在增長的同時,一個不容忽視的問題越來越重要:安全。
漏洞掃描管道主要分為靜態和動態,靜態掃描的漏洞類型主要包含SQL注入風險、webview系列、檔案模式配寘錯誤、https不校驗證書、database配寘錯誤等。動態掃描的漏洞類型主要包含拒絕服務攻擊、檔案目錄遍歷漏洞、file跨域訪問等。
本報告選取11類androidapp中同等數量的熱門app,其活躍用戶量可覆蓋83%的移動端線民,根據阿裡巴巴移動安全中心對這些app的漏洞檢測,得到以下結論:
參與檢測的androidapp中,近97%的app都存在漏洞問題,且平均漏洞量高達40個。
安全類app漏洞問題最多,其漏洞總量499個,占所有類別app漏洞總量的21%。
新聞、旅遊類app相對最不安全,其各自漏洞總量約240個,且其中高危漏洞量占比30%。
遊戲類app相對最安全,漏洞總量約57個,且其中高危漏洞占比約2%。
從測試結果來看,androidapp的安全問題不容樂觀,漏洞的存在尤其是高危漏洞,會對app開發者甚至用戶帶來較大影響,如何提前發現潛在風險、保護開發者和用戶的利益是阿裡巴巴移動安全團隊一直堅持的責任。
一、AndroidAPP漏洞現狀
為瞭解androidapp的總體現狀,報告中將app歸納為11個類別:健康、娛樂、安全、教育、新聞、旅遊、遊戲、社交、購物、金融、閱讀。選取11類app中等量熱門app,並使用阿裡巴巴聚安全的漏洞掃描產品進行靜態和動態檢測,掃描結果如下:
從漏洞類別來看,androidapp漏洞中排在首位的是sql注入類漏洞,占比38.2%,其次是webview漏洞,占比35.4%,見左圖。
從漏洞風險級別來看,androidapp中高危漏洞占20.7%,低危漏洞占79.3%,其中高危漏洞主要集中在webview系列和https證書未校驗上。
SQL注入類漏洞占比38.2%,主要是程式碼中未過濾用戶輸入,攻擊者可通過提交惡意sql査詢語句達到其作惡目的。Sql注入雖大部分屬於中低危漏洞,但仍可造成敏感數據、系統最高許可權被竊取等問題。
Webview的一些高危漏洞,主要由程式碼中使用addJavascriptInterface等危險函數、使用不校驗證書等因素導致。這些漏洞可遠程執行程式碼,對用戶遠程安裝惡意軟件。
Https相關的高危漏洞,主要由https使用ALLOW_ALL_HOSTNAME_VERIFIER等參數校驗證書,沒有對主機等資訊進行校驗導致,這些漏洞會引發攻擊者輕易劫持https會話、偵測使用者密碼和其他敏感資訊等問題。
高危漏洞潜藏著巨大的安全問題,但從測試結果來看,很多android app都存在高危漏洞問題,其安全性令人擔憂。
二、AndroidAPP漏洞問題分析
本章將對app的漏洞掃描結果進一步分析,首先將分析漏洞的靜態和動態檢測結果,其次將總結歸納漏洞產生的原因。
2.1各類別app漏洞情况分析
2.1.1.漏洞的靜態掃描結果分析
使用阿裡巴巴聚安全的漏洞掃描產品,對11個類別同等數量的熱門app進行靜態掃描,各類app的安全情况不盡相同:
參與測試的app中近97%的app都有安全性漏洞,且平均漏洞量達40個。
安全類app漏洞問題最多。
在檢測到的所有漏洞中,安全類app的漏洞總量多達499個(約占總漏洞量21%),其中高風險漏洞占比約2%,整體而言,即便是安全類app,亦存在較多的安全問題。
新聞、旅遊類app相對最不安全
新聞、旅遊類app漏洞總量均超230個(約占總漏洞量的10%),且其中高風險漏洞量占比高達30%,在所有app中相對最不安全。
遊戲類app相對最安全
遊戲類app無論是漏洞總量,或是其中的高風險漏洞占比均較少,在所有app中相對最安全。
2.1.2漏洞的動態掃描結果分析
使用阿裡巴巴聚安全的漏洞掃描產品,對11個類別同等數量的熱門app進行動態掃描,掃描結果幾乎都是拒絕服務攻擊類漏洞,未發現檔案目錄遍歷、file跨域訪問等漏洞。
從以下數據圖可以看出,各類別app或多或少都存在拒絕服務攻擊漏洞,尤其以金融類(37個)、娛樂類(35個),購物類(32個),安全類(28個)為重,而遊戲類的拒絕服務攻擊漏洞總量相對最少(3個)。
拒絕服務漏洞其實是組件暴露問題,組件一旦被暴露,特定的惡意數據就可寫入組件,從而導致該app崩潰,造成拒絕服務,進而影響app開發者和用戶的利益。
2.1.3總結
以上分析數據說明android類app的安全問題並不容樂觀,需要進一步探究造成漏洞的原因以及解決方案,以儘量避免漏洞的產生及彌補安全問題帶來的影響。
2.2 App漏洞原因分析
Androidapp的漏洞類型很多,如SQL注入、webview系列漏洞、檔案模式配寘錯誤、HTTPS不校驗證書、拒絕服務攻擊等,造成漏洞的原因可以歸結為以下兩類:
2.2.1App開發者自身的問題
a)編碼不規範
很多公司對編碼規範沒有要求,或app開發者沒有按照編碼規範來進行編碼,容易導致敏感資訊洩露,比如日誌列印問題、在發行版本中沒有關閉日誌列印功能等。
b)安全意識不够
很多android函數的參數需慎用,如常用函數openFileOutput,如果設定mode參數為Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,就容易洩露androidapp的數據。另外,介面處理需要更加嚴謹,例如暴露了一個介面,允許運行用戶輸入的資訊,若對資訊未做任何處理,就容易引起拒絕服務攻擊等安全問題。
2.2.2Android上0day的發現
Android上0day的發現,可導致androidapp以前安全的功能變得不安全,在android系統沒有補丁的情况下,需及時在android app上打補丁,但鑒於很多androidapp開發者對漏洞資訊不敏感等原因,並未做到及時修補,從而導致漏洞的存在。
總之,Androidapp的安全問題,很大程度上可能是開發者犯下的低級錯誤。較為有效的解决辦是能够在程式碼編寫過程中使用SDL編碼流程,同時使用漏洞掃描產品對app進行檢測,不斷修補自身app的安全問題。安全無小事,所有app開發者都應重視。
三、總結
本次檢測採用了11個類別app中同等數量的熱門app,共掃描出近2500個漏洞,平均每個androidapp有40個安全性漏洞,且約97%的測試app或多或少都存在安全性漏洞。這些數據反映出androidapp漏洞問題的嚴峻性,在app市場上,很多androidapp都存在潜在的安全風險,一旦被利用,會給用戶和開發者帶來很大影響。
從漏洞檢測結果來看,androidapp的漏洞問題不容樂觀,這些問題是否可以規避?是否有自動化的漏洞掃描產品供app開發者使用?是否可以降低開發者和用戶的利益受損程度?答案是肯定的,除了加强app開發者的安全意識,在app發佈之前利用安全產品進行漏洞掃描檢測可以及早發現隱含的安全問題,保護開發者利益,保護用戶利益。
如何提前發現潛在風險、保護廣大開發者和用戶的利益是阿裡巴巴移動安全團隊一直堅持的責任,產品將於2014年10月22日正式對外發佈,敬請期待,更多動態請關注阿裡巴巴移動安全團隊官方微博