跳过内容

MASTG-TEST-0042:检查第三方库中的弱点

已弃用测试

此测试已**弃用**,不应再使用。**原因**:MASTG V2 中提供新版本

请查看以下涵盖此 v1 测试的 MASTG v2 测试

概述

静态分析

可以通过 OWASP 依赖项检查工具来检测第三方依赖项中的漏洞。最好使用 Gradle 插件,例如 dependency-check-gradle。要使用该插件,需要执行以下步骤:通过将以下脚本添加到您的 build.gradle 中,从 Maven 中央仓库安装该插件

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.owasp:dependency-check-gradle:3.2.0'
    }
}

apply plugin: 'org.owasp.dependencycheck'

Gradle 调用插件后,您可以通过运行以下命令生成报告

gradle assemble
gradle dependencyCheckAnalyze --info

除非另行配置,否则报告将位于 build/reports 中。请使用报告分析发现的漏洞。有关如何处理库中发现的漏洞,请参阅补救措施。

请注意,该插件需要下载漏洞信息源。如果插件出现问题,请查阅文档。

最后,请注意,对于混合应用程序,需要使用 RetireJS 检查 JavaScript 依赖项。同样,对于 Xamarin,需要检查 C# 依赖项。

如果发现某个库包含漏洞,则适用以下推理

  • 该库是否随应用程序打包?然后检查该库是否有已修补漏洞的版本。如果没有,请检查该漏洞是否确实影响应用程序。如果存在这种情况或将来可能出现这种情况,则寻找提供类似功能但没有漏洞的替代方案。
  • 该库是否未随应用程序打包?查看是否有已修复漏洞的修补版本。如果不是这种情况,请检查漏洞对构建过程的影响。该漏洞是否会阻碍构建或削弱构建管道的安全性?然后尝试寻找一个已修复该漏洞的替代方案。

当源代码不可用时,可以反编译应用程序并检查 JAR 文件。如果正确应用了 Dexguard 或 * Proguard,库的版本信息通常会被混淆并因此丢失。否则,您仍然可以在给定库的 Java 文件的注释中经常找到这些信息。MobSF 等工具可以帮助分析应用程序中可能打包的库。如果您可以通过注释或特定版本中使用的特定方法检索库的版本,则可以手动查找其 CVE。

如果应用程序是高风险应用程序,您最终将需要手动审查该库。在这种情况下,对原生代码有特定的要求,您可以在“测试代码质量”一章中找到。此外,最好审查是否应用了所有软件工程的最佳实践。

动态分析

本节的动态分析包括验证是否遵守了许可的版权。这通常意味着应用程序应包含一个 关于EULA 部分,其中注明了第三方库许可要求的版权声明。