提问人:Raphaël 提问时间:10/26/2023 更新时间:11/4/2023 访问量:41
OWASP ZAP 基线扫描在 CI/CD 管道中返回意外错误 1
OWASP ZAP baseline scan returns unexpected error 1 in CI/CD pipeline
问:
我在管道中使用来自 OWASP 的 docker 映像来扫描我的 Web 应用程序并生成 HTML 报告,我遇到了一个我花了一整天时间试图解决的问题。
运行扫描作业时,它会成功扫描网站,但在执行扫描命令后,作业会立即停止并返回“错误:作业失败:退出代码 1”。
这种情况发生时,没有对命令中失败的内容进行精确定位。
这是我的工作代码:
zap_scan:
stage: owasp
image:
name: owasp/zap2docker-stable
script:
- mkdir /zap/wrk
- /zap/zap-baseline.py -t http://webURL.com -g gen.conf -r /zap/wrk/report.html
artifacts:
paths:
- /zap/wrk/report.html
通常,这不应该返回错误,因为我已经通过在本地构建的相同 docker 映像上运行它来测试扫描命令,并且我没有遇到任何问题(即扫描和文件已正确生成)。
通过对此进行研究,我发现如果 fail_count 不同于 0,脚本可能会返回错误 1。
我不明白为什么脚本在本地 docker 映像和管道中的行为不同,你能帮我吗?
答:
0赞
Simon Bennetts
10/26/2023
#1
您需要共享扫描的完整输出(混淆任何敏感内容),以便我们能够提供更多帮助。
顺便说一句,你为什么要指定?这将生成一个配置文件,您似乎没有使用该文件。-g gen.conf
评论
0赞
Raphaël
10/26/2023
由于公司政策,我无法共享扫描的完整输出,但是我可以向您保证,来自本地 docker 映像的扫描是完全干净的,没有问题。我认为这个问题与管道文件操作有关,如果我在管道中扫描后添加另一个命令,该命令将不会执行,并且作业将在扫描后立即终止。conf 文件是默认文件,可能没有必要使用它,但它不是错误的来源,因为它是在没有选项配置文件的情况下复制的。
0赞
Simon Bennetts
10/27/2023
所以听起来它不是 ZAP 问题?
1赞
Raphaël
10/30/2023
这实际上不是 ZAP 问题。当脚本返回 1 时,Gitlab 会发送自动错误,这是因为扫描有警告。添加选项 -I 修复了错误。
0赞
Raphaël
10/30/2023
#2
当脚本返回 1 时,Gitlab 会发送自动错误,这是因为扫描有警告。添加选项 -I 修复了错误。
0赞
Sanjay Bharwani
11/4/2023
#3
以下是用于 zap 扫描的工作 gitlab 作业。
zap-scan:
stage: owasp
image:
name: owasp/zap2docker-stable:latest
before_script:
- mkdir -p /zap/wrk
script:
- echo "Starting zap-api-scan.py baseline scan"
- cp ./owasp-zap/warn-levels.config /zap/wrk
- zap-api-scan.py -t http://webURL.com -c warn-levels.config -w testreport.md -r testreport.html -S -I
- cp /zap/wrk/testreport.md testreport.md
- cp /zap/wrk/testreport.html testreport.html
- grep -Po '\| High \| 0 \|' testreport.md
- grep -Po '\| Medium \| 0 \|' testreport.md
artifacts:
when: always
paths:
- zap.out
- testreport.md
- testreport.html
请注意,您可以提供这个额外的配置来配置要忽略的错误。-c with warn-levels.config
在我们的例子中,我们想排除
WARN-NEW: Spring Actuator Information Leak [40042] x 1
因此,该文件如下所示warn-levels.config
40042 IGNORE (Spring Actuator Information Leak - Active/release)
评论