)
文档教程网络安全【免费下载链接】mastgThe 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.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载本篇文章基于 OWASP MASTG 仓库中的演示用例 MASTG-DEMO-0050 展开完整讲解如何在 Android Studio 项目中接入 OWASP Dependency-Check即 MASTG-TOOL-0131在构建期自动扫描 Gradle 依赖并识别存在已知 CVE 的库。读完本文你将掌握 Dependency-Check 的 Gradle 插件配置、扫描命令执行、报告解读、误报抑制以及如何根据扫描结果修复存在漏洞的依赖如 okhttp-4.9.1。演示用例在 MASTG 测试体系中的定位MASTG-DEMO-0050 是一个平台为 Android、代码语言为 Java 的演示用例它归属于 MASVS-CODE代码质量与构建设置类别并对应测试用例 MASTG-TEST-0272Identify Dependencies with Known Vulnerabilities in the Android Project。该测试用例关联的弱点枚举条目为MASWE-0044其测试类型为static, code静态代码分析。MASTG-TEST-0272 给出的测试步骤非常简洁使用 MASTG-TECH-0131 所描述的技术通过 Gradle 扫描 Android Studio 的构建环境观察阶段要求输出结果中应包含存在已知漏洞的依赖及其 CVE 标识符评估阶段明确只要能够找到带已知漏洞的依赖测试用例即为失败fail。MASTG-DEMO-0050 正是对这一测试用例的可复现实战演示它给出了真实项目中的build.gradle.kts、可执行的扫描脚本 run.sh 以及扫描报告片段 output.txt读者可以据此在自己的项目中复现同样的依赖安全审计流程。为什么要在构建期做软件成分分析SCA现代 Android 应用严重依赖第三方库依赖安全因此成为关键问题。软件成分分析Software Composition Analysis, SCA工具会检查依赖的元数据如包名和版本号并将其与公开漏洞数据库如 NVDNational Vulnerability Database比对从而识别已知漏洞。一个容易被忽视的关键点是Android 项目的依赖在构建过程中被解析、编译并最终进入应用的 DEX 文件。因此扫描依赖的时机应当放在构建环境中而不只是扫描最终 APK。正如 MASTG-TECH-0131 所述这一策略能确保包括传递性依赖transitive dependencies在内的所有库都被准确分析。由于依赖是在构建环境中声明和解析的将 SCA 工具集成进构建系统是最有效的策略。Gradle 尤其相关它是 Android Studio 的默认构建工具也是 Android 项目中应用最广泛的依赖管理系统。MASTG-DEMO-0050 正是基于这一前提选择通过 Gradle 触发 Dependency-Check 扫描。注意Android 项目解析后的依赖文件实际存放在~/.gradle/caches/modules-2/files-2.1目录而不是 Android 项目目录内。Dependency-Check 的扫描会遍历这一缓存目录完成依赖枚举。实操在 Android Studio 中集成 Dependency-Check第 1 步配置 build.gradle.kts根据 MASTG-TECH-0131 的说明需要在Module: app注意是应用模块而不是项目根目录的build.gradle文件中添加dependencycheck插件依赖及dependencyCheck配置plugins { ... id(org.owasp.dependencycheck) version 12.1.1 // This is the latest version at the time of writing, please update accordingly } dependencyCheck { formats listOf(HTML, XML, JSON) // Generate reports in HTML, JSON, and XML format nvd { apiKey YOUR NVD API KEY delay 16000 } }配置要点说明插件版本org.owasp.dependencycheck的版本号需要根据实际情况更新当前文档写作时使用的版本为 12.1.1本演示的扫描报告中utm_content12.1.1也印证了这一版本。formats指定报告生成格式listOf(HTML, XML, JSON)会同时输出三种格式便于不同场景阅读与二次解析。nvd.apiKey运行扫描前需要先向 NVD 申请 API Key用于获取最新 CVE 信息并填入此处。nvd.delay两次 NVD API 请求之间的延迟毫秒数。NVD 对免费 API Key 有速率限制1600016 秒是官方文档给出的建议值用于避免因请求过频被限流。已知问题提示在较新版本的 Dependency-Check截至写作时最高到 12.1.1中可能会遇到多个与ZipFile.builder()相关的NoSuchMethodError消息。这一兼容性问题可通过锁定org.apache.commons:commons-compress的版本来解决。第 2 步执行扫描命令本演示的核心执行脚本 run.sh 内容只有一行./gradlew dependencyCheckAnalyze在 Android Studio 中打开终端并执行上述命令即可触发 MASTG-TECH-0131 描述的构建期 SCA 扫描。成功执行后会看到类似输出$ ./gradlew dependencyCheckAnalyze ... BUILD SUCCESSFUL in 6s 1 actionable task: 1 executed扫描完成后报告会生成在项目目录的app/build/reports下包含 HTML、JSON 和 XML 三种格式取决于第 1 步中配置的formats。观察扫描结果解读整体统计MASTG-DEMO-0050 的 Observation 部分给出了本次扫描的总体结果扫描识别出303 个唯一依赖unique dependencies其中有4 个依赖存在漏洞共发现5 个漏洞随着时间推移NVD 数据库会持续更新实际数量可能增加如果使用了suppression.xml抑制文件则还有57 个被抑制的漏洞suppressed vulnerabilities。报告片段okhttp-4.9.1 的漏洞详情output.txt 是 Dependency-Check JSON 报告的截断示例中间部分以[redacted for readability]标记省略。其中完整记录了漏洞依赖的指纹与 CVE 信息以下为核心字段的解析依赖识别信息以okhttp-4.9.1.jar为例{ isVirtual: false, fileName: okhttp-4.9.1.jar, filePath: /Users/sushi2k/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/4.9.1/.../okhttp-4.9.1.jar, md5: 018ce5d28ab7958a1f0bb93b35215ef6, sha1: 51215279c3fe472c59b6b7dd7491e6ac2e28a81b, sha256: 6afdd8f35f4eb60df965c290fa3acf29443fa986545113d0729b8461f6571f8f, description: Square’s meticulous HTTP client for Java and Kotlin., license: The Apache Software License, Version 2.0 }这些字段说明 Dependency-Check 通过 Gradle 缓存目录定位到具体 JAR 文件并计算其 MD5、SHA1、SHA256 哈希用于唯一标识组件。filePath也印证了前文依赖存放在~/.gradle/caches/modules-2/files-2.1的说法。CVE 与 CPE 匹配信息该依赖匹配到pkg:maven/com.squareup.okhttp3/okhttp4.9.1包并命中两个 CPE 标识cpe:2.3:a:squareup:okhttp:4.9.1与cpe:2.3:a:squareup:okhttp3:4.9.1置信度均为HIGHEST。漏洞一CVE-2021-0341HIGHCVSS 3.1 基础分 7.5{ source: OSSINDEX, name: CVE-2021-0341, severity: HIGH, cvssv3: { baseScore: 7.5, attackVector: NETWORK, attackComplexity: LOW, privilegesRequired: NONE, userInteraction: NONE, scope: UNCHANGED, confidentialityImpact: HIGH, integrityImpact: NONE, availabilityImpact: NONE, baseSeverity: HIGH, version: 3.1 }, cwes: [CWE-295] }该漏洞描述为在OkHostnameVerifier.java的verifyHostName中由于加密使用不当存在接受错误域名证书的可能性CWE-295Improper Certificate Validation可导致远程信息泄露且无需额外执行权限和用户交互。漏洞二CVE-2023-0833MEDIUMCVSS 3.1 基础分 5.5{ source: NVD, name: CVE-2023-0833, severity: MEDIUM, cvssv3: { baseScore: 5.5, attackVector: LOCAL, attackComplexity: LOW, privilegesRequired: LOW, userInteraction: NONE, scope: UNCHANGED, confidentialityImpact: HIGH, integrityImpact: NONE, availabilityImpact: NONE, baseSeverity: MEDIUM, version: 3.1 }, cwes: [CWE-209] }该漏洞为 Red Hat AMQ-Streams 随附的 OkHttp 组件中的信息泄露缺陷CWE-209Generation of Error Message Containing Sensitive Information包含非法值的请求头触发异常时可能泄露敏感信息允许已认证攻击者越权访问信息。从这两条记录可以看出 Dependency-Check 报告的核心价值不仅给出 CVE 编号和严重等级还提供完整的 CVSS 3.1 向量分解攻击向量、攻击复杂度、所需权限、用户交互、影响范围等、CWE 分类及来源OSSINDEX / NVD。评估与修复如何处置扫描结果MASTG-DEMO-0050 的 Evaluation 部分给出如下结论由于漏洞数量较多dependency-check报告可能很长且可能包含误报false positives因此需要逐一审查每个报告的实例结合依赖的实际使用场景判断其真实性。build.gradle.kts中添加的okhttp-4.9.1.jar依赖存在已知漏洞应更新到最新版本。从源码依赖声明com.squareup.okhttp3:okhttp:4.9.1到报告中的两个 CVECVE-2021-0341、CVE-2023-0833修复路径非常清晰升级 okhttp 到不受影响的版本后重新执行./gradlew dependencyCheckAnalyze确认对应 CVE 从报告中消失。对照 MASTG-TEST-0272 的判定标准——只要找到存在已知漏洞的依赖测试即失败——本演示中的项目显然处于fail不通过状态需要进入修复流程。进阶用 suppression.xml 抑制误报如果某些依赖被标记为漏洞但实际上属于误报或者该依赖仅用于构建 APK 而不会被打包进 APK可以使用抑制文件suppression file将其排除这正是 Observation 中57 个被抑制漏洞的来源。MASTG-TECH-0131 给出了完整的suppression.xml示例以下配置会排除所有包 URL 匹配pkg:maven/io.grpc/grpc.*和pkg:maven/io.netty/netty.*的漏洞报告?xml version1.0 encodingUTF-8? suppressions xmlnshttps://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd suppress notes![CDATA[ This suppresses false positives identified on grpc that are not added into the APK. ]]/notes packageUrl regextrue^pkg:maven/io\.grpc/grpc.*/packageUrl vulnerabilityName regextrue.*/vulnerabilityName /suppress suppress notes![CDATA[ This suppresses false positives identified on netty that are not added into the APK. ]]/notes packageUrl regextrue^pkg:maven/io\.netty/netty.*/packageUrl vulnerabilityName regextrue.*/vulnerabilityName /suppress /suppressions在build.gradle.kts中通过suppressionFile属性启用该文件dependencyCheck { formats listOf(HTML, XML, JSON) // Generate reports in HTML, JSON, and XML format suppressionFile suppression.xml ... }抑制规则使用正则表达式匹配packageUrl和vulnerabilityNamenotes用于记录抑制理由方便后续审计追溯。相关延伸基于 SBOM 的依赖审计MASTG-DEMO-0051与 MASTG-DEMO-0050 同属一个测试用例MASTG-TEST-0272的姊妹演示 MASTG-DEMO-0051 提供了另一种实现路径在 Android Studio 项目根目录执行cdxgen生成软件物料清单SBOM文件再将 SBOM 上传到依赖审计平台进行扫描。该演示中扫描识别出 200 多个唯一依赖组件其中 7 个存在漏洞、共 7 个漏洞okhttp有 2 个已知漏洞、okio有 1 个已知漏洞。两种方式互为补充构建期插件扫描DEMO-0050适合 CI 流水线集成SBOM 方式DEMO-0051则适合在漏洞情报平台上持续跟踪组件风险。小结通过 MASTG-DEMO-0050 的完整实战链路可以总结出 Android 依赖安全审计的标准流程在应用模块的build.gradle.kts中集成org.owasp.dependencycheck插件配置报告格式、NVD API Key 与请求延迟执行./gradlew dependencyCheckAnalyze触发构建期 SCA 扫描在app/build/reports中解读 HTML/XML/JSON 报告重点关注 CVE 编号、CVSS 评分、CWE 分类和受影响依赖路径逐一核实结果、剔除误报必要时用suppression.xml抑制并升级存在已知漏洞的依赖如 okhttp-4.9.1依据 MASTG-TEST-0272 的判定标准输出测试结论。如需复现或深入研究可直接查看仓库中的 演示文档、扫描脚本、报告样例 以及对应的技术文档。赞分享文档教程网络安全【免费下载链接】mastgThe 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.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载相关推荐MASTG-DEMO-0051 实战通过 SBOM 创建与 Dependency-Track 扫描识别 Android 项目中的不安全依赖MASTG DEMO 0051 实战通过 SBOM 创建与 Dependency Track 扫描识别 Android 项目中的不安全依赖 本篇技术指南以 O文档教程网络安全OWASP MASTG 实战检测 Android 应用中不校验证书链的 TrustManagerMASTG-DEMO-0054OWASP MASTG 实战检测 Android 应用中不校验证书链的 TrustManagerMASTG DEMO 0054 本篇技术指南以 OWASP文档教程网络安全MASTG 实战用 Semgrep 静态检测 Android 不安全的 PendingIntentMASTG-DEMO-0147MASTG 实战用 Semgrep 静态检测 Android 不安全的 PendingIntentMASTG DEMO 0147 导读 本文围绕 OWAS文档教程网络安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考