从基于代理的 DAST 分析器迁移到 DAST 版本 5

  • 基于代理的分析器在极狐GitLab 16.6 中被弃用,在 17.0 中被移除。

DAST 版本 5 代替基于代理的分析器。本文档作为从基于代理的分析器迁移到 DAST 版本 5 的指南。

如果满足以下所有条件,请遵循此迁移指南:

  1. 您在 CI/CD 流水线中使用极狐GitLab DAST 运行 DAST 扫描。
  2. 通过包含 DAST 模板 DAST.gitlab-ci.ymlDAST.latest.gitlab-ci.yml 来配置 DAST CI/CD 作业。
  3. CI/CD 变量 DAST_VERSION 未设置或设置为 4 或更小。
  4. CI/CD 变量 DAST_BROWSER_SCAN 未设置或设置为 false

通过阅读以下部分并进行推荐更改来迁移到 DAST 版本 5。

DAST 分析器版本

DAST 分析器有两个主要版本:4 和 5。从 17.0 开始,DAST 模板 DAST.gitlab-ci.ymlDAST.latest.gitlab-ci.yml 默认使用 DAST 版本 5。您可以继续使用 DAST 版本 4,但仅应将其用作迁移到 DAST 版本 5 的过渡措施。有关详细信息,请参阅继续使用基于代理的分析器

每个 DAST 主要版本默认使用不同的分析器:

  • DAST 版本 4 使用基于代理的分析器。
  • DAST 版本 5 使用基于浏览器的分析器。

DAST 5 使用一系列新的 CI/CD 比阿亮。为方便起见,为 DAST 版本 4 的变量创建了别名。

需要做的变更:

  • 在极狐GitLab 16.11 及更早版本中使用 DAST 版本 5 进行 DAST 扫描测试,请将 CI/CD 变量 DAST_VERSION 设置为 5

继续使用基于代理的分析器

你可以是继续使用基于代理的 DAST 分析器直到极狐GitLab 18.0。但是此遗留分析器中的缺陷和漏洞都不会被修复。

需要做的变更:

  • 要继续使用基于代理的分析器,请将 CI/CD 变量 DAST_VERSION 设置为 4

产物

极狐GitLab 17.0 会自动将 DAST 版本 5 产生的制品发布到 DAST CI 作业中。

需要做的变更:

  • 如果已重写它以公开文件日志、爬网图或身份验证报告,请从 CI 作业定义中删除 artifacts
  • CI/CD 变量 DAST_BROWSER_FILE_LOG_PATHDAST_FILE_LOG_PATH 已不再需要。

认证

基于代理的分析器和 DAST 版本 5 都使用基于浏览器的分析器来进行认证。升级到 DAST 版本 5 不会改变认证工作的方式。

需要做的变更:

  • 重命名认证 CI/CD 变量,参见带有 DAST_AUTH 前缀的变量。
  • 如果尚未完成,请使用 DAST_SCOPE_EXCLUDE_URLS 从扫描中排除注销 URL。

爬虫

DAST 版本 5 会在浏览器中爬取目标应用程序以提供更好的爬虫覆盖率。这可能需要比等效的基于代理的分析器爬虫更多的资源来运行。

需要做的变更:

  • 使用 DAST_TARGET_URL 代替 DAST_WEBSITE
  • 使用 DAST_CRAWL_TIMEOUT 代替 DAST_SPIDER_MINS
  • CI/CD 变量 DAST_USE_AJAX_SPIDERDAST_SPIDER_START_AT_HOSTDAST_ZAP_CLI_OPTIONSDAST_ZAP_LOG_CONFIGURATION 已不再支持。
  • 如果 DAST 应该处理大于 10 MB 的响应正文,请配置 DAST_PAGE_MAX_RESPONSE_SIZE_MB
  • 考虑为执行 DAST 作业的极狐GitLab Runner 提供更多的 CPU 资源。

范围

DAST 版本 5 提供的范围控制比基于代理的分析器更多。

需要做的变更:

  • 使用 DAST_SCOPE_ALLOW_HOSTS 代替 DAST_ALLOWED_HOSTS
  • DAST_TARGET_URL 的域会自动添加到 DAST_SCOPE_ALLOW_HOSTS,请考虑为目标应用程序 API 和资产端点添加域。
  • 通过将它们添加到 DAST_SCOPE_EXCLUDE_HOSTS 中来删除域(除了在身份验证期间)。

漏洞检查

所需的变更

DAST 版本 5 使用极狐GitLab 构建的漏洞定义,这些定义不会直接映射到基于代理的分析器定义。

要做的变更:

  • 使用 DAST_CHECKS_TO_RUN 代替 DAST_ONLY_INCLUDE_RULES。将使用的 ID 更改为极狐GitLab DAST 漏洞检查 ID。
  • 使用 DAST_CHECKS_TO_EXCLUDE 代替 DAST_EXCLUDE_RULES。将使用的 ID 更改为极狐GitLab DAST 漏洞检查 ID。
  • 参见漏洞检查文档,了解极狐GitLab DAST 漏洞检查的描述和 ID。
  • CI/CD 变量 DAST_AGGREGATE_VULNERABILITIESDAST_MAX_URLS_PER_VULNERABILITY 已不再支持。

为什么迁移会产生不同的漏洞

基于代理的扫描和基于浏览器的 DAST 版本 5 扫描不会产生相同的结果,因为它们使用不同的漏洞检查集。

DAST 版本 5 没有基于代理的检查的等效项,因为它们会产生太多的误报、不值得运行(因为现代浏览器不允许利用漏洞)或不再被认为相关。DAST 版本 5 包括基于代理的分析器不包含的检查。

DAST 版本 5 扫描提供了更好的应用程序覆盖范围,因此它们可能会识别更多的漏洞,因为扫描了更多的站点。

覆盖率

一个基于代理的活跃检查尚未在基于浏览器的 DAST 分析器中实现。如果您希望在迁移最后一个检查之前继续使用 DAST 版本 4,请参阅继续使用基于代理的分析器

剩余的检查:

  • CWE-79: 跨站点脚本(XSS)

按需扫猫

从极狐GitLab 17.0 开始,使用 DAST 版本 5 来运行按需扫描。

故障排查

查看 DAST 版本 5 的 故障排除 文档。

修改 CI/CD 变量

下面的表展示了针对每一个基于代理的分析器 CI/CD 变量所需的迁移操作。有关配置 DAST 版本 5 的更多信息,请参阅 配置

基于代理分析器的 CI/CD 变量 所需的操作 注释
DAST_ADVERTISE_SCAN 重命名 改为 DAST_REQUEST_ADVERTISE_SCAN
DAST_ALLOWED_HOSTS 重命名 改为 DAST_SCOPE_ALLOW_HOSTS
DAST_API_HOST_OVERRIDE 移除 不再支持
DAST_API_SPECIFICATION 移除 不再支持
DAST_AUTH_EXCLUDE_URLS 重命名 To DAST_SCOPE_EXCLUDE_URLS
DAST_AUTO_UPDATE_ADDONS 移除 不再支持
DAST_BROWSER_FILE_LOG_PATH 移除 不再需要
DAST_DEBUG 移除 不再支持
DAST_EXCLUDE_RULES 重命名, 更新检查ID 改为 DAST_CHECKS_TO_EXCLUDE
DAST_EXCLUDE_URLS 重命名 改为 DAST_SCOPE_EXCLUDE_URLS
DAST_FILE_LOG_PATH 移除 不再需要
DAST_FULL_SCAN_ENABLED 重命名 改为 DAST_FULL_SCAN
DAST_HTML_REPORT 移除 不再支持
DAST_INCLUDE_ALPHA_VULNERABILITIES 移除 不再支持
DAST_MARKDOWN_REPORT 移除 不再支持
DAST_MASK_HTTP_HEADERS 移除 不再支持
DAST_MAX_URLS_PER_VULNERABILITY 移除 不再支持
DAST_ONLY_INCLUDE_RULES 重命名, 更新检查ID 改为 DAST_CHECKS_TO_RUN
DAST_PATHS 不再支持
DAST_PATHS_FILE 不再支持
DAST_PKCS12_CERTIFICATE_BASE64 不再支持
DAST_PKCS12_PASSWORD 支持
DAST_SKIP_TARGET_CHECK 支持
DAST_SPIDER_MINS 更改 改为 DAST_CRAWL_TIMEOUT。 比如,使用 5m 来代替 5
DAST_SPIDER_START_AT_HOST 移除 不再支持
DAST_TARGET_AVAILABILITY_TIMEOUT 更改 改为 DAST_TARGET_CHECK_TIMEOUT。比如,使用 60s 来代替 60
DAST_USE_AJAX_SPIDER 移除 不再支持
DAST_XML_REPORT 移除 不再支持
DAST_WEBSITE 重命名 改为 DAST_TARGET_URL
私有化部署:在移除 DAST_WEBSITE,升级你的实例到版本 17.0 或更新版本。此变量在使用包含预17.0版本的 DAST.gitlab-ci.yml 文件时是必需的。
DAST_ZAP_CLI_OPTIONS 移除 不再支持
DAST_ZAP_LOG_CONFIGURATION 移除 不再支持
SECURE_ANALYZERS_PREFIX 支持