- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
圖1是對某應(yīng)用市場的Android App產(chǎn)品中近50款應(yīng)用定期監(jiān)控的漏洞統(tǒng)計數(shù)據(jù)分布。
圖1 某應(yīng)用市場近50款應(yīng)用漏洞統(tǒng)計數(shù)據(jù)
一、 敏感信息泄露
敏感信息可分為產(chǎn)品敏感信息和用戶敏感信息兩類。
泄露后直接對企業(yè)安全造成重大損失或有助于幫助攻擊者獲取企業(yè)內(nèi)部信息,并可能幫助攻擊者嘗試更多的攻擊路徑的信息,如登錄密碼、后臺登錄及數(shù)據(jù)庫地址、服務(wù)器部署的絕對路徑、內(nèi)部IP、地址分配規(guī)則、網(wǎng)絡(luò)拓撲、頁面注釋信息(開發(fā)者姓名或工號、程序源代碼)。
用戶隱私保護主要考慮直接通過該數(shù)據(jù)或結(jié)合該數(shù)據(jù)與其他的信息,可以識別出自然人的信息。一旦發(fā)生數(shù)據(jù)泄露事件,可以被惡意人員利用并獲取不當利潤。
用戶敏感信息是例如在App的開發(fā)過程中,為了方便調(diào)試,通常會使用log函數(shù)輸出一些關(guān)鍵流程的信息,這些信息中通常會包含敏感內(nèi)容,如執(zhí)行流程、明文的用戶名密碼等,這會讓攻擊者更加容易地了解App內(nèi)部結(jié)構(gòu)方便破解和攻擊,甚至直接獲取到有價值的敏感信息。
所以要在產(chǎn)品的線上版本中關(guān)閉調(diào)試接口,禁止輸出敏感信息。
二、Content Provider的SQL注入
在使用Content Provider時,將組件導出,提供了Query接口。由于Query接口傳入的參數(shù)直接或間接由接口調(diào)用者傳入,攻擊者構(gòu)造SQL注入語句,造成信息的泄露甚至是應(yīng)用私有數(shù)據(jù)的惡意改寫和刪除。
解決方案如下。
1.Provider不需要導出,請將export屬性設(shè)置為False。
2.若導出僅為內(nèi)部通信使用,則設(shè)置protectionLevel=Signature。
3.不直接使用傳入的查詢語句用于 projection和selection,使用由 Query 綁定的參數(shù)selectionArgs。
4.完備的SQL注入語句檢測邏輯。
三、 利用可調(diào)試的App
說到任意調(diào)試漏洞,就要提到AndroidManifest.xml,它是每個Android程序中必需的文件。它位于整個項目的根目錄,描述了package中暴露的組件(Activities、Services等)、它們各自的實現(xiàn)類、各種能被處理的數(shù)據(jù)和啟動位置。除了能聲明程序中的 Activities、ContentProviders、Services和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)。
而在AndroidManifest.xml文件中,debuggable屬性值被設(shè)置為True時(默認為false),該程序可被任意調(diào)試,這就產(chǎn)生了任意調(diào)試漏洞。
可被動態(tài)調(diào)試,增加了APK被破解、分析的風險。
目前動態(tài)調(diào)試器的功能都很強大,如果debuggable屬性為True,則可輕易被調(diào)試,通常用于重要代碼邏輯分析、破解付費功能等。
圖2是IDA的調(diào)試界面,可以下斷點、單步執(zhí)行,調(diào)試過程中可以看到變量內(nèi)容,即使沒有Java代碼,反編譯后的Smali代碼也比較容易閱讀,加上動態(tài)調(diào)試,對App的逆向分析將變得很容易。
圖2 IDA調(diào)試界面
四、中間人攻擊
HTTPS 中間人攻擊漏洞的來源有:沒有對 SSL 證書進行校驗、沒有對域名進行校驗、證書頒發(fā)機構(gòu)(Certification Authority)被攻擊導致私鑰泄露等。
實現(xiàn)的X509TrustManager接口的Java代碼片段如下。其中的checkServerTrusted()方法實現(xiàn)為空,即不檢查服務(wù)器是否可信。
五、動態(tài)注冊廣播組件暴露風險
Android可以在配置文件中聲明一個Receiver或動態(tài)注冊一個Receiver來接收廣播信息,攻擊者假冒App構(gòu)造廣播發(fā)送給被攻擊的Receiver,是被攻擊的App執(zhí)行某些敏感行為或返回敏感信息等,如果Receiver接收到有害的數(shù)據(jù)或命令時,可能泄露數(shù)據(jù)或做一些不當?shù)牟僮鳎瑫斐捎脩舻男畔⑿孤渡踔霖敭a(chǎn)損失。
六、WebView密碼明文保存漏洞
在使用WebView的過程中忽略了WebView setSavePassword,當用戶選擇保存在WebView中輸入的用戶名和密碼,則會被明文保存到應(yīng)用數(shù)據(jù)目錄的databases/webview.db中。如果手機被Root就可以獲取明文保存的密碼,造成用戶的個人敏感數(shù)據(jù)泄露。
七、加密算法漏洞
以下幾種行為會有產(chǎn)生加密算法漏洞的危險。
(1)使用 AES/DES/DESede 加密算法時,如果使用ECB 模式,容易受到攻擊風險,造成信息泄露。
(2)代碼中生成秘鑰時使用明文硬編碼,易被輕易破解。
(3)使用不安全的散列算法(MD5/SHA-1)加密信息,易被破解。
(4)生成的隨機數(shù)具有確定性,存在被破解的風險。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP