- 调试 DAST 作业
- 内存不足
- 收到警告消息
gl-dast-report.json: no matching files
- 包含 DAST CI 模板时,收到错误
dast job: chosen stage does not exist
- 使用 DAST CI/CD 模板时,收到错误
shell not found
- 缺乏 IPv6 支持
- 深入了解 DAST 扫描活动
DAST 基于代理的分析器故障排除
从客户支持案例中收集了以下故障排除方案。如果您遇到此处未解决的问题,或者此处的信息无法解决您的问题,请创建技术支持工单。有关更多详细信息,请参阅技术支持页面。
调试 DAST 作业
DAST 作业有两个执行进程:
- ZAP 服务器。
- 一系列启动、控制和停止 ZAP 服务器的脚本。
启用 DAST_DEBUG
CI/CD 变量可以调试脚本,有助于对作业进行故障排除,并输出指示扫描完成百分比的语句。有关使用变量的详细信息,请参阅覆盖 DAST 模板。
可以使用 DAST_ZAP_LOG_CONFIGURATION
变量启用 ZAP 服务器的调试模式。下表概述了可以设置的值的示例以及它们对记录的输出的影响。可以指定多个值,用分号分隔。
例如,log4j.logger.org.parosproxy.paros.network.HttpSender=DEBUG;log4j.logger.com.crawljax=DEBUG
。
日志配置值 | 影响 |
---|---|
log4j.rootLogger=DEBUG |
启用所有调试日志记录语句。 |
log4j.logger.org.apache.commons.httpclient=DEBUG |
记录 ZAP 服务器发出的每个 HTTP 请求和响应。 |
log4j.logger.org.zaproxy.zap.spider.SpiderController=DEBUG |
记录在目标 spider 扫描期间找到的 URL。 |
log4j.logger.com.crawljax=DEBUG |
启用 Ajax Crawler 调试日志记录语句。 |
log4j.logger.org.parosproxy.paros=DEBUG |
启用 ZAP 服务器代理调试日志记录语句。 |
log4j.logger.org.zaproxy.zap=DEBUG |
启用通用 ZAP 服务器代码的调试日志记录语句。 |
内存不足
默认情况下,DAST 所依赖的 ZAProxy 分配的内存总和为主机上总内存的 25%。 由于它在扫描期间将大部分信息保存在内存中,因此 DAST 在扫描大型应用程序时可能会耗尽内存。 这会导致以下错误:
[zap.out] java.lang.OutOfMemoryError: Java heap space
幸运的是,使用 DAST_ZAP_CLI_OPTIONS
CI/CD 变量可以直接增加 DAST 的可用内存量:
include:
- template: DAST.gitlab-ci.yml
variables:
DAST_ZAP_CLI_OPTIONS: "-Xmx3072m"
此示例将 3072 MB 分配给 DAST。将 -Xmx
后面的数字更改为所需的内存量。
收到警告消息 gl-dast-report.json: no matching files
有关这方面的信息,请参阅一般应用程序安全故障排除部分。
包含 DAST CI 模板时,收到错误 dast job: chosen stage does not exist
为避免从其他 CI 文件覆盖阶段,较新版本的 DAST CI 模板不定义阶段。如果您最近开始使用 DAST.latest.gitlab-ci.yml
或升级到极狐GitLab 的新主要版本并开始收到此错误,则必须与其他阶段一起定义 dast
阶段。请注意,您必须有一个正在运行的应用程序才能让 DAST 进行扫描。如果您的应用程序是在您的流水线中设置的,则它必须部署在 dast
阶段之前的阶段:
stages:
- deploy # DAST needs a running application to scan
- dast
include:
- template: DAST.latest.gitlab-ci.yml
使用 DAST CI/CD 模板时,收到错误 shell not found
当包含文档中描述的 DAST CI/CD 模板时,作业可能会失败,并在作业日志中记录如下错误:
shell not found
为避免此错误,请确保您使用的是最新稳定版本的 Docker。
缺乏 IPv6 支持
由于底层 ZAProxy 引擎不支持 IPv6,DAST 无法扫描或爬取基于 IPv6 的应用程序。
深入了解 DAST 扫描活动
要进一步了解 DAST 扫描在给定时间执行的操作,您可能会发现在扫描期间或之后查看 DAST 目标端点的 Web 服务器访问日志会很有帮助。