1. 程式人生 > >Android 靜態安全檢查 Service劫持

Android 靜態安全檢查 Service劫持

什麼是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方式啟動。