轉(zhuǎn)自:http://www.51sqae.com/thread-115445-1-1.html
首先媚朦,說到APP的安全漏洞,身為程序猿的大家應(yīng)該不陌生撑毛;如果拋開安卓自身開源的問題的話伪阶,其主要產(chǎn)生的原因就是開發(fā)過程中疏忽或者代碼不嚴(yán)謹(jǐn)引起的扬霜。但這些責(zé)任也不能怪在程序猿頭上歼捏,有時會因?yàn)锽OSS時間催得緊等很多可觀原因。由國內(nèi)移動應(yīng)用安全檢測團(tuán)隊(duì)愛內(nèi)測(ineice.com)的CTO給我們淺談關(guān)于Android 系統(tǒng)的開源設(shè)計以及生態(tài)環(huán)境笨篷。
1. 應(yīng)用反編譯
漏洞:APK 包非常容易被反編譯成可讀文件瞳秽,稍加修改就能重新打包成新的 APK。
利用:軟件破解率翅,內(nèi)購破解练俐,軟件邏輯修改,插入惡意代碼冕臭,替換廣告商 ID腺晾。
建議:使用 ProGuard 等工具混淆代碼,重要邏輯用 NDK 實(shí)現(xiàn)辜贵。
例子:反編譯重打包 FlappyBird悯蝉,把廣告商 ID 換了,游戲改加插一段惡意代碼等等托慨。
2. 數(shù)據(jù)的存儲與傳輸
漏洞:外部存儲(SD 卡)上的文件沒有權(quán)限管理鼻由,所有應(yīng)用都可讀可寫。開發(fā)者把敏感信息明文存在 SD 卡上厚棵,或者動態(tài)加載的 payload 放在 SD 卡上蕉世。
利用:竊取敏感信息,篡改配置文件婆硬,修改 payload 邏輯并重打包狠轻。
建議:不要把敏感信息放在外部存儲上面;在動態(tài)加載外部資源的時候驗(yàn)證文件完整性彬犯。
漏洞:使用全局可讀寫(MODE_WORLD_READABLE向楼,MODE_WORLD_WRITEABLE)的內(nèi)部存儲方式,或明文存儲敏感信息(用戶賬號密碼等)躏嚎。
利用:全局讀寫敏感信息蜜自,或 root 后讀取明文信息。
建議:不適用全局可讀寫的內(nèi)部存儲方式卢佣,不明文存儲用戶賬號密碼重荠。
3. 密碼泄露
漏洞:密碼明文存儲,傳輸虚茶。
利用:
root 后可讀寫內(nèi)部存儲戈鲁。
SD 卡全局可讀寫仇参。
公共 WiFi 抓包獲取賬號密碼。
建議:實(shí)用成熟的加密方案婆殿。不要把密碼明文存儲在 SD 卡上诈乒。
4. 組件暴露 (Activity, Service, Broadcast Receiver, Content Provider)
漏洞:
組件在被調(diào)用時未做驗(yàn)證。
在調(diào)用其他組件時未做驗(yàn)證婆芦。
利用:
調(diào)用暴露的組件怕磨,達(dá)到某種效果,獲取某些信息消约,構(gòu)造某些數(shù)據(jù)肠鲫。(比如:調(diào)用暴露的組件發(fā)短信、微博等)或粮。
監(jiān)聽暴露組件导饲,讀取數(shù)據(jù)。
建議:驗(yàn)證輸入信息氯材、驗(yàn)證組件調(diào)用等渣锦。android:exported 設(shè)置為 false。使用 android:protectionLevel="signature" 驗(yàn)證調(diào)用來源氢哮。
5. WebView
漏洞:
惡意 App 可以注入 JavaScript 代碼進(jìn)入 WebView 中的網(wǎng)頁袋毙,網(wǎng)頁未作驗(yàn)證。
惡意網(wǎng)頁可以執(zhí)行 JavaScript 反過來調(diào)用 App 中注冊過的方法命浴,或者使用資源娄猫。
利用:
惡意程序嵌入 Web App,然后竊取用戶信息生闲。
惡意網(wǎng)頁遠(yuǎn)程調(diào)用 App 代碼媳溺。更有甚者,通過 Java Reflection 調(diào)用 Runtime 執(zhí)行任意代碼碍讯。
建議:不使用 WebView 中的 setJavaScriptEnabled(true)悬蔽,或者使用時對輸入進(jìn)行驗(yàn)證。
6. 其他漏洞
ROOT 后的手機(jī)可以修改 App 的內(nèi)購捉兴,或者安裝外掛 App 等蝎困。
Logcat 泄露用戶敏感信息。
惡意的廣告包倍啥。
利用 next Intent禾乘。
7. 總結(jié)
APP的漏洞大部分都是因?yàn)殚_發(fā)人員沒有對輸入信息做驗(yàn)證造成的,另外因?yàn)?Intent 這種特殊的機(jī)制虽缕,需要過濾外部的各種惡意行為始藕。再加上安卓應(yīng)用市場混亂,開發(fā)人員水平參差不齊。所以現(xiàn)在 Android 應(yīng)用的漏洞伍派,惡意軟件江耀,釣魚等還在不斷增多。
再加上 root 對于 App 沙箱的破壞诉植,Android 升級的限制祥国。國內(nèi)的安卓環(huán)境一片混亂,慘不忍睹晾腔。所以舌稀,如果想要保證你的應(yīng)用沒有安全漏洞,就要記鬃评蕖:永遠(yuǎn)不要相信外面的世界扩借。