Performs SCA dependency scanning with Snyk in CI/CD pipelines to detect OSS vulnerabilities, scan manifests/locks across languages, generate auto-fix PRs, check licenses, and monitor deployed apps via GitHub/GitLab/Jenkins.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cybersecurity-skills-zh:performing-sca-dependency-scanning-with-snykThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- 当应用程序使用可能包含已知漏洞的开源包时
不适用于扫描专有应用程序代码中的逻辑漏洞(使用 SAST),运行时漏洞检测(使用 DAST),或单独进行容器操作系统包扫描(使用 Trivy 作为免费替代方案)。
# 安装 Snyk CLI
npm install -g snyk
# 通过 Snyk 认证
snyk auth $SNYK_TOKEN
# 测试连接
snyk test --json | jq '.summary'
# .github/workflows/dependency-scan.yml
name: Dependency Security Scan
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 8 * * 1' # 每周一上午 8 点
jobs:
snyk-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: >
--severity-threshold=high
--fail-on=upgradable
--json-file-output=snyk-results.json
- name: Upload results to Snyk
if: always()
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: monitor
args: --project-name=${{ github.repository }}
- name: Upload SARIF
if: always()
run: |
npx snyk-to-html -i snyk-results.json -o snyk-report.html
# Python 项目扫描
snyk test --file=requirements.txt --severity-threshold=high --json > snyk-python.json
# Java/Maven 项目
snyk test --file=pom.xml --severity-threshold=medium --json > snyk-java.json
# Go 模块扫描
snyk test --file=go.mod --severity-threshold=high --json > snyk-go.json
# Docker 镜像依赖扫描
snyk container test myapp:latest --severity-threshold=high --json > snyk-container.json
# 单体仓库:扫描所有项目
snyk test --all-projects --severity-threshold=high --json > snyk-all.json
# IaC 扫描(附加功能)
snyk iac test terraform/ --severity-threshold=medium --json > snyk-iac.json
# .snyk 策略文件
version: v1.25.0
ignore:
SNYK-JS-LODASH-1018905:
- '*':
reason: "lodash 中的原型污染。在我们的使用场景中无法利用——用户输入不会到达受影响的函数。"
expires: 2026-06-01T00:00:00.000Z
created: 2026-02-23T00:00:00.000Z
SNYK-PYTHON-REQUESTS-6241864:
- '*':
reason: "requests 重定向处理中的 SSRF。已通过代理层的允许列表缓解。"
expires: 2026-04-01T00:00:00.000Z
patch: {}
# CI 失败的严重性阈值
failOnSeverity: high
# Snyk fix:为存在漏洞的依赖项生成修复 PR
snyk fix --dry-run # 预览更改
# 本地应用修复
snyk fix
# 通过 Snyk 控制台启用自动修复 PR:
# 1. 导航到组织设置 > 集成 > GitHub
# 2. 启用"自动修复拉取请求"
# 3. 设置"仅修复直接依赖"或"修复直接和传递依赖"
# 4. 配置目标分支(main 或 develop)
# 检查许可证合规性
snyk test --json | jq '.licensesPolicy'
# 通过组织设置配置 Snyk 许可证策略:
# - 批准的许可证:MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC
# - 限制的许可证:GPL-3.0, AGPL-3.0(著作权风险)
# - 未知许可证:标记为需人工审查
| 术语 | 定义 |
|---|---|
| SCA | 软件成分分析(Software Composition Analysis)——识别开源依赖项中的漏洞和许可证风险 |
| 传递依赖(Transitive Dependency) | 直接依赖项的依赖项,开发者通常看不到,但仍是漏洞攻击面 |
| 修复 PR(Fix PR) | Snyk 自动生成的拉取请求,将存在漏洞的依赖项升级到已修复版本 |
| Snyk Monitor | 持续监控模式,监视已部署项目中的新披露漏洞 |
| 漏洞利用成熟度(Exploit Maturity) | Snyk 对漏洞是否存在已知利用程序、概念验证或无已知利用的评估 |
| 可达漏洞(Reachable Vulnerability) | 应用程序代码实际调用到的函数中存在的漏洞,而非仅存在于依赖项中 |
| 许可证策略(License Policy) | 组织级规则,定义哪些开源许可证被批准、限制或需要审查 |
场景背景:Snyk 报告传递依赖项中存在严重 RCE 漏洞(Java 应用程序中的 log4j)。直接依赖项尚未发布补丁。
方法:
snyk test --json 并检查依赖路径,识别哪个直接依赖项引入了存在漏洞的传递依赖<dependencyManagement> 部分以强制使用传递依赖的安全版本overrides 部分以固定安全版本常见陷阱:以"我们不直接使用该函数"为由忽略传递漏洞是有风险的。攻击者可以跨依赖边界链接漏洞。版本覆盖可能会破坏直接依赖项和传递依赖项之间的 API 兼容性。
Snyk 依赖扫描报告
=============================
项目: org/web-application
清单: package.json
依赖项: 342(47 直接,295 传递)
扫描日期: 2026-02-23
漏洞摘要:
严重: 1 (1 可修复)
高危: 4 (3 可修复)
中危: 12 (8 可修复)
低危: 23 (15 可修复)
严重:
SNYK-JS-EXPRESS-1234567
包: [email protected](直接)
严重性: Critical (CVSS 9.8)
利用: Mature
修复: 升级至 [email protected]
路径: [email protected]
高危:
SNYK-JS-JSONWEBTOKEN-5678901
包: [email protected](传递)
严重性: High (CVSS 7.6)
利用: Proof of Concept
修复: 升级 [email protected](会同步升级 jsonwebtoken)
路径: [email protected] > [email protected]
许可证问题:
[RESTRICTED] GPL-3.0: [email protected](通过 other-pkg 传递)
质量门控: 失败(1 个严重漏洞有可用修复)
npx claudepluginhub killvxk/cybersecurity-skills-zhScans open-source dependencies for known vulnerabilities using Snyk in CI/CD pipelines. Generates automated fix PRs, checks license compliance, and monitors deployed applications against newly disclosed vulnerabilities.
Implements SCA with Snyk to scan open-source dependencies for vulnerabilities in CI/CD pipelines. Generates fix PRs, checks licenses, monitors apps, integrates with GitHub, GitLab, Jenkins.
Implements Software Composition Analysis (SCA) with Snyk to detect vulnerable open-source dependencies in CI/CD pipelines, generate automated fix PRs, check license compliance, and monitor deployed apps.