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

IT大咖說發表於2018-11-23

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

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

觀看嘉賓演講視訊及PPT,請點選:t.cn/E2DtMQW

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

摘要

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

安卓應用現狀

首先我們來看一下官方釋出的資料,國家網際網路應急響應中心對所有的移動平臺進行統計後,發現安卓平臺的使用者是最容易受到攻擊的,而且惡意的程式高達99.9%。這主要是由於安卓的本身開源開放的機制導致的,同時近些年來安卓的使用者量逐年增高,讓大家看到的利益,從而引來了越來越多的攻擊者。

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

這是我們內部審計發現的一些資料,在經過仔細的排查,發現很多應用普遍都會存在一些漏洞。而少部分應用會在他們不知情或者是故意的情況下,帶有一些病毒和惡意的行為。

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

接下來會給大家介紹下我們今年發現了一些漏洞,其實說漏洞還是有些不恰當,它更像是四個攻擊面,包括元件問題、url繞過、中間人攻擊、Webview漏洞,儘管這幾個問題看起來非常簡單,但是在手機上包括一些主流APP上卻是非常的常見。

元件問題

對於元件問題,如果單論存在的原因,可能在安卓建立之初它就存在了。元件暴露其實是一個非常正常的事情,但是不正常的就在於很多開發者喜歡把一些沒有開發完的程式碼也隨著應用釋出出去,他們可能覺得這些部分跟其他的元件或者介面沒有太大關聯,使用者無法接觸到這些介面。但是實際上如果設定了元件暴露,攻擊者就可以輕鬆的攻擊應用,包括呼叫隱藏功能,開啟後門,拒絕服務等。

元件暴露,如果含有許可權,而且沒有設定保護(這裡的許可權不僅僅是傳統意義上的那種谷歌定義的高許可權行為),攻擊者就可以在在使用者不知情情況下做一些事情,比如訪問元件直接發簡訊,

還有一種情況是應用設計邏輯上比較高危,比如我之前看到一款金融類的APP,它的設計就是先有一個輸入密碼的介面,類似於保護鎖,通過保護鎖驗證成功之後才可以金融資訊這樣的隱私資料。但是如果第二個介面元件暴露了,就可以不用鎖直接繞過驗證。

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大咖說,轉載請標明版權和出處


相關文章