name: vuln-scan description: Multi-language dependency security scan - Use Safety CLI and OSV-Scanner to quickly detect dependency vulnerabilities in Python/JS/Java projects
Vulnerability Scanner Skill
๐ Overview
Provides two lightweight vulnerability scanning tools:
- Safety CLI: Python/JS/Java smart scanning (AI enhanced)
- OSV-Scanner: Google open source, supports multiple ecosystems
๐ง Prerequisites
| Tool | Installation (All Platforms) |
|---|---|
| Safety CLI | pip install safety |
| OSV-Scanner | Download |
๐ Usage
Safety CLI Scan:
# Windows
.\.agent\skills\vuln-scan\scripts\safety-scan.ps1
# Linux/Mac
./.agent/skills/vuln-scan/scripts/safety-scan.sh
OSV-Scanner Scan:
# Windows
.\.agent\skills\vuln-scan\scripts\osv-scan.ps1
# Linux/Mac
./.agent/skills/vuln-scan/scripts/osv-scan.sh
CI/CD Mode:
.\.agent\skills\vuln-scan\scripts\safety-scan.ps1 -CI
# Sets exit code, breaks pipeline on failure
๐ฏ Scan Coverage
Safety CLI Support
- โ Python (requirements.txt, Pipfile, pyproject.toml)
- โ JavaScript/TypeScript (package.json, package-lock.json)
- โ Java (pom.xml, build.gradle)
OSV-Scanner Support
- โ Python, JavaScript, TypeScript
- โ Java, Go, Rust
- โ Ruby, PHP, C/C++
- โ And 20+ other ecosystems
๐ Output Example
๐ Vulnerability Scan - Safety CLI
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฆ Scanning: requirements.txt (23 dependencies)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ VULNERABILITY FOUND โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Package: urllib3 โ
โ Installed: 1.26.5 โ
โ Affected: <1.26.18 โ
โ ID: 51499 โ
โ โ
โ OWASP Top 10: A05:2021 - Security โ
โ Misconfiguration โ
โ โ
โ Description: โ
โ urllib3's request body can leak from โ
โ URLError exceptions โ
โ โ
โ Fix: Upgrade to urllib3>=1.26.18 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Scan Results:
๐ด Critical: 0
๐ High: 1
๐ก Medium: 2
๐ข Low: 0
๐ก Fix Suggestion:
pip install --upgrade urllib3>=1.26.18
โ๏ธ Configuration
Safety CLI (.safety-policy.yml)
# Security policy config
security:
# Ignore specific vulnerability IDs
ignore-vulnerabilities:
51499:
reason: "False positive - not using affected functionality"
expires: "2026-12-31"
# Ignore specific packages
ignore-packages:
- package: test-utils
reason: "Dev dependency only"
# Set CVSS threshold
continue-on-vulnerability-error: false
fail-security-check-threshold: 7.0
# Monitoring config
alert:
# Optional: Integrate Slack/Email alerts
on-vulnerability: slack
webhook: ${SAFETY_WEBHOOK_URL}
OSV-Scanner (osv-scanner.toml)
[[IgnoredVulns]]
id = "GHSA-xxxx-yyyy-zzzz"
reason = "Not applicable to our use case"
[[PackageOverrides]]
name = "example"
version = "1.0.0"
ecosystem = "npm"
ignore = true
๐ Auto-fix
Safety CLI Auto-upgrade:
# Generate fix commands
safety check --json | safety generate fixes
# Or apply fixes directly (use with caution)
safety check --apply-fixes
Manual Fix Examples:
# Python
pip install --upgrade package-name>=safe-version
# JavaScript
npm update package-name@safe-version
# Java (Maven)
# Modify version in pom.xml
๐ CI/CD Integration
GitHub Actions (Safety CLI)
name: Security Scan
on: [push, pull_request]
jobs:
safety-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Safety
run: pip install safety
- name: Run Safety Check
run: safety check --json
env:
SAFETY_API_KEY: ${{ secrets.SAFETY_API_KEY }}
GitLab CI (OSV-Scanner)
osv-scan:
image: golang:latest
script:
- go install github.com/google/osv-scanner/cmd/osv-scanner@latest
- osv-scanner --lockfile=package-lock.json
๐ FAQ
Q: Does Safety CLI require an API Key?
A: Free version has limits, recommend applying for free API Key: safety.com
Q: OSV-Scanner vs Safety CLI?
A:
- OSV-Scanner: Wider language support, community-driven
- Safety CLI: Stronger Python ecosystem, AI-enhanced detection
Q: How to use in offline environments?
A: Safety CLI can download offline database; OSV-Scanner supports local caching
Q: Too many false positives?
A: Use config files to suppress known false positives, keep reason notes