Go 漏洞扫描基础版
核心能力
- govulncheck 漏洞扫描:调用 govulncheck 对当前 Go 模块进行扫描,识别依赖项中的已知漏洞(CVE / GHSA)
- 漏洞风险评级:依据 CVSS 评分与影响范围,将漏洞划分为高、中、低三级
- 基础修复建议:针对每个漏洞提供依赖升级路径(升级到哪个版本的依赖可修复)
- 扫描结果汇总:按漏洞数量、风险等级、受影响模块汇总扫描结果
- 调用可达性基础识别:标注漏洞函数是否在当前代码中被实际调用(govulncheck 的 called 标记)
快速开始
- 确认运行环境满足依赖说明中的要求
- 在AI Agent对话中调用本技能,提供必要的输入参数
- 检查输出结果,根据需要进行后续处理
详细的输入输出格式请参考下方章节说明。
适用场景
| 场景 | 输入 | 输出 |
|---|---|---|
| 项目安全扫描 | Go 模块根目录 | 漏洞清单与风险评级 |
| 依赖升级评估 | go.mod 文件 | 漏洞修复所需的依赖版本 |
| 漏洞排查 | 特定 CVE 编号 | 该漏洞在本项目中的影响范围 |
| 合规检查 | 模块路径 | 基础合规报告(漏洞数量与等级) |
不适用于:批量自动化修复(如全量 go.mod 改写)、SBOM(软件物料清单)生成、深度调用链分析、自定义漏洞规则、渗透测试等场景(请使用高级版)
使用流程
- 确认运行环境已安装 Go 与 govulncheck,且当前目录为 Go 模块根目录
- 执行 govulncheck ./... 扫描当前模块
- 解析扫描结果,按风险等级分类
- 为每个漏洞匹配修复路径(依赖升级建议)
- 输出漏洞清单、风险评级与修复建议
输入格式
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| module_path | string | 是 | Go 模块根目录路径 |
| scan_mode | string | 否 | 扫描模式,可选: source/binary,默认: source |
| severity_filter | string | 否 | 风险等级过滤,可选: high/medium/low/all,默认: all |
| output_format | string | 否 | 输出格式,可选: markdown/json/text,默认: markdown |
| strict_level | string | 否 | 审查严格度,可选: strict/normal/loose,默认: normal |
输出格式
{
"success": true,
"data": {
"overall_grade": "C",
"total_score": 65,
"max_score": 100,
"summary": "发现 3 个漏洞:1 个高危、1 个中危、1 个低危",
"vulnerabilities": [
{
"id": "CVE-2024-12345",
"module": "相关技术文档
"current_version": "v1.2.0",
"fixed_version": "v1.2.5",
"severity": "high",
"cvss_score": 8.5,
"called": true,
"description": "该漏洞允许攻击者通过特制输入触发缓冲区溢出",
"fix_suggestion": "升级 相关技术文档 到 v1.2.5 或更高版本"
},
{
"id": "GHSA-xy12-abcd",
"module": "相关技术文档
"current_version": "v0.5.0",
"fixed_version": "v0.5.2",
"severity": "medium",
"cvss_score": 5.3,
"called": false,
"description": "存在信息泄露风险,仅在特定配置下可被利用",
"fix_suggestion": "升级 相关技术文档 到 v0.5.2"
}
],
"stats": {
"total": 3,
"high": 1,
"medium": 1,
"low": 1,
"called_count": 2
}
},
"error": null
}
异常处理
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| govulncheck 未安装 | 未执行 go install golang.org/x/vuln/cmd/govulncheck@latest | 提示用户运行安装命令后检查网络连接和配置后重试 |
| 不是 Go 模块 | 当前目录无 go.mod | 提示切换到 Go 模块根目录或执行 go mod init |
| 网络错误 | 漏洞数据库拉取失败 | 检查网络连接和配置后重试,建议配置 GOProxy 代理 |
| 扫描超时 | 模块依赖过多导致扫描超时 | 建议缩小扫描范围或使用 strict_level=loose 跳过低危 |
| 依赖版本不存在 | 修复建议中的 fixed_version 不存在 | 提示用户检查依赖仓库可用版本 |
依赖说明
运行环境
- Agent平台: 支持SKILL.md规范的任意AI Agent
- 操作系统: Windows / macOS / Linux
- Go 版本: 建议 1.18 及以上
- govulncheck: 需通过 go install 安装
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Go 工具链 | 运行时 | 必需 | 官方下载或系统包管理器 |
| govulncheck | 命令行工具 | 必需 | go install golang.org/x/vuln/cmd/govulncheck@latest |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
API Key 配置
- 本Skill基于指令驱动,无需额外API Key
可用性分类
- 分类: MD+EXEC()
- 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行安全扫描
案例展示
示例1:全模块安全扫描
输入: module_path=./myproject, severity_filter=all
处理: 执行 govulncheck ./... -> 解析结果 -> 按风险等级分类 -> 匹配修复路径
输出: 发现 3 个漏洞,1 个高危需要立即升级 相关技术文档
示例2:仅查看高危漏洞
输入: module_path=./myproject, severity_filter=high
处理: 扫描后过滤仅保留 high 等级漏洞
输出: 1 个高危漏洞 CVE-2024-12345,建议升级到 v1.2.5
常见问题
Q1: 如何开始使用 Go 漏洞扫描基础版?
A: 查看使用流程章节,确认已安装 Go 与 govulncheck,然后按"输入格式"提供 module_path 即可.
Q2: govulncheck 未安装怎么办?
A: 请执行 go install golang.org/x/vuln/cmd/govulncheck@latest 安装,并将 $GOPATH/bin 加入 PATH 环境变量.
Q3: Go 漏洞扫描基础版支持批量自动修复吗?
A: 不支持。基础版仅提供扫描与修复建议,不会自动改写 go.mod。如需批量自动修复、SBOM 生成、深度调用链分析,请升级至高级版.
Q4: 如何获取批量自动修复、SBOM 生成、深度调用链分析等高级能力?
A: 这些属于高级版能力。基础版聚焦 govulncheck 的基础扫描与评级,如需自动化的修复流程、软件物料清单与深度调用链分析,请升级至高级版.
错误处理
| 错误场景(续) | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 检查网络连接和配置后重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
已知限制
- 不支持批量自动修复(不会自动改写 go.mod 并执行 go mod tidy)
- 不支持 SBOM(软件物料清单)生成
- 不支持深度调用链分析(仅依赖 govulncheck 的基础 called 标记)
- 不支持自定义漏洞规则与白名单
- 不支持私有漏洞数据库接入
- 不支持对二进制文件(binary)的深度扫描(基础版仅支持 source 模式为主)
- 不支持渗透测试与未授权目标的安全测试
评论
加载中…