- 文档
- 教程
- 网络安全
【免费下载链接】mastg
The OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.
本指南以 OWASP Mobile Application Security Testing Guide(MASTG)中的 MASTG-TEST-0042 测试用例为核心,系统讲解 Android 应用中第三方库已知漏洞(CVE)的静态与动态检测方法,包括 OWASP Dependency-Check Gradle 插件配置、报告解读、漏洞处置决策逻辑、混淆/无源码场景下的版本还原技术,以及许可证合规性验证。读者学完后,可以独立完成 Android 项目的依赖安全审计,并对混合应用、跨平台框架及新版 SBOM 供应链方案形成完整认知。
一、测试用例定位:它检验什么
MASTG-TEST-0042 对应 MASVS 的两个版本映射:
| 标准版本 | 对应 ID | 说明 |
|---|---|---|
| MASVS v1 | MSTG-CODE-5 | 检查第三方库中是否存在弱点 |
| MASVS v2 | MASVS-CODE-3 | 代码质量(含供应链依赖安全) |
该用例的目标平台为 Android,适用于 L1、L2 两个安全等级,即无论应用的安全要求高低,依赖弱点检测都是强制项。需要特别注意的是,该用例当前状态为deprecated(已废弃),官方已在 MASTG V2 中以 MASTG-TEST-0272(基于 Gradle 扫描构建环境)和 MASTG-TEST-0274(基于 SBOM 软件物料清单)两个新用例覆盖,二者共同对应 MASWE-0044(依赖中存在已知漏洞)。本文既完整保留原用例的全部检测方法,也顺带说明新版用例的演进思路。
二、静态分析:用 OWASP Dependency-Check 检测第三方依赖漏洞
检测第三方依赖中的已知漏洞,首选方案是使用 OWASP Dependency-Check,在 Android/Gradle 工程中最佳落地方式是官方插件dependency-check-gradle。
2.1 插件安装:修改 build.gradle
在项目根目录的build.gradle中添加以下脚本,从 Maven Central 仓库拉取插件:
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.owasp:dependency-check-gradle:3.2.0' } } apply plugin: 'org.owasp.dependencycheck'需要说明的是,3.2.0 是该测试用例撰写时的版本号,插件以 Maven Central 为准持续迭代,实际使用时建议采用当前最新稳定版本(可在 Maven Central 查询org.owasp:dependency-check-gradle的最新版本号替换)。配置完成后重新同步 Gradle,使插件注册到构建环境中。
2.2 触发扫描并生成报告
插件安装成功后,在项目目录依次执行:
gradle assemble gradle dependencyCheckAnalyze --infogradle assemble用于先完成项目编译,确保依赖树完整解析;gradle dependencyCheckAnalyze --info触发依赖漏洞分析,--info开启详细信息日志,便于观察插件下载漏洞库、逐个分析依赖的过程。
默认情况下,报告生成在build/reports目录下(可通过插件 DSL 配置outputDirectory等参数改变路径)。报告中列出了每个依赖组件匹配到的 CVE 编号、漏洞描述、严重程度(CVSS)以及受影响版本范围,测试人员应逐一分析报告中的条目。
2.3 使用前提与注意事项
- 插件运行时需要联网下载漏洞(CVE)数据源(NVD 等),首次使用耗时较长;若网络受限或数据源异常导致插件报错,应查阅 dependency-check-gradle 官方文档 排查(如配置代理、切换数据源镜像等)。
- 该方法是"构建时静态扫描",与新版 MASTG-TECH-0129 中描述的"运行时黑盒验证"不同:后者需要在无源码环境下手工反编译核对,仅作为补充手段使用。
三、发现漏洞后的处置决策逻辑
报告中命中 CVE 并不等于必须立即换库,原用例给出了清晰的分支决策逻辑:
情形一:该库被打包进应用(运行时依赖)
- 优先查询该库是否存在修复了漏洞的新版本,升级即可;
- 若不存在修复版本,进一步评估该漏洞是否实际影响当前应用(例如漏洞只在特定调用路径触发,而应用未使用该路径);
- 若当前已受影响或未来存在受影响可能,则寻找提供相似功能但无漏洞的替代库。
情形二:该库未打包进应用(仅构建期/开发期依赖)
- 查看是否有修复版本可供升级;
- 若没有,评估漏洞对构建流程的影响——是否会阻断构建,或削弱构建管道本身的安全性;
- 若存在风险,寻找修复了该漏洞的替代组件。
这套逻辑的实质是"风险影响评估优先于机械替换":先确认可达性(是否打包、是否被调用),再决定升级、替换还是接受风险,避免为了修一个不可达的 CVE 而引入不必要的兼容性成本。
四、无源码场景:反编译还原库版本并手工核查 CVE
当应用源码不可得时,可反编译 APK 并检查其中的 JAR 文件:
- 若应用正确使用了 DexGuard 或 ProGuard(MASTG-TOOL-0022)等混淆工具,库的版本信息通常已被混淆抹除,此时无法直接从元数据判断版本;
- 若未混淆,版本信息仍常见于库的 Java 文件注释中,可据此定位版本;
- 可使用 MASTG-TOOL-0130 等自动化工具(如 MobSF)辅助分析 APK 内打包的库及其版本;
- 拿到版本号(无论来自注释还是某些特定版本才有的方法签名)后,即可人工检索该版本的 CVE,与 NVD 数据比对确认是否受影响。
针对高风险应用,最终还需手工评审库代码:原生(Native)代码部分有专门要求,可参考 Testing Code Quality(0x04h) 章节,同时核对软件工程最佳实践是否落实(如内存安全、输入校验、最小权限等)。
补充:运行时依赖验证技术
当构建环境不可控、只能做黑盒测试时,MASTG-TECH-0129 提供了一套运行时人工验证流程:反编译 APK → 检查 JAR 文件 → 从注释或特定方法中还原库版本 → 手工比对 CVE。该技术文档同时明确声明:依赖分析的首选方案是 MASTG-TECH-0131(Gradle 构建环境扫描)与 MASTG-TECH-0130(SBOM 生成),运行时验证因其人工化、难以自动化,仅限黑盒场景兜底使用。
五、混合应用与跨平台框架的特殊处理
原用例明确提示了两类特殊场景:
- 混合应用(Hybrid):除原生依赖外,还需使用RetireJS检查内置 JavaScript 依赖(WebView 中加载的 JS 库同样存在已知漏洞风险);
- 移动跨平台框架(Cross-platform,如 React Native、Flutter、Cordova 等):需同步检查其各自生态的依赖清单(npm 依赖、Pod 依赖等),不能只盯 Gradle 依赖树。
六、动态分析:许可证版权合规验证
该用例的动态分析部分聚焦于许可证合规性:第三方库的许可证往往要求应用在界面中声明版权信息。因此应验证应用是否具备"About"(关于)或 EULA 章节,并按要求列出第三方库的版权声明。若应用未展示相关声明,则可能违反库的许可证条款,属于合规层面的失败项。
七、演进:从 MASTG-TEST-0042 到供应链时代的新用例
原用例已废弃,其检测目标在 MASTG V2 中细化为两个更现代化的用例:
| 新用例 | 检测方式 | 执行步骤 |
|---|---|---|
| MASTG-TEST-0272 | 静态 + 代码 | 使用 MASTG-TECH-0131 通过 Gradle 扫描 Android Studio 构建环境,输出命中依赖及其 CVE 编号 |
| MASTG-TEST-0274 | 静态 + 开发者 | 使用 MASTG-TECH-0130 生成 SBOM(或向开发团队索取 CycloneDX 格式 SBOM),上传至 MASTG-TOOL-0132(依赖风险分析平台)并核查项目中的漏洞依赖 |
两个新用例的判定标准一致:只要发现存在已知漏洞的依赖即判失败("The test case fails if you can find dependencies with known vulnerabilities")。相比旧版,新方案更强调构建环境扫描自动化与 SBOM 供应链可视化,符合现代软件供应链安全(SCA)的主流实践。
八、总结与落地清单
MASTG-TEST-0042 及其后继用例共同回答了"Android 应用依赖安全怎么查"这一核心问题。落地一份可复用的检查清单如下:
- 构建期扫描:在
build.gradle集成dependency-check-gradle,执行gradle dependencyCheckAnalyze生成报告; - 报告处置:按"是否打包 + 是否有修复版本 + 是否实际受影响"三分支决策,升级、替换或接受风险;
- 黑盒兜底:源码不可得时反编译 APK、从注释/方法签名还原库版本,借助 MobSF 等工具人工比对 CVE;
- 混合与跨平台:用 RetireJS 覆盖 JS 依赖,并检查各框架自身依赖清单;
- 合规验证:确认应用包含 About/EULA 章节并声明第三方版权;
- 现代化升级:采用 Gradle 构建扫描(MASTG-TEST-0272)与 SBOM + Dependency-Track(MASTG-TEST-0274)方案,实现供应链漏洞的持续化、可视化治理。
依赖安全不是一次性的上线检查,而是贯穿开发、构建、发布全流程的持续活动——将上述步骤纳入 CI 流水线,即可在漏洞公开后的第一时间感知并处置。
- 文档
- 教程
- 网络安全
【免费下载链接】mastg
The OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.
相关推荐
OWASP MASTG 实践指南:Android 第三方库安全风险分析与依赖漏洞检测
OWASP MASTG 实践指南:Android 第三方库安全风险分析与依赖漏洞检测 导读 本指南基于 OWASP Mobile Application Sec
文档教程网络安全iOS 第三方库安全评估指南:依赖管理、漏洞扫描与供应链风险治理(OWASP MASTG)
iOS 第三方库安全评估指南:依赖管理、漏洞扫描与供应链风险治理(OWASP MASTG) 本文围绕 OWASP Mobile Application Secu
文档教程网络安全OWASP MASTG 实战:检测 Android WebViewClient URL 加载处理器(MASTG-TEST-0398)
OWASP MASTG 实战:检测 Android WebViewClient URL 加载处理器(MASTG TEST 0398) 本文是 OWASP Mob
文档教程网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考