AppShark 静态污点分析平台使用教程
1. 项目介绍
AppShark 是一个静态污点分析平台,用于扫描 Android 应用程序中的安全漏洞。它通过分析应用程序的代码,识别潜在的污点传播路径,从而发现可能的安全风险。
2. 项目快速启动
环境准备
AppShark 需要以下环境:
- JDK 11
确保已经安装了 JDK 11,因为项目在其他 LTS 版本(如 JDK 8 和 JDK 16)上可能无法正常工作。
构建项目
假设您正在项目仓库的根目录下工作。可以使用 gradle
工具构建整个项目:
./gradlew build -x test
构建完成后,您会在 build/libs
目录下看到一个名为 AppShark-0.1.2-all.jar
的文件。
运行分析
仍然在项目根目录下,使用以下命令运行 AppShark 工具:
java -jar build/libs/AppShark-0.1.2-all.jar config/config.json5
其中 config.json5
文件应包含以下配置内容:
{
"apkPath": "/Users/apks/app1.apk",
"out": "output_path",
"rules": "rule1.json,rule2.json",
"rulePath": "./config/rules",
"maxPointerAnalyzeTime": 300,
"debugRule": "ruleNameForDebug"
}
apkPath
: 需要分析的 APK 文件路径。out
: 输出目录的路径。rules
: 指定要使用的规则文件,默认为$rulePath
目录下的所有*.json
文件。rulePath
: 规则文件的父目录路径。maxPointerAnalyzeTime
: 从入口点开始的分析超时时间(秒)。debugRule
: 启用调试日志的规则名称。
提供配置文件并设置输出路径后,运行分析,您会在指定的输出路径中找到 results.json
文件,其中包含了分析结果。
3. 应用案例和最佳实践
案例分析
以下是一个简单的分析结果示例:
{
"AppInfo": {
"AppName": "test",
"PackageName": "net.bytedance.security.app",
"min_sdk": 17,
"target_sdk": 28,
"versionCode": 1000,
"versionName": "1.0.0"
},
"SecurityInfo": {
"FileRisk": {
"unZipSlip": {
"category": "FileRisk",
"detail": "",
"model": "2",
"name": "unZipSlip",
"possibility": "4",
"vulners": [
{
"details": {
"position": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>",
"Sink": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31",
"entryMethod": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void f()>",
"Source": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3",
"url": "/Volumes/dev/zijie/appshark-opensource/out/vuln/1-unZipSlip.html",
"target": [
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3",
"pf{obj{<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>:35=>java.lang.StringBuilder}(unknown)->@data}",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r11",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31"
]
},
"hash": "ec57a2a3190677ffe78a0c8aaf58ba5aee4d2247",
"possibility": "4"
}
]
}
}
}
}
这个结果揭示了 unZipSlip
类型的文件风险,其中包含了相关的详细信息,如位置、源头、目标以及风险的可能性等级。
最佳实践
- 确保使用最新版本的规则库,以识别最新的安全风险。
- 定期运行 AppShark 分析,以监测代码库中的新漏洞。
- 针对发现的每个风险,进行深入分析和修复。
4. 典型生态项目
AppShark 作为静态污点分析工具,可以与以下类型的生态系统项目结合使用:
- 安全自动化流程,例如持续集成(CI)系统。
- 安全监控平台,用于实时监测和警告。
- 代码审查工具,以在代码提交前检测潜在风险。
通过整合这些工具和服务,可以构建一个更加完善的安全开发流程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考