skills/sca-security/SKILL.md
Software Composition Analysis: find vulnerable dependencies, correlate CVE/GHSA/OSV across ecosystems, generate CycloneDX/SPDX SBOMs, assess license compliance, and run reachability-aware triage to suppress unexploitable findings. Use when scanning package dependencies (npm, PyPI, Maven, Cargo, Go, RubyGems, Composer), reviewing PR lockfile diffs, generating SBOMs, auditing licenses, hunting malicious packages, or auditing the software supply chain. Triggers on requests to scan dependencies, check vulnerable packages, generate SBOM, license compliance, typosquat/dependency-confusion review, or reachability-based vuln triage.
npx skillsauth add hardw00t/ai-security-arsenal sca-securityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
sast-orchestration. SCA looks at third-party deps only.container-security. (Overlap: Syft/Grype handle both; choose based on where the bulk of the work is.)iac-security.dast-automation.llm-security.android-pentest / ios-pentest add platform context (cocoapods, SPM, gradle android).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
Run concurrently (independent):
Must be sequential:
workflows/lockfile_diff.md and reports deltas, then a root agent consolidates.| 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 |
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.All findings MUST conform to schemas/finding.json. Key fields:
ecosystem, package_name, installed_versionvulnerable_range, fixed_versioncve, ghsa, osv_idis_transitive, dependency_path[]is_reachable (reachable / unreachable / unknown), reachability_evidenceexploitability_noteslicense, license_riskmalicious_indicators[], finding_typeepss_score, kevPriority 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 |
Run at three gates:
npm audit --audit-level=high, pip-audit). Fast local feedback.workflows/lockfile_diff.md as a required check. Block on new high/critical vulns; comment on license / supply-chain flags.workflows/sbom_generation.md → vuln_correlation.md → reachability_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.
Upgrade paths (see per-ecosystem reference for commands):
exploitability_notes + set an expiry.is_reachable: "unreachable" + kev: false + epss < 0.2; document + set review date.| 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 |
| 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) |
| Template | Purpose | |----------|---------| | sca_report.md | Final report format |
| 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 |
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.
development
Static Application Security Testing orchestration — run and compose Semgrep, CodeQL, Bandit, gosec, Brakeman, SpotBugs, ESLint; author custom rules; ingest SARIF; triage and rank findings by exploitability. Use this skill when asked to scan code for vulnerabilities, write Semgrep/CodeQL rules, triage SAST output, reduce false positives, or integrate SAST into CI/CD. Triggers on phrases like 'scan this code', 'write a Semgrep rule', 'triage these findings', 'SARIF', 'SAST in CI', or when a repo is handed over for a security review.
testing
Internal network and Active Directory penetration testing skill for corporate environments. Use when performing authorized internal network assessments, AD attack path analysis, lateral movement, privilege escalation, and post-exploitation across Windows/Linux estates. Covers BloodHound, Impacket, NetExec/CrackMapExec, Responder, Rubeus, mimikatz, certipy. Triggers on requests to pentest internal networks, attack AD, perform lateral movement, Kerberoast, DCSync, or escalate privileges.
tools
LLM and AI application security testing skill for prompt injection (direct, indirect, multimodal), system-prompt extraction, RAG poisoning, memory poisoning, MCP server injection, skill-file injection, agentic tool misuse, computer-use UI injection, and excessive agency. Authorization required — this skill tests AI systems you are explicitly permitted to assess. Triggers on requests to test LLM / AI-agent / RAG / MCP / computer-use security, perform prompt injection, extract system prompts, poison RAG or memory, audit agent tool use, or evaluate AI guardrails.
development
iOS mobile application penetration testing with Frida and Objection on jailbroken or non-jailbroken devices. Use for static + dynamic analysis of IPAs, SSL pinning / jailbreak / biometric bypass, keychain & local-storage extraction, network interception, and OWASP MASTG iOS assessments. Triggers on requests to pentest iOS apps, analyze IPAs, bypass iOS security controls, or produce MASTG-aligned findings.