从 DAST 代理型分析器迁移到 DAST 版本 5
- 等级:Ultimate
- 提供:GitLab.com、GitLab Self-Managed、GitLab Dedicated
DAST 版本 5 用浏览器型分析器替代了代理型分析器。本文档旨在指导您从代理型分析器迁移到 DAST 版本 5。
如果满足以下所有条件,请遵循此迁移指南:
- 您使用 GitLab DAST 在 CI/CD 管道中运行 DAST 扫描。
- DAST CI/CD 作业通过包含 DAST 模板
DAST.gitlab-ci.yml或DAST.latest.gitlab-ci.yml进行配置。 - CI/CD 变量
DAST_VERSION未设置或设置为4或更低。 - CI/CD 变量
DAST_BROWSER_SCAN未设置或设置为false。
通过阅读以下部分并进行推荐更改,迁移到 DAST 版本 5。
DAST 分析器版本
DAST 有两个主要版本:4 和 5。
从 GitLab 17.0 开始,DAST 模板 DAST.gitlab-ci.yml 和 DAST.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 作业。
需要进行的更改:
- 如果您已覆盖
artifacts以暴露文件日志、爬网图或身份验证报告,请从 CI 作业定义中移除artifacts。 - CI/CD 变量
DAST_BROWSER_FILE_LOG_PATH和DAST_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_SPIDER、DAST_SPIDER_START_AT_HOST、DAST_ZAP_CLI_OPTIONS和DAST_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_VULNERABILITIES和DAST_MAX_URLS_PER_VULNERABILITY不再受支持。
为什么迁移会产生不同的漏洞
代理型扫描和基于浏览器的 DAST 版本 5 扫描不会产生相同的结果,因为它们使用不同的漏洞检查集。
DAST 版本 5 没有代理型检查的等效项,这些检查会产生过多误报、由于现代浏览器不允许利用漏洞而不值得运行,或不再被认为相关。 DAST 版本 5 包含代理型分析器没有的检查。
DAST 版本 5 扫描为您的应用程序提供更好的覆盖率,因此它们可能会识别更多漏洞,因为您的网站有更多部分被扫描。
覆盖率
一个代理型主动检查尚未在基于浏览器的 DAST 分析器中实现。 剩余主动检查的迁移已在 epic 13411 中提出。如果您希望在最后一个检查迁移之前继续使用 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 |
重命名 | 改为 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_URLGitLab Self-Managed:在移除 DAST_WEBSITE 之前,请将您的实例升级到 17.0 或更高版本。如果您使用的是 GitLab 17.0 之前版本中包含的 DAST.gitlab-ci.yml 文件,则需要此变量。 |
DAST_ZAP_CLI_OPTIONS |
移除 | 不受支持 |
DAST_ZAP_LOG_CONFIGURATION |
移除 | 不受支持 |
SECURE_ANALYZERS_PREFIX |
无 | 受支持 |