ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MASTG 实战:通过生成 SBOM 对 Android 依赖进行软件成分分析(SCA)

MASTG 实战:通过生成 SBOM 对 Android 依赖进行软件成分分析(SCA) 文档教程网络安全【免费下载链接】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 Mobile Application Security Testing GuideMASTG中的技术指南 MASTG-TECH-0130讲解如何用 cdxgen 为 Android 工程生成 CycloneDX 格式的软件物料清单Software Bill of MaterialsSBOM并上传到 Dependency-Track 平台识别存在已知漏洞的第三方依赖。读完本文你将掌握一套可复现的依赖成分分析流程能够在 Android 工程中直接落地执行。为什么 Android 应用需要 SCA 与 SBOM现代 Android 应用高度依赖第三方库依赖安全已成为供应链安全的关键一环。软件成分分析Software Composition AnalysisSCA工具会检查依赖的元数据如包名、版本号并与 NVD 等公共漏洞数据库比对从而发现已知漏洞。在 Android 开发中依赖在构建过程中被解析、编译并最终合并进应用的 DEX 文件因此 MASTG 强调应在构建环境中扫描依赖而非仅扫描最终的 APK这样才能准确覆盖包括传递依赖transitive dependencies在内的全部库。MASTG-TECH-0131 明确指出分析依赖的首选技术是 MASTG-TECH-0131构建期 Gradle 插件扫描与 MASTG-TECH-0130本文所述的 SBOM 方案。后者通过生成标准格式的 SBOM将依赖清单以机器可读的方式交给专业的组件分析平台进行持续监控两者可互为补充。工具链总览cdxgen Dependency-Track本方案由 MASTG 仓库中两个通用工具配合完成MASTG-TOOL-0134cdxgenCycloneDX 官方出品的 SBOM 生成器单条命令即可为大多数应用和容器镜像生成 SBOM。它支持 SwiftPMiOS与 MavenAndroid等生态。仓库工具文档特别提醒虽然 cdxgen 也支持对编译后的 APK/AAB 生成 SBOM但结果有限且大多不完整——这是因为应用内库的元数据在打包时被移除了。因此官方推荐在 Android 应用项目目录下执行 cdxgen以获得完整的 SBOM。MASTG-TOOL-0132Dependency-Track开源组件分析平台帮助组织识别并降低软件供应链风险。它依赖 SBOM 识别存在漏洞的依赖可通过 REST API 接收 SBOM 上传。步骤一在项目根目录生成 CycloneDX SBOM进入要扫描的 Android Studio 工程根目录执行$ cdxgen -t java -o sbom.json参数说明-t java指定技术类型type为 Java 生态。Android 工程的依赖管理Gradle/Maven属于该生态cdxgen 会据此解析build.gradle/build.gradle.kts中声明的依赖及传递依赖-o sbom.json指定输出文件名生成的是标准CycloneDX格式的 JSON 文档。仓库中的演示案例 MASTG-DEMO-0051 使用的正是这条命令见 run.sh生成的示例产物 sbom.json 展示了完整的文档结构bomFormat与specVersion声明为 CycloneDX、规范版本1.5serialNumber为 UUID 形式的唯一序列号metadata.tools.components记录了生成工具cdxgen10.10.5publisher 为 OWASP Foundationmetadata.lifecycles标记 phase 为build表明该 SBOM 取自构建期metadata.component描述了被扫描工程本身该演示中为 MASTestApp。步骤二Base64 编码并上传 SBOMDependency-Track 的 REST API 要求 SBOM 以 Base64 编码后放入 JSON 请求体。先生成编码$ cat sbom.json | base64随后调用 API 上传。以下为 MASTG-TECH-0130 提供的完整请求注意原文档中X-API-Key末尾的多余为笔误此处已修正为规范形式$ curl -X PUT http://localhost:8081/api/v1/bom \ -H Content-Type: application/json \ -H X-API-Key: YOUR API KEY \ -d ${ project: YOUR PROJECT ID, bom: BASE64-ENCODED SBOM }请求参数说明接口地址http://localhost:8081/api/v1/bomDependency-Track 的 SBOM 上传端点REST API 默认端口 8081X-API-Key在 Dependency-Track 中创建的项目级 API 密钥用于鉴权project目标项目的 IDSBOM 会上传到该项目下bom步骤一生成的sbom.json经 Base64 编码后的字符串。在真实环境中建议将编码结果存入 shell 变量如BOM$(cat sbom.json | base64 -w0)再构造请求体以避免大文件中的换行符破坏 JSON 结构-d $...是 bash 的 ANSI-C 引用语法用于在请求体内保留换行与特殊字符。步骤三在 Dependency-Track 前端核查漏洞依赖上传完成后打开 Dependency-Track 的 Web 前端http://localhost:8080使用 dependency-track Docker 容器默认设置时前端端口为 8080。进入上传 SBOM 时指定的项目即可查看依赖分析结果项目中的依赖components清单及对应包 URLpurl每个依赖命中的已知漏洞CVE 标识符与风险等级存在漏洞的依赖可直接定位到版本作为升级依据。关于传递依赖的支持MASTG-TECH-0130 末尾专门有一条注意说明Transitive dependencies are supported by MASTG-TOOL-0132 for Java and Kotlin.即 Dependency-Track支持 Java 和 Kotlin 的传递依赖分析。由于 Android 工程大量依赖链通过 Gradle 传递解析这一能力保证了 SBOM 上传后扫描结果能覆盖依赖树中的间接库而非仅顶层直接依赖。仓库中的完整验证链路测试用例与演示MASTG 仓库为本文方案提供了可追溯的测试与演示证据MASTG-TEST-0274Dependencies with Known Vulnerabilities in the Apps SBOM将本方案固化为标准测试用例其执行步骤为使用 MASTG-TECH-0130 生成 SBOM或向开发团队索取 CycloneDX 格式的 SBOM将 SBOM 上传到 MASTG-TOOL-0132检查 Dependency-Track 项目中是否存在带漏洞的依赖。判定标准只要发现存在已知漏洞的依赖测试即失败漏洞数量可随时间增长。该用例关联 MASWE-0044属于 MASVS-CODE 分类。MASTG-DEMO-0051则给出了真实运行结果在某 Android 工程根目录执行cdxgen -t java -o sbom.json后上传Dependency-Track 识别出200 余个唯一依赖components其中7 个存在漏洞的依赖、共 7 个漏洞演示文档注明该数字可能随时间增加。其输出样本 output.json 展示了报告条目的典型结构{ group: com.squareup.okhttp3, name: okhttp, version: 4.8.0, scope: optional, purl: pkg:maven/com.squareup.okhttp3/okhttp4.8.0?typejar, type: library, bom-ref: pkg:maven/com.squareup.okhttp3/okhttp4.8.0?typejar, properties: [ { name: GradleProfileName, value: debugAndroidTestCompileClasspath } ] }演示的评估结论指出okhttp有 2 个已知漏洞、okio有 1 个已知漏洞均应升级到最新版本。这展示了从生成 SBOM → 上传 → 定位漏洞依赖的完整闭环也验证了 SBOM 中 purlPackage URL格式的依赖标识能被 Dependency-Track 直接解析匹配漏洞库。方案对比SBOM 方式与构建期 Gradle 扫描本方案并非唯一的 SCA 手段。MASTG 同时收录了构建期扫描方案MASTG-TECH-0131其思路是在 Android 工程app模块的build.gradle中集成 OWASP Dependency-Check Gradle 插件通过./gradlew dependencyCheckAnalyze在构建环境直接扫描依赖缓存位于~/.gradle/caches/modules-2/files-2.1并支持用suppression.xml排除误报。对应测试用例为 MASTG-TEST-0272。两者的定位差异在于构建期扫描MASTG-TECH-0131与 Gradle 构建深度绑定扫描发生在依赖解析与编译阶段反馈直接适合开发者在本地或 CI 中即时发现漏洞SBOM 方案MASTG-TECH-0130产出标准化的机器可读清单上传 Dependency-Track 后可持续跟踪、集中管理适合跨项目、跨团队乃至面向客户交付时的供应链合规审计。MASTG 将二者并列为依赖分析的首选技术实践中可根据团队的审计与合规需求选择或组合使用。注意事项与常见问题务必在工程根目录执行 cdxgen如前文所述对已打包的 APK/AAB 生成 SBOM 会因库元数据被移除而不完整导致漏报API 密钥管理上传前需在 Dependency-Track 中为项目配置 API Key密钥应妥善保管避免泄露进版本库漏洞数据时效性扫描结果依赖 NVD 等漏洞库的更新情况同一 SBOM 在不同时间扫描可能得到更多漏洞记录建议定期重新分析端口约定前端 8080 与 API 8081 均为 dependency-track Docker 容器的默认设置如自定义了端口映射请以实际部署为准传递依赖覆盖Java/Kotlin 工程的传递依赖会被 Dependency-Track 纳入分析但其他生态如原生 C/C 库的覆盖范围请以工具文档为准。通过本文的流程你可以为任意 Android 工程快速建立 SBOM 驱动的依赖成分分析能力将供应链漏洞识别纳入标准化的可审计流程。赞分享文档教程网络安全【免费下载链接】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 iOS 依赖安全测试实战基于 SwiftPM SBOM 的软件成分分析SCAOWASP MASTG iOS 依赖安全测试实战基于 SwiftPM SBOM 的软件成分分析SCA 本文是 OWASP MASTGMobile App文档教程网络安全OWASP MASTG 实战在 Android 构建时用 dependency-check 进行软件组成分析SCAOWASP MASTG 实战在 Android 构建时用 dependency check 进行软件组成分析SCA 本篇技术指南围绕 OWASP MAST文档教程网络安全MASTG-DEMO-0051 实战通过 SBOM 创建与 Dependency-Track 扫描识别 Android 项目中的不安全依赖MASTG DEMO 0051 实战通过 SBOM 创建与 Dependency Track 扫描识别 Android 项目中的不安全依赖 本篇技术指南以 O文档教程网络安全上一篇抖音评论一键批量导出到ExcelTikTokCommentScraper 零代码上手指南下一篇Flow 0.201 新特性Partial / Required 工具类型与 catch 变量注解全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表