Android 靜態安全檢查 Service劫持
阿新 • • 發佈:2018-12-10
什麼是Service劫持
Android應用中,Service是一個重要的元件,用於執行比較耗時的後臺任務,啟動一個Service常用的方法是ComponentName startService(Intent service),傳入的引數是Intent,Intent使用有兩種情況
1、一個是設定action,接收到action的Service,然後啟動。
2、一個是明確指定要啟動的Service和包名
當應用程式通過設定action來啟動某個Service1的時候,惡意應用可以建立一個同樣接收action的Service。在Android系統中,如果存在多個Service接收同一個action的時候,首先看他們的priority值,priority值高,就先啟動哪個。如果priority值一樣,就看Service所屬應用程式的安裝順序,啟動先安裝應用的Service。
檢測方法
掃描應用程式的所有startService和bindService方法,檢視啟動的Intent引數,判斷Intent是否滿足以下情況:
1、Intent在建立時指定了class
2、Intent使用了setClass方法指定了class
3、Intent使用setComponent方法指定了package和class。
如果該Intent不滿足以上任何的一種情況,則這個Service存在被外部應用程式劫持風險
修復方案
當建立Intent的時候,顯示的指定要啟動的Service的包名和類名,不使用action方式啟動。