MASTG-TECH-0014: Android 静态分析
静态分析是一种用于检查和评估移动应用程序源代码的技术,而无需执行它。 这种方法有助于识别潜在的安全漏洞、编码错误和合规性问题。 静态分析工具可以自动扫描整个代码库,使其成为开发人员和安全审计员的宝贵资产。
grep 和 semgrep 是两个很好的静态分析工具的例子。 然而,还有许多其他工具可用,你应该选择最适合你需求的工具。
示例:在 Android 应用中使用 grep 进行 Manifest 分析¶
静态分析的一个简单但有效的用途是使用 grep
命令行工具来检查 Android 应用的 AndroidManifest.xml
文件。 例如,你可以使用以下 grep
命令提取最小 SDK 版本(指示应用支持的最低 Android 版本)
grep 'android:minSdkVersion' AndroidManifest.xml
此命令在 manifest 文件中搜索 android:minSdkVersion
属性。 确保更高的 minSdkVersion
可以降低安全风险,因为旧版本的 Android 可能不包含最新的安全功能和修复。
示例:使用 semgrep 识别熵不足的种子¶
semgrep 是一个更高级的工具,可用于代码中的模式匹配。 它对于识别可能导致安全漏洞的复杂编码模式特别有用。 例如,要查找使用确定性种子初始化 SecureRandom
类的情况(这会损害随机性,从而损害安全性),你可以使用类似如下的 semgrep 规则
rules:
- id: insecure-securerandom-seed
patterns:
- pattern: new SecureRandom($SEED)
- pattern-not: $SEED = null
message: "Using a deterministic seed with SecureRandom. Consider using a more secure seed."
languages: [java]
severity: WARNING
此规则将标记代码中 SecureRandom
使用特定种子初始化的任何实例,但排除种子为空的情况(这意味着安全的随机种子)。