报告内容
执行摘要
在报告开头呈现整体风险、所测试的具体构建,以及各严重程度的发现数量。
发现汇总表
每个发现的风险等级、状态和简短说明。
代码级发现
每个发现都展示根本原因、漏洞代码和利用证据。
验证和修复
第二轮检查确认每个发现,随后给出建议的修复方案及验证方法。
带注释的发现
逐步解读一个发现
展示报告如何把一个发现从实际测试的构建版本一路跟到修复方案。每一步都标注了它在完整报告中的页码。
- 构建
AndroGoat 1.0 (1),包名 owasp.sat.agoat
报告通过包名、版本和 SHA-1 哈希确定所测试的具体 APK,并注明其大小和扫描日期。
报告第 2 页 - 结果
44 个发现,按风险排序
34 个已确认的漏洞(12 个高危、16 个中危、6 个低危,无严重级别),另有 8 个需要进一步调查的潜在问题和 2 项加固措施。
报告第 3 页 - 发现汇总表
已列出并跟踪
发现汇总表列出了每个问题的风险等级、状态和简短说明。这个问题为高危,且仍未关闭。
报告第 4 页 - 流程
应用中不安全存储的界面
AndroGoat 的存储界面会保存用户输入的用户名和密码。代理追踪了每个界面把它们写到哪里:SharedPreferences、一个 SQLite 数据库、临时文件和 SD 卡。
报告第 15 页 - 发现
高危:凭据以明文存储
用户名和密码以明文写入 SharedPreferences、一个 SQLite 数据库和临时文件,其中一个位于共享存储上。应用还启用了备份。
报告第 15 页 - 证据
密码最终去了哪里
反编译后的应用将密码写入 users.xml 和 aGoat 数据库,并在 SQL 查询日志中记录下来。adb 备份可以把这两个文件复制出来。报告还注明了两个未能在运行时测试的存储路径。
报告第 16 页 - 修复
加密,并避免将凭据放在共享存储中
立即关闭备份并加密已存储的数据。长期修复方案是将凭据迁移到基于 KeyStore 的 EncryptedSharedPreferences,并附代码示例。
报告第 17 页 - 验证
如何确认修复
在反编译后的应用中搜索以明文传给存储调用的凭据,并确认 adb 备份不再暴露可读的凭据文件。
报告第 17 页
代理如何判断
为什么这是真正的风险
扫描器会报告所有匹配规则的内容。代理在报告之前,会先确认一条线索是否会造成实际危害。以下是它对 AndroGoat 应用中一条线索的推理过程。
第 1 步
这个地址在应用里做什么?
应用资源文件 res/values/strings.xml 中包含一个 Firebase 数据库地址:androgoat-42597.firebaseio.com。
报告第 65 页



