敏感函數調用風險
一、API
【1】android.telephony.TelephonyManager.getNetworkOperator( ) 獲取運營商信息
【2】android.telephony.TelephonyManager.getDeviceId( ) 獲取設備信息
【3】android.telephony.TelephonyManager.getPhoneType( ) 獲取手機信息
【4】android.telephony.TelephonyManager.getSubscriberId( ) 獲取設備信息
【5】android.telephony.TelephonyManager.getLine1Number( ) 獲取手機號
【6】android.telephony.TelephonyManager.getCellLocation( ) 獲取位置信息
【7】android.telephony.TelephonyManager.listen( ) 電話監聽
【8】android.telephony.TelephonyManager.getSimOperator( ) 獲取SIM卡信息
【9】android.app.ActivityManager.getRunningAppProcesses( ) 獲取運行APP
【10】android.app.ActivityManager.getRunningTasks( ) 獲取正運行的task
【11】android.content.pm.PackageManager.getInstalledPackages( ) 獲取安裝APP
二、觸發條件
1. 定位敏感函數的調用位置
【1】對應到smali語句中的特徵
r'Landroid/(?:telephony/TelephonyManager;->(?:getNetworkOperator|getDeviceId|getPhoneType|' \
r'getSubscriberId|getLine1Number|getCellLocation|listen|getSimOperator)|' \
r'app/ActivityManager;->getRunning(?:AppProcesses|Tasks)|' \
r'content/pm/PackageManager;->getInstalledPackages)\('
三、漏洞原理
【1】APP應用程序中調用了包含敏感行爲的函數,包括髮送短信、發送地理位置、撥打電話等,可能會導致用戶隱私數據泄露等風險
四、修復建議
【1】開發者審覈包含敏感行爲的函數調用,確保其使用是必要且限制於授權用戶的