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

Azure DevSecOps中用Snyk跳过旧漏洞仅新漏洞失败,执行报错求助

Azure DevOps中Snyk Delta对比漏洞报错的解决方法

问题场景

在Azure DevSecOps中使用Snyk扫描项目,目标是将当前扫描结果与特定快照对比,跳过已存在的旧漏洞,仅在出现新漏洞时触发构建失败。配置的流水线任务如下:

- task: SnykSecurityScan@1
  inputs:
    projectName: 'POcPipeline'
    serviceConnectionEndpoint: 'conectionSnykAzure'
    severityThreshold: 'low'
    testType: 'app'
    monitorWhen: 'always'
    failOnIssues: false
  displayName: 'Run Snyk Security Scan'

- script: |
    npm install -g snyk snyk-delta
  displayName: 'Install Snyk and Snyk-Delta Tools'

- script: |
    ls -la
  displayName: 'List Workspace Files'

- script: |
    snyk test --json --print-deps | snyk-delta --baselineOrg 93d6123-a3rf-ub0f-yc93-216ecc08a338 --baselineProject 015b7a6-26rw-4e23-br47-74544067c54744d
  displayName: 'Snyk Vulnerability Delta Analysis'

错误信息

执行Snyk Delta分析时触发以下错误:

Generating script.
Script contents:
snyk test --json --print-deps | snyk-delta --baselineOrg 93d6123-a3rf-ub0f-yc93-216ecc08a338 --baselineProject 015b7a6-26rw-4e23-br47-74544067c54744d
========================== Starting Command Output ===========================
/usr/bin/bash --noprofile --norc /home/vsts/work/_temp/0547b0-79a1-41d9-b8a1-b452342ee0.sh
Hint: use debug mode -d for more information
BadInputError: Expected 'snyk test --json' output to contain .vulnerabilities[] property but none was found. Ensure 'snyk test --json' completed successfully.
Please review the available documentation via -h or the README

##[error]Bash exited with code '2'.
Finishing: Snyk Vulnerability Delta Analysis

解决步骤

1. 移除错误的--print-deps参数

--print-deps是Snyk用于输出项目依赖树的参数,会导致snyk test --json只返回依赖数据,不包含漏洞信息,这正是Snyk Delta找不到vulnerabilities字段的核心原因。修改后的基础命令如下:

snyk test --json | snyk-delta --baselineOrg 93d6123-a3rf-ub0f-yc93-216ecc08a338 --baselineProject 015b7a6-26rw-4e23-br47-74544067c54744d

2. 添加新漏洞触发失败的参数

要实现仅新漏洞出现时构建失败的需求,需在Snyk Delta命令后添加--fail-on-new参数。当检测到新漏洞时,命令会返回非0退出码,直接触发流水线失败:

snyk test --json | snyk-delta --baselineOrg 93d6123-a3rf-ub0f-yc93-216ecc08a338 --baselineProject 015b7a6-26rw-4e23-br47-74544067c54744d --fail-on-new

3. 确保Snyk CLI授权有效

单独执行snyk test时可能未继承SnykSecurityScan任务的授权,需在安装工具后添加授权步骤,将SNYK_TOKEN作为流水线秘密变量存储:

- script: |
    snyk auth $(SNYK_TOKEN)
  displayName: 'Authenticate Snyk CLI'

4. 优化流水线任务顺序

确保项目依赖先安装完成,再执行Snyk扫描,避免因依赖缺失导致扫描无有效结果:

- script: |
    npm install
  displayName: 'Install Project Dependencies'

- script: |
    npm install -g snyk snyk-delta
  displayName: 'Install Snyk and Snyk-Delta Tools'

- script: |
    snyk auth $(SNYK_TOKEN)
  displayName: 'Authenticate Snyk CLI'

- script: |
    snyk test --json | snyk-delta --baselineOrg 93d6123-a3rf-ub0f-yc93-216ecc08a338 --baselineProject 015b7a6-26rw-4e23-br47-74544067c54744d --fail-on-new
  displayName: 'Snyk Vulnerability Delta Analysis'

内容的提问来源于stack exchange,提问作者Diego Izquierdo Dussan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:23:23