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

如何将JSON漏洞数据转换为SARIF格式并解决GitHub Action验证错误

解决SARIF格式验证错误并完成漏洞数据转换

一、错误原因分析

这个错误的核心问题是你生成的SARIF文件包含了SARIF规范不允许的额外属性——大概率是转换时误加了空键名的字段,或是把自定义数据放在了SARIF规定的核心结构区域外,导致GitHub的验证器拒绝接受。

二、合规的SARIF转换结果

把你的漏洞数据转换成符合SARIF 2.1.0规范的格式,所有自定义字段都放在允许的properties区域内:

{
  "$schema": "https://json.schemastore.org/sarif-2.1.0.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "自定义漏洞扫描工具",
          "version": "1.0.0",
          "informationUri": "https://example.com/scanner"
        }
      },
      "results": [
        {
          "ruleId": "API-DP9-2024",
          "message": {
            "text": "Bot Data Modification"
          },
          "level": "error",
          "properties": {
            "id": "66c5b89700fbf372c2f1f182",
            "method": "post",
            "path": "/user",
            "severity": "High",
            "impact": "Vulnerablity"
          }
        }
      ]
    }
  ]
}

关键映射说明:

  • ruleId对应原数据的type字段
  • message.text对应原数据的label字段
  • level根据严重度映射:High对应error、Medium对应warning、Low对应note
  • 所有原数据里的自定义字段(id、method等)都塞进properties,这是SARIF专门留的自定义数据区域,不会触发验证错误

三、Shell脚本实现自动转换

用jq工具(GitHub Action的Ubuntu runner默认已预装)写脚本完成转换,确保格式完全合规:

# 假设原始漏洞数据存在vuln.json文件中,执行后生成合规的SARIF文件
jq '
{
  "$schema": "https://json.schemastore.org/sarif-2.1.0.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "自定义漏洞扫描工具",
          "version": "1.0.0",
          "informationUri": "https://example.com/scanner"
        }
      },
      "results": [
        {
          "ruleId": .type,
          "message": {
            "text": .label
          },
          "level": (if .severity == "High" then "error" elif .severity == "Medium" then "warning" else "note" end),
          "properties": {
            "id": .id,
            "method": .method,
            "path": .path,
            "severity": .severity,
            "impact": .impact
          }
        }
      ]
    }
  ]
}' vuln.json > vulnerabilities-results.sarif

注意:如果你的原始数据是从变量读取而非文件,只需把vuln.json换成对应的输入源即可,核心转换逻辑不变。

四、提前验证格式(可选)

可以用GitHub官方工具本地先验证SARIF是否合规:

npx @github/sarif-fix < vulnerabilities-results.sarif

如果没有报错,说明格式没问题,上传到GitHub Action就不会再触发验证错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:07:34