自动化 Snyk 安全漏洞扫描、GitHub 问题报告和自动修复 PR 创建,适用于仓库安全扫描。
Snyk 弱点扫描器是一项面向实际任务的技能,主要用于使用 Snyk 对 GitHub 仓库进行自动安全弱点扫描和修复;What It Does.;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 Snyk 对 GitHub 仓库执行自动化安全漏洞扫描与修复。
使用本技能前,请确保满足以下条件:
npm install -g snyk,并已完成认证:snyk authbrew install gh,并已完成认证:gh auth loginbrew install jq(用于 JSON 数据处理)扫描仓库 → 创建 GitHub Issue → 自动修复 → 创建 PR
critical — 仅扫描严重性为 critical 的漏洞high — 扫描 high 及以上严重性的漏洞(默认值)medium — 扫描 medium 及以上严重性的漏洞low — 扫描所有严重性等级的漏洞运行完整的扫描 → 报告 → 修复流程:
./scripts/run-full-workflow.sh[base-branch] [severity] [skip-issues] [skip-fix] [dry-run]
参数说明:
repo-url — 完整的 GitHub URL(必填)base-branch — PR 的目标分支(默认为 dev)severity — 逗号分隔的严重性等级(默认为 high,critical)skip-issues — 设为 true 则跳过 GitHub Issue 创建(默认为 false)skip-fix — 设为 true 则跳过自动修复(默认为 false)dry-run — 设为 true 则模拟执行,不实际修改任何内容(默认为 false)示例:
# 使用默认参数执行完整工作流 ./scripts/run-full-workflow.sh https://github.com/owner/repo # 仅扫描,跳过修复步骤 ./scripts/run-full-workflow.sh https://github.com/owner/repo dev high false true false # Dry run:执行全部步骤但不产生实际变更 ./scripts/run-full-workflow.sh https://github.com/owner/repo dev high,critical false false true # 仅执行修复(跳过 Issue 创建),目标分支为 main ./scripts/run-full-workflow.sh https://github.com/owner/repo main high true false false
./scripts/snyk-scan.sh[output-file] [severity-filter]
生成包含漏洞详细信息的 JSON 文件。
示例:
./scripts/snyk-scan.sh https://github.com/owner/repo results.json high,critical
python3 scripts/create-github-issues.py
为每个存在漏洞的软件包创建一个 GitHub Issue,并将该软件包涉及的所有 CVE 合并在同一 Issue 中。
./scripts/snyk-auto-fix.sh[base-branch] [dry-run]
应用 Snyk 提供的修复方案,并向指定分支提交 Pull Request。
示例:
./scripts/snyk-auto-fix.sh https://github.com/owner/repo dev false
package.json)requirements.txt、Pipfile、pyproject.toml)build.gradle)pom.xml)创建的 Issue 包含以下内容:
security、vulnerability、snyk防重复机制:若同一软件包已存在相似 Issue,则不会重复创建。
生成的 PR 包含以下内容:
snyk-fix-security、dependencies、snyk如需定期执行扫描,可通过系统 cron 调用本技能:
# 添加至 cron,每天上午 9 点执行扫描 0 9 * * * cd ~/.openclaw/workspace/skills/snyk-vulnerability-scanner && ./scripts/run-full-workflow.sh https://github.com/owner/repo
或通过 OpenClaw 内置 cron 实现直接集成:
{
"name": "snyk-daily-scan",
"schedule": { "kind": "cron", "expr": "0 9 * * *" },
"payload": {
"kind": "agentTurn",
"message": "Run Snyk vulnerability scan on https://github.com/owner/repo and create fixes for dev branch"
}
}
| 脚本 | 用途 |
|---|---|
run-full-workflow.sh |
主入口脚本 — 执行完整工作流 |
snyk-scan.sh |
扫描仓库并输出 JSON 格式结果 |
create-github-issues.py |
根据扫描结果创建 GitHub Issue |
snyk-auto-fix.sh |
应用修复并创建 PR |
“Snyk 未认证”
→ 执行:snyk auth
“GitHub CLI 未认证”
→ 执行:gh auth login
“未发现漏洞”
→ 登录 Snyk 控制台查看项目状态;可能需要先手动导入仓库
脚本执行时报 “Permission denied”
→ 执行:chmod +x scripts/*.sh
自动修复失败
→ 部分漏洞不支持自动修复;请查阅 Snyk 控制台提供的修复建议
Dry run 显示有变更,但实际运行无效果
→ 检查 Snyk 是否为对应漏洞提供了可应用的修复建议;部分漏洞需手动更新依赖版本
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章