评估一个安卓应用的安全性,最常见的技术就是静态扫描技术,而静态扫描必定遵循一定规则进行。本扫描体系将静态扫描划项目分成12个大类,细分为76子项目,依次对每个项目进行评估,对每项给出高危、中危、低危、警告、提醒和安全的标识,最终完成一套完整的应用扫描评估体系。该部分将会详细介绍所有的扫描检测项目,以及其相应的风险评级标准。
1 有哪些检测项目?
该扫描体系涉及共12类大项目,细分为总共82个小项目(表1),详细的检测清单见表2。其中前三大类是应用的基本信息共12项,不具备风险等级的属性;后九大类,总共有70项,每一项均具备风险等级属性。该体系设定了高危、中危、低危、提醒和安全六个风险等级,应用在完全评估后,每个检测项都会给出一个对应的风险等级。
12类风险扫描项涵盖了大部分安卓应用存在的风险点。
类 | 子项目 | 描述 |
---|---|---|
1 | 7 | 文件信息 |
2 | 1 | 权限信息检测 |
3 | 4 | 四大组件 |
4 | 8 | Menifest文件检测 |
5 | 11 | 组件安全检测 |
6 | 9 | Webview组件安全检测 |
7 | 5 | Sqlite安全检测 |
8 | 5 | 网络通信安全检测 |
9 | 6 | 弱加密风险检测 |
10 | 12 | 数据安全检测 |
11 | 11 | 敏感函数调用检测 |
12 | 3 | 系统漏洞检测 |
共12类 | 82个子项目 |
表1 检测项目总览表
2 详细清单
这里需要说明一下关于唯一标识的定义规则:
唯一标识总共由六位数字组成,前两位是第几类的意思,后三位代表是该类中的扫描项。如03004,代表第三类中的第四个扫描项;10011代表第十类中的第11个扫描项。
项目序号 | 唯一标识 | 风险描述 | 风险等级 | 检测方式 |
---|---|---|---|---|
1 | 01001 | 文件名 | 无 | 静态 |
2 | 01002 | 文件大小 | 无 | 静态 |
3 | 01003 | MD5 | 无 | 静态 |
4 | 01004 | 包名 | 无 | 静态 |
5 | 01005 | Main Activity | 无 | 静态 |
6 | 01006 | Min SDK | 无 | 静态 |
7 | 01007 | Target SDK | 无 | 静态 |
8 | 02001 | 权限信息检测 | 无 | 静态 |
9 | 03001 | Activity组件 | 无 | 静态 |
10 | 03002 | Service组件 | 无 | 静态 |
11 | 03003 | BroadcastReceiver组件 | 无 | 静态 |
12 | 03004 | ContentProvider组件 | 无 | 静态 |
13 | 04001 | AndroidManifest文件中PermissionGroup检测 | 提醒 |
静态 |
14 | 04002 | AndroidManifest文件中系统权限使用检测 | 提醒 |
静态 |
15 | 04003 | AndroidManifest文件中ProtectionLevel权限检测 | 提醒 |
静态 |
16 | 04004 | AndroidManifest sharedUserId检测 | 提醒 ,高危 |
静态 |
17 | 04005 | allowBackup标志检测 | 低危 |
静态 |
18 | 04006 | Debuggable配置检测 | 高危 |
静态 |
19 | 04007 | 非必要权限检测 | 提醒 |
静态 |
20 | 04008 | app最低版本检测 | 展示 |
静态 |
21 | 05001 | Activity组件导出检测 | 中危 |
静态 |
22 | 05002 | Service组件导出检测 | 中危 |
静态 |
23 | 05003 | Receiver组件导出检测 | 中危 |
静态 |
24 | 05004 | Provider组件导出检测 | 高危 |
静态 |
25 | 05005 | Provider: grant-uri-permission属性检测 | 提醒 |
静态 |
26 | 05006 | Intent-Based攻击检测 | 低危 |
静态 |
27 | 05007 | Intent Scheme URL漏洞攻击检测 | 高危 |
静态 |
28 | 05008 | 应用本地拒绝服务器漏洞检测 | 低危 |
静态 |
29 | 05009 | manifest中定义组件未实现检测 | 中危 |
静态 |
30 | 05010 | Debug或Test敏感测试组件泄露检测 | 中危 ,低危 |
静态 |
31 | 05011 | Intent不安全反射风险检测 | 低危 |
静态 |
32 | 06001 | Webview远程执行漏洞检测 | 提醒 |
静态 |
33 | 06002 | WebView潜在XSS攻击检测 | 提醒 |
静态 |
34 | 06003 | WebView本地文件访问漏洞检测 | 高危 |
静态 |
35 | 06004 | WebView密码明文存储漏洞检测 | 提醒 |
静态 |
36 | 06005 | 主机名弱校验检测 | 中危 |
静态 |
37 | 06006 | 证书弱校验检测 | 中危 |
静态 |
38 | 06007 | 中间人攻击漏洞检测 | 中危 |
静态 |
39 | 06008 | WebView不校验证书漏洞检测 | 中危 |
静态 |
40 | 06009 | WebView组件系统隐藏接口未移除漏洞 | 低危 |
静态 |
41 | 07001 | SQLite数据库加密(SQLCipher)检测 | 展示 |
静态 |
42 | 07002 | SQLite数据库加密拓展(SQLite Encryption Extension,SEE)检测 | 展示 |
静态 |
43 | 07003 | SQLite数据库的对称密钥检测 - 未实现 | 提醒 |
静态 |
44 | 07004 | SQLite Database Transaction Deprecated(SQL注入)检测 - 未实现 | 所有 |
动态 |
45 | 07005 | Databases任意读写漏洞检测 - 废弃 | 中危 |
静态 |
46 | 08001 | SSL不安全组件检测 | 提醒 |
静态 |
47 | 08002 | SSL连接检测 | 提醒 |
静态 |
48 | 08003 | HttpHost检测 | 提醒 |
静态 |
49 | 08004 | HttpURLConnection漏洞检测 - 废弃 | 低危 |
静态 |
50 | 08005 | 网络端口开放威胁检测 | 低危 |
混合 |
51 | 09001 | 弱加密算法风险检测 | 低危 |
静态 |
52 | 09002 | 不安全的密钥长度风险检测 | 低危 |
静态 |
53 | 09003 | ECB弱加密模式风险检测 | 低危 |
静态 |
54 | 09004 | IVParameterSpec不安全初始化向量风险检测 | 低危 |
混合 |
55 | 09005 | RSA中不使用Padding风险检测 | 低危 |
静态 |
56 | 09006 | 检测keystore是否使用密码保护 - 未实现 | 高危 |
动态 |
57 | 10001 | 敏感信息检测 | 展示 |
静态 |
58 | 10002 | 剪贴板敏感信息泄露风险检测 | 展示 |
静态 |
59 | 10003 | Intent敏感数据泄露风险检测 | 提醒 |
静态 |
60 | 10004 | PendingIntent误用风险 | 中危 |
静态 |
61 | 10005 | 密钥硬编码风险检测 | 提醒 |
静态 |
62 | 10006 | 数据或程序加载检查 - 未实现 | 提醒 |
动态 |
63 | 10007 | BASE64安全检测 | 展示 |
静态 |
64 | 10008 | 文件全局读写漏洞检测 | 中危 |
静态 |
65 | 10009 | 日志泄露风险检测 | 提醒 |
静态 |
66 | 10010 | 外部加载Dex检测 - 去掉 | 高危 |
静态 |
67 | 10011 | 外部存储路径检测 - 未实现 | 提醒 |
动态 |
68 | 10012 | 明文数字证书风险 - 未实现 | 警告 |
静态 |
69 | 11001 | 安全相关的函数检测 | 提醒 |
静态 |
70 | 11002 | 安全相关的类检测 | 提醒 |
静态 |
71 | 11003 | 运行命令检测 | 提醒 |
静态 |
72 | 11004 | Native Library加载检测 | 提醒 |
静态 |
73 | 11005 | 外部动态加载DEX检测 | 高危 |
混合 |
74 | 11006 | root代码检测 | 提醒 |
静态 |
75 | 11007 | 获取IMEI和Device ID敏感信息代码检测 | 提醒 |
静态 |
76 | 11008 | 获取Android ID敏感信息代码检测 | 提醒 |
静态 |
77 | 11009 | 发送SMS敏感代码检测 | 提醒 |
静态 |
78 | 11010 | 文件删除代码检测 | 提醒 |
静态 |
79 | 11011 | signature代码检测 | 提醒 |
静态 |
80 | 12001 | fragment注入漏洞检测 | 中危 |
静态 |
81 | 12002 | sqlite数据库日志泄露漏洞检测 | 低危 |
静态 |
82 | 12003 | 随机数生成漏洞检测 | 高危 |
静态 |
表2 检测项详细清单