(SAST检测规则-1)Android - 权限管理漏洞
所属分类:Android - 权限管理漏洞
缺陷详解:应用未正确实施最小权限原则或滥用已声明的权限可能导致敏感信息泄露。例如,恶意代码利用已授予的权限绕过用户授权,访问通讯录、位置、短信等敏感资源。部分开发者还可能滥用权限以执行不必要的操作,违反用户隐私或安全性。
导致结果和风险:
- 敏感数据泄露:未经授权访问通讯录、短信、位置信息等。
- 系统滥用:恶意短信发送、拨打高收费电话等。
- 用户隐私侵害:应用后台监听、定位追踪等。
缓解和预防措施:
- 遵循最小权限原则,仅声明必要权限。
- 使用动态权限请求(Android 6.0+),并确保运行时权限请求符合逻辑。
- 采用静态和动态分析工具,检测代码中不必要的权限调用。
- 定期检查权限声明和实际调用是否匹配,移除多余权限。
规则检测点:
- 在AndroidManifest.xml中检查以下权限是否声明并使用:
- android.permission.INTERNET:涉及HttpURLConnection等网络操作。
- android.permission.SEND_SMS:调用SmsManager.sendTextMessage。
- android.permission.ACCESS_FINE_LOCATION:涉及FusedLocationProviderClient等定位API。
- 确保未声明已废弃或系统级权限,如MODIFY_PHONE_STATE。
AndroidManifest.xml
AndroidRequest.java
触发缺陷:使用httpGet访问网络时,由于在配置文件中没有添加权限<uses-permission android:name="android.permission.INTERNET" /> 导致抛出SecurityException。
缺陷跟踪:
- 在AndroidManifest.xml第()行没有配置android权限[android.permission.INTERNET]
- 在AndroidRequest.java第(11)行使用[HttpGet]访问资源,并没有配置对应的访问权限,建议添加对应的访问权限[android.permission.INTERNET]。如果程序不需要用户权限来访问敏感资源,容易导致敏感信息泄露。
缺陷描述:
所属缺陷:恶意程序。缺陷发生位置:在AndroidRequest.java中的第11行。
缺陷说明:在AndroidManifest.xml文件的第(1)行没有配置android权限[android.permission.INTERNET],在(AndroidRequest.java)第(11)行使用[HttpGet]访问资源,并没有配置对应的访问权限,建议添加对应的访问权限[android.permission.INTERNET]。如果程序不需要用户权限来访问敏感资源,则不需要配置上述访问权限,否则容易导致敏感信息泄露。
参考:CWE-265
---------------------------------------------------------------------------------------------------