You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline集成OWASP ZAP(V2.11.1)扫描启动失败求助

Jenkins Pipeline中OWASP ZAP扫描启动失败排查方案

核心问题分析

从日志可定位两个关键异常:

  1. ZAP已确认监听127.0.0.1:8080,但Jenkins插件无法建立连接,触发SocketException: Software caused connection abort: recv failed
  2. ZAP临时目录删除失败,因文件被进程占用

针对性解决步骤

1. 解决ZAP连接失败问题

  • 端口冲突排查:Windows下执行命令检查8080端口是否被其他进程(如Jenkins默认端口即为8080)占用:
    netstat -ano | findstr :8080
    
    若发现占用,修改Pipeline中startZap的port参数为未被占用的端口(如8090),同时延长启动超时、禁用自动更新:
    startZap(host: "127.0.0.1", port: 8090, timeout:60000, zapHome: "C:\\Program Files\\OWASP\\Zed Attack Proxy", allowedHosts:['https://igfscg.netsw.it:18080/IGFS_CG_WEB/app/cc/main/show?referenceData=B6345DAEC2AFF5A1FD8E84F8FC745E50'], disableAutoUpdate: true)
    
  • 延长启动超时:首次启动ZAP会生成根CA证书,30秒超时可能不足,将timeout从30000调整为60000(60秒)。
  • 禁用自动更新:日志显示有24个插件待更新,更新过程会阻塞API服务,添加disableAutoUpdate: true参数阻止自动更新。
  • 防火墙权限检查:临时关闭Windows防火墙测试,若恢复正常则需为ZAP的Java进程添加对应端口的入站/出站权限。

2. 解决临时目录删除失败问题

  • 先停止ZAP再归档结果:在archiveZap前调用stopZap()确保ZAP进程完全退出,释放临时目录文件:
    post {
        always {
            script {
                stopZap() // 先终止ZAP进程
                archiveZap(failAllAlerts: 10, failHighAlerts: 0, failMediumAlerts: 0, failLowAlerts: 0, falsePositivesFilePath: "zapFalsePositives.json")
            }
        }
    }
    
  • 检查Jenkins用户权限:确认Jenkins服务运行用户(如a.carnevali)对工作目录C:\Users\a.carnevali.jenkins\workspace\igfs_cg_testing\拥有完全控制权限,避免因权限不足无法删除目录。
  • 手动清理残留目录:若构建失败后残留临时目录,手动删除zaptemp.tmpxxxxxx目录后再重新触发构建。

修正后的完整Pipeline示例

pipeline {
    agent any
    stages { 
        stage('Zap Test') {
            steps {
                script {
                    startZap(
                        host: "127.0.0.1", 
                        port: 8090, 
                        timeout: 60000, 
                        zapHome: "C:\\Program Files\\OWASP\\Zed Attack Proxy", 
                        allowedHosts:['https://igfscg.netsw.it:18080/IGFS_CG_WEB/app/cc/main/show?referenceData=B6345DAEC2AFF5A1FD8E84F8FC745E50'],
                        disableAutoUpdate: true
                    )
                    // 添加实际扫描命令,原代码仅启动ZAP未执行扫描
                    runZapFullScan(target: "https://igfscg.netsw.it:18080/IGFS_CG_WEB/app/cc/main/show?referenceData=B6345DAEC2AFF5A1FD8E84F8FC745E50")
                }
            }
        }
    }
    post {
        always {
            script {
                stopZap()
                archiveZap(failAllAlerts: 10, failHighAlerts: 0, failMediumAlerts: 0, failLowAlerts: 0, falsePositivesFilePath: "zapFalsePositives.json")
            }
        }
    }
}

注意:原代码仅启动了ZAP但未执行实际扫描操作,需添加runZapFullScan或对应扫描步骤才能触发扫描。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:35:16