返回 Skill 列表
extension
分类: 开发与工程无需 API Key

sca-security

软件成分分析技能,用于识别易受攻击的依赖项、许可证合规性和供应链安全。在扫描依赖项以查找CVE、分析SBOM(软件物料清单)、检查许可证合规性、审核npm/pip/maven/cargo包或评估供应链风险时应使用此技能。触发条件包括请求扫描依赖项、检查易受攻击的包、生成SBOM、分析许可证合规性或审核软件供应链。

person作者: jakexiaohubgithub

Software Composition Analysis (SCA)

Router skill for dependency security: SBOM generation, multi-source vuln correlation, license compliance, supply chain review, and reachability-driven triage. Optimized for polyglot repositories and PR-time lockfile review. Load the relevant workflow + ecosystem reference on demand — do not read the whole skill up front.

When to Use

  • Scanning project dependencies for known vulnerabilities (CVE / GHSA / OSV)
  • Generating an SBOM (CycloneDX or SPDX) for a repo, container, or binary
  • Reviewing a PR's lockfile delta for new vulns, license changes, malicious packages
  • Reachability analysis to prioritize the 5-15% of findings that are actually exploitable
  • License compliance against an allow/deny policy
  • Supply chain review: typosquatting, dependency confusion, malicious package triage
  • Ecosystem-specific audits: npm, yarn, pnpm, pip, poetry, Maven, Gradle, Go, Cargo, Ruby, Composer
  • CI/CD integration for continuous dependency scanning

Trigger Phrases

  • "scan dependencies", "check package vulnerabilities", "run npm audit"
  • "generate SBOM", "CycloneDX", "SPDX"
  • "license compliance", "audit licenses"
  • "supply chain", "typosquat", "dependency confusion", "malicious package"
  • "lockfile diff", "dep review", "PR dependency review"
  • "is this CVE reachable", "reachability analysis", "filter false positives"

When NOT to Use This Skill

  • First-party source code vulnerabilities (SQLi, XSS, SSRF, etc.) → use sast-orchestration. SCA looks at third-party deps only.
  • OS-level packages inside container images (apt, apk, rpm) → use container-security. (Overlap: Syft/Grype handle both; choose based on where the bulk of the work is.)
  • Infrastructure-as-Code misconfigurations (Terraform, K8s YAML) → use iac-security.
  • Live web-app runtime testing → use dast-automation.
  • LLM-specific supply chain (model weights, prompts, tool chains) → use llm-security.
  • Mobile app third-party libraries → this skill works, but android-pentest / ios-pentest add platform context (cocoapods, SPM, gradle android).

Decision Tree

Start
 ├── Have a PR that touches a lockfile / manifest?
 │    → workflows/lockfile_diff.md
 │
 ├── Need a baseline for a repo or container?
 │    → workflows/sbom_generation.md  → workflows/vuln_correlation.md (parallel: license_audit.md)
 │
 ├── Got 100+ vuln findings and need to prioritize?
 │    → workflows/reachability_analysis.md  (HIGH-VALUE, use extended thinking)
 │
 ├── New or unfamiliar package just showed up in a dep graph?
 │    → workflows/supply_chain_review.md + references/malicious_package_indicators.md
 │
 ├── License audit only?
 │    → workflows/license_audit.md
 │
 └── Ecosystem-specific question?
      → references/{npm_yarn_pnpm,python_pip_poetry,maven_gradle,go_modules,cargo,ruby_gems,php_composer}.md

Parallelism Hints

Run concurrently (independent):

  • SBOM generation is independent of vuln scanning — start SBOM, then fan out to Grype + OSV-Scanner + ecosystem-native tools while license + supply chain checks also run.
  • Per-ecosystem scans in polyglot repos are fully parallel (npm audit, pip-audit, cargo audit, etc.).
  • License audit and vuln correlation are independent — run concurrently.
  • OSV batch API: batch all package versions in one HTTP call; do not loop.
  • Registry metadata lookups for supply chain triage: parallel, one per package.

Must be sequential:

  • Vuln correlation after SBOM (scanner reads the SBOM).
  • Reachability analysis after vuln correlation (it refines findings).
  • Call-graph construction before reachability queries.
  • Lockfile diff classification before per-delta scans.

Sub-Agent Delegation

  • Polyglot monorepos: one sub-agent per ecosystem. Each runs the matching reference + native scanner + adds to a shared finding set.
  • PR review: one sub-agent per changed lockfile. Each applies workflows/lockfile_diff.md and reports deltas, then a root agent consolidates.
  • Large finding queue: shard by ecosystem or by package-prefix for reachability analysis; each sub-agent handles ~50 findings with the same call graph.
  • Supply chain triage at scale: one sub-agent per batch of ~10 new packages for metadata + tarball inspection.

Reasoning Budget

| Task | Budget | |------|--------| | SBOM generation | minimal — mechanical orchestration | | Vuln correlation / dedup | minimal — unless scanners disagree on version ranges | | License classification | low — policy lookup | | Lockfile diff classification | medium — distinguish regression vs pre-existing | | Reachability analysis | extended thinking — combines call graph + vuln metadata + taint + framework semantics | | Malicious package triage | extended thinking — weighing many weak signals; high cost of FP/FN | | Integrity hash mismatch (no version change) | extended thinking — possible registry compromise | | License expression parsing (dual-license, SPDX exprs) | medium |

Multimodal Hooks

  • Dependency graph visualizations: syft dir:. -o cyclonedx-json | cyclonedx-cli graph produces a graph you can screenshot into a PR comment for humans.
  • cargo tree -d, npm ls --all, mvn dependency:tree -Dverbose are better consumed as text — do not screenshot.
  • For reachability results, CodeQL's query result JSON is preferred over SARIF HTML render.

Structured Output

All findings MUST conform to schemas/finding.json. Key fields:

  • ecosystem, package_name, installed_version
  • vulnerable_range, fixed_version
  • cve, ghsa, osv_id
  • is_transitive, dependency_path[]
  • is_reachable (reachable / unreachable / unknown), reachability_evidence
  • exploitability_notes
  • license, license_risk
  • malicious_indicators[], finding_type
  • epss_score, kev

Priority rule (applies after correlation + reachability):

| Reachable | KEV | EPSS | CVSS | Priority | SLA | |-----------|-----|------|------|----------|-----| | yes | yes | any | any | P0 | 24h | | yes | no | >=0.5 | any | P1 | 7d | | yes | no | any | >=7 | P1 | 7d | | yes | no | <0.5 | <7 | P2 | 30d | | unknown | yes | any | any | P1 | investigate first | | unknown | no | any | >=9 | P2 | investigate first | | no (unreachable) | any | any | any | P3 | next dep-upgrade cycle |

CI/CD Integration

Run at three gates:

  • Pre-commit — lightweight ecosystem-native (npm audit --audit-level=high, pip-audit). Fast local feedback.
  • PRworkflows/lockfile_diff.md as a required check. Block on new high/critical vulns; comment on license / supply-chain flags.
  • Main / nightly — full workflows/sbom_generation.mdvuln_correlation.mdreachability_analysis.md. Publish SBOM as build artifact. Update Dependency-Track / CycloneDX server.

Use --exit-code 1 on the relevant scanner with --severity HIGH,CRITICAL (Trivy) or --fail-on high --only-fixed (Grype) to gate builds. Keep suppressions in tool-native config (.trivyignore, .snyk, deny.toml, suppressions.xml) with reason + expires fields — never suppress silently.

Remediation Strategy

Upgrade paths (see per-ecosystem reference for commands):

  1. Patch-level bump if fix is in a patch release → low risk.
  2. Minor bump if patch unavailable → test + ship.
  3. Major bump or fork → extended thinking; coordinate with owning team.
  4. Virtual patch / WAF rule if upgrade blocked → record in finding's exploitability_notes + set an expiry.
  5. Accept risk → only for is_reachable: "unreachable" + kev: false + epss < 0.2; document + set review date.

Workflow Index

| Workflow | Purpose | |----------|---------| | sbom_generation.md | Syft + CycloneDX + SPDX generation + validation | | vuln_correlation.md | Grype + OSV + ecosystem-native merge + KEV/EPSS enrichment | | license_audit.md | SBOM-driven license extraction + policy enforcement | | lockfile_diff.md | PR-time delta review across lockfiles (frontier-model favored) | | reachability_analysis.md | Call-graph-aware filtering — key workflow for triage | | supply_chain_review.md | Typosquatting, dependency confusion, malicious-package detection |

References Index

| Reference | Content | |-----------|---------| | npm_yarn_pnpm.md | Node.js ecosystem: manifests, scanners, install-script hardening | | python_pip_poetry.md | Python: pip/poetry/pdm/uv + hashed lockfiles + sdist risks | | maven_gradle.md | Java: Maven + Gradle + Log4Shell-class patterns | | go_modules.md | Go: govulncheck (built-in reachability), MVS, binary scanning | | cargo.md | Rust: cargo-audit + cargo-deny + geiger | | ruby_gems.md | Ruby: bundler-audit + RubySec | | php_composer.md | PHP: composer audit + FriendsOfPHP | | sbom_formats.md | CycloneDX 1.6 vs SPDX 2.3 field-by-field | | vuln_databases.md | NVD, OSV, GHSA, ecosystem DBs — coverage + gaps | | malicious_package_indicators.md | Signal catalog + triage matrix | | bounty_patterns_2024_2026.md | Post-2023 supply-chain bounty TTPs (Shai-Hulud 2.0 npm worm, tj-actions/changed-files compromise, CVE-2025-48384 git, transitive reachability) |

Templates Index

| Template | Purpose | |----------|---------| | sca_report.md | Final report format |

Tools

| Tool | Purpose | Install | |------|---------|---------| | syft | Multi-eco SBOM generator | brew install syft | | grype | SBOM + dir vuln scanner | brew install grype | | trivy | Multi-eco scanner (also containers/IaC) | brew install trivy | | osv-scanner | OSV-backed multi-eco, call analysis | go install github.com/google/osv-scanner/cmd/osv-scanner@latest | | govulncheck | Go official, reachability-aware | go install golang.org/x/vuln/cmd/govulncheck@latest | | pip-audit | Python, PyPA official | pipx install pip-audit | | cargo-audit | Rust, RustSec | cargo install cargo-audit | | cargo-deny | Rust, unified advisories + licenses + sources | cargo install cargo-deny | | cyclonedx-cli | SBOM convert / merge / validate | brew install cyclonedx-cli | | snyk | Commercial, multi-eco | npm install -g snyk | | socket | Supply chain risk scoring (npm/PyPI/Go/Rust) | npm install -g @socketsecurity/cli | | OWASP Dependency-Check | Java-focused, NVD-backed | https://github.com/jeremylong/DependencyCheck | | license-checker | npm license scan | npm install -g license-checker | | pip-licenses | Python license scan | pipx install pip-licenses | | go-licenses | Go license scan | go install github.com/google/go-licenses@latest |

Last Validated

2026-04. Tool minimum versions per ecosystem are listed at the bottom of each references/*.md. Advisory DBs (OSV, GHSA) are rolling — re-check coverage notes in references/vuln_databases.md for NVD backlog status.