---
name: "go-security-vulnerability-free"
description: "使用 govulncheck 识别 Go 模块安全漏洞的基础能力，覆盖漏洞扫描、风险评级与基础修复建议。Use when 需要安全检测、合规审计、漏洞扫描、加密防护时使用。不适用于渗透测试未授权目标。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互，无需复杂配置即开即用。输出结果可直接使用，减少二次加工成本。"
license: MIT
allowed-tools: read
compatibility: "Requires LLM with tool-use capability"
metadata:
  displayName: "Go漏洞扫描基础版"
  version: "0.1.0"
  summary: "使用 govulncheck 识别 Go 模块安全漏洞的基础能力，覆盖漏洞扫描、风险评级与基础修复建议。"
  tags:
    - "Security"
  source: "SkillHub"
  converted_at: "2026-07-22T17:58:36"
tools:
  - exec
  - read
---
# Go 漏洞扫描基础版

## 核心能力

- govulncheck 漏洞扫描：调用 govulncheck 对当前 Go 模块进行扫描，识别依赖项中的已知漏洞（CVE / GHSA）
- 漏洞风险评级：依据 CVSS 评分与影响范围，将漏洞划分为高、中、低三级
- 基础修复建议：针对每个漏洞提供依赖升级路径（升级到哪个版本的依赖可修复）
- 扫描结果汇总：按漏洞数量、风险等级、受影响模块汇总扫描结果
- 调用可达性基础识别：标注漏洞函数是否在当前代码中被实际调用（govulncheck 的 called 标记）
#
## 适用场景

| 场景 | 输入 | 输出 |
|------|------|------|
| 项目安全扫描 | Go 模块根目录 | 漏洞清单与风险评级 |
| 依赖升级评估 | go.mod 文件 | 漏洞修复所需的依赖版本 |
| 漏洞排查 | 特定 CVE 编号 | 该漏洞在本项目中的影响范围 |
| 合规检查 | 模块路径 | 基础合规报告（漏洞数量与等级） |

**不适用于**：批量自动化修复（如全量 go.mod 改写）、SBOM（软件物料清单）生成、深度调用链分析、自定义漏洞规则、渗透测试等场景（请使用高级版）

## 使用流程

1. 确认运行环境已安装 Go 与 govulncheck，且当前目录为 Go 模块根目录
2. 执行 govulncheck ./... 扫描当前模块
3. 解析扫描结果，按风险等级分类
4. 为每个漏洞匹配修复路径（依赖升级建议）
5. 输出漏洞清单、风险评级与修复建议

## 输入格式

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| 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 |

## 输出格式

```json
{
  "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 | 提示用户运行安装命令后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 不是 Go 模块 | 当前目录无 go.mod | 提示切换到 Go 模块根目录或执行 go mod init |
| 网络错误 | 漏洞数据库拉取失败 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令，建议配置 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响应超时或无响应 | 网络延迟或模型负载过高 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接，执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令请求；确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求，参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述，补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求；检查命令权限设置 |

## 已知限制

- 不支持批量自动修复（不会自动改写 go.mod 并执行 go mod tidy）
- 不支持 SBOM（软件物料清单）生成
- 不支持深度调用链分析（仅依赖 govulncheck 的基础 called 标记）
- 不支持自定义漏洞规则与白名单
- 不支持私有漏洞数据库接入
- 不支持对二进制文件（binary）的深度扫描（基础版仅支持 source 模式为主）
- 不支持渗透测试与未授权目标的安全测试

## 安全注意事项

| 风险类型 | 防范措施 |
|----------|---------|
| API密钥泄露 | 通过环境变量配置，禁止硬编码到代码或配置文件中 |
| 命令执行风险 | 仅执行白名单命令，避免拼接用户输入到命令行参数中 |
| 网络通信安全 | 使用HTTPS协议，验证SSL证书有效性 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |

使用前请确认已阅读依赖说明章节，确保运行环境满足安全要求。

## 效率量化分析

| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|----------|---------|-----------|---------|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |

## 差异化对比

| 对比维度 | 本技能 | 传统手动方式 | 通用脚本工具 |
|---------|------------|-------------|------------|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 核心功能 | 通用场景 | 通用场景 |

## 核心功能

- **自动化执行**: 基于指令驱动的自动化流程
- **文件处理**: 支持多种文件格式的读取、解析和写入操作
- **API集成**: 通过标准化接口调用外部服务并处理响应
- **命令执行**: 在安全沙箱中执行系统命令并收集结果