Android應用安全常見問題及解決方案

內容來源:2018 年 09 月 15 日,華爲資深技術專家李欣哲在「從研發到測試,手把手教你打造綠色應用」進行《應用安全常見問題及解決方案》的演講分享。IT 大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。android

閱讀字數:3315 | 9分鐘閱讀web

觀看嘉賓演講視頻及PPT,請點擊:t.cn/E2DtMQW安全

Android應用安全常見問題及解決方案

摘要

本文分爲三個部分,第一個部分會介紹一下安卓的應用現狀,第二部分是安卓的常見問題(偏漏洞方面),最後是隱私安全問題。網絡

安卓應用現狀

首先咱們來看一下官方發佈的數據,國家互聯網應急響應中心對全部的移動平臺進行統計後,發現安卓平臺的用戶是最容易受到攻擊的,並且惡意的程序高達99.9%。這主要是因爲安卓的自己開源開放的機制致使的,同時近些年來安卓的用戶量逐年增高,讓你們看到的利益,從而引來了愈來愈多的攻擊者。架構

Android應用安全常見問題及解決方案

這是咱們內部審計發現的一些數據,在通過仔細的排查,發現不少應用廣泛都會存在一些漏洞。而少部分應用會在他們不知情或者是故意的狀況下,帶有一些病毒和惡意的行爲。app

Android應用常見問題及解決方案

接下來會給你們介紹下咱們今年發現了一些漏洞,其實說漏洞仍是有些不恰當,它更像是四個攻擊面,包括組件問題、url繞過、中間人攻擊、Webview漏洞,儘管這幾個問題看起來很是簡單,可是在手機上包括一些主流APP上倒是很是的常見。函數

組件問題

對於組件問題,若是單論存在的緣由,可能在安卓創建之初它就存在了。組件暴露實際上是一個很是正常的事情,可是不正常的就在於不少開發者喜歡把一些沒有開發完的代碼也隨着應用發佈出去,他們可能以爲這些部分跟其餘的組件或者界面沒有太大關聯,用戶沒法接觸到這些界面。可是實際上若是設置了組件暴露,攻擊者就能夠輕鬆的攻擊應用,包括調用隱藏功能,開啓後門,拒絕服務等。工具

組件暴露,若是含有權限,並且沒有設置保護(這裏的權限不只僅是傳統意義上的那種谷歌定義的高權限行爲),攻擊者就能夠在在用戶不知情狀況下作一些事情,好比訪問組件直接發短信,測試

還有一種狀況是應用設計邏輯上比較高危,好比我以前看到一款金融類的APP,它的設計就是先有一個輸入密碼的界面,相似於保護鎖,經過保護鎖驗證成功以後才能夠金融信息這樣的隱私數據。可是若是第二個界面組件暴露了,就能夠不用鎖直接繞過驗證。url

Android應用安全常見問題及解決方案

下面介紹一個,今年某某社交軟件發現的SDK的問題。這個問題大概是在今年7月份才修復,該社交軟件,用戶量大概有幾個億,審計發現有14000多個應用存在這種問題。

問題出在一個有分享功能的SDK上, 這個SDK存在兩個暴露的組件,其中一個組件的漏洞讓攻擊者能夠訪問到應用的任意私有組件,至關於繞過了谷歌的沙箱機制。另外一個組件的漏洞不只可讓然訪問私有組件,還能夠向組件傳參數。它們主要形成了兩個問題,一個是拒絕服務,一個是調用未受權界面(甚至後門)。

URL繞過問題

URl繞過問題也只能說是攻擊面,不能說是漏洞。這塊首先有一個路徑遍歷漏洞,通常問題應用或者SDK在大量使用路徑url做爲參數的狀況下,若是不校驗路徑的合法性,就容易致使這個問題。安卓平臺最典型的路徑遍歷漏洞就是 ZipEntry URl路徑遍歷問題,和傳統web相同。

另外一個問題是url白名單繞過,隨着聯網應用的增多,你們都喜歡用webviwe組件去加載一個網頁,那就須要加載url,而webviwe組件自己問題就很是的多,它權限中有不少敏感的行爲,好比獲取地理位置信息。

在使用webview的時候,大多數開發者並不但願組件任何網頁都加載,所以會實現一個白名單函數約束加載的網頁,常見的約束函數有contains()、indexOf()、endwith()、getHost()等,因爲約束機制都是人爲實現的,所以會帶來不安全的因素。

url白名單可能存在的場景,包括安卓的scheme屬性、暴露組件、一掃、評論、聊天輸入。

掃一掃的問題比較有意思,按照道理講,經過掃二維碼和直接網頁點擊的url,若是有白名單校驗機制的話,應該是加載同一個白名單函數。可是可能因爲團隊架構設計的緣由,致使兩塊分別由不一樣人負責,形成白名單校驗機制也不同,從而帶來一些問題。

中間人攻擊

中間人攻擊其實也是歷史悠久的問題,最先也是在web平臺,不過如今由於安卓平臺的網絡鏈接愈來愈多,用戶量愈來愈大,這個也是成爲了安隱患很是大的問題。

中間人攻擊能夠劫持應用發出的請求,返回用戶不指望的東西。全部的http均可以被中間人攻擊,由於它自己就是不安全的網絡傳輸。

https做爲http的安全解決方案,若是實現的不夠好,也有不少的漏洞。目前衆所周知的漏洞位置由X509TrustManager、HostnameVerifier、setHostnameVerifier,對於場景分別是客戶端不校驗SSL證書或者校驗邏輯有誤;自定義實現HostnameVerifier接口,卻不檢查域名和證書域名是否匹配;直接使用接受任意域名的HostnameVerifier接口。

Webvie漏洞

Webview漏洞方面今年發現的,影響面最廣,並且數量不斷遞增的就是JavaScript的接口暴露問題。目前市面上比較流行的,用了Webview組件的應用,大概有1/5都存在這種問題。

咱們某應用中供應商的SDK中就存在大量暴露的JavaScript接口,經過代碼跟蹤咱們發現這個接口能夠執行不少操做,包括髮短信、打電話、下載應用等等功能,

Android應用安全常見問題及解決方案

對於webview漏洞的解決方案主要是掃描代碼中關鍵字,以上這些都是webview的一些配置,它們單獨拿出來可能都不是什麼問題,可是組合起來就會形成很是多的問題。

Android應用問題及解決方案

咱們使用的應用裏確定有不少的隱私數據,例如的姓名,年齡、性別、身份證號等等信息,這些信息能夠經過網絡、SD卡存儲、短信發送、NFC、藍牙傳輸等各類方式泄露出去。

那麼做爲一個開發者,要如何防範這些泄露呢,或者說保證本身開發的應用沒有這些行爲,其中就包括判斷所引入的大量開源的SDK是否有惡意的行爲。

這裏介紹一款工具——flowdroid,它是一款針對android app數據分析的工具。它其實是分析了你的信息流全部可能的經過的路徑,其中分爲source跟sink,,source表示敏感數據、sink表示泄露點。

以上爲今天的分享內容,謝謝你們!

編者:IT大咖說,轉載請標明版權和出處

相關文章
相關標籤/搜索