Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

CVE Search (cve-search)

CVE Search: Tools for searching vulnerabilities by CVE ID, product name, or vendor, with detailed vulnerability information and dependency auditing

Version: v0.3.0 Install: /plugin install cve-search@mearman

Skills

CVE Dependency Audit

Automatically scan your project's dependencies and identify known Common Vulnerabilities and Exposures (CVEs). Supports Node.js, Python, Ruby, Go, and Maven projects.

Quick Start

# Scan current directory
npx tsx scripts/audit.ts

# Scan specific directory
npx tsx scripts/audit.ts /path/to/project

# Only show critical vulnerabilities
npx tsx scripts/audit.ts --severity critical

# Get fresh data (bypass cache)
npx tsx scripts/audit.ts --no-cache

# Output as JSON
npx tsx scripts/audit.ts --json

Run from the cve-search plugin directory: ~/.claude/plugins/cache/cve-search/

Usage

npx tsx scripts/audit.ts [directory] [options]

Options

Option Description
[directory] Directory to scan (default: current directory)
--severity <level> Filter by severity: critical, high, medium, low
--no-cache Bypass cache and fetch fresh data
--json Output results as JSON
--help Show help message

Supported Package Managers

The skill automatically detects and parses dependency files from multiple ecosystems:

Node.js / npm

  • File: package.json
  • Detects: dependencies, devDependencies, peerDependencies
  • Example: "express": "^4.18.0"

Python / pip

  • File: requirements.txt
  • Detects: Pinned versions and ranges
  • Example: django==3.2.10 or requests>=2.25.0

Ruby / Bundler

  • File: Gemfile
  • Detects: Gem dependencies with versions
  • Example: gem 'rails', '~> 6.1.0'

Go / Go Modules

  • File: go.mod
  • Detects: Direct and indirect dependencies
  • Example: require github.com/user/repo v1.2.3

Java / Maven

  • File: pom.xml
  • Detects: Project and transitive dependencies
  • Example: <artifactId>log4j-core</artifactId>

How It Works

  1. Discovery: Scans for supported dependency files in the directory
  2. Parsing: Extracts package names and versions from each file
  3. Searching: Queries CVE database for each dependency
  4. Filtering: Identifies which vulnerabilities affect installed versions
  5. Reporting: Displays results sorted by severity

Output Format

Standard Output

🔍 Scanning for dependencies in /home/user/myproject...

Found dependency files: package.json, requirements.txt

Scanning 45 dependencies for CVEs...

📊 Audit Results

Total vulnerabilities found: 8
  🔴 Critical: 1 | 🟠 High: 2 | 🟡 Medium: 4 | 🔵 Low: 1

Showing 3 critical/high vulnerabilities:

📦 [email protected] - 2 vulnerability(ies)

  🔴 CVE-2024-1234
     Score: 9.2 | Buffer overflow in request parsing

  🟠 CVE-2024-5678
     Score: 7.1 | Path traversal in static file handling

─────────────────────────────────────────────────────────────

🐍 [email protected] - 1 vulnerability(ies)

  🟠 CVE-2024-9999
     Score: 7.5 | SQL injection in ORM query handling

─────────────────────────────────────────────────────────────

⚠️  Recommendations:
  1. Update dependencies to patched versions
  2. Review CVE details at https://cve.mitre.org/
  3. Use --no-cache for latest vulnerability data

JSON Output

npx tsx scripts/audit.ts --json

Returns structured data:

{
  "dependencies": [
    {
      "name": "express",
      "version": "4.18.0",
      "source": "npm",
      "file": "/path/to/package.json"
    }
  ],
  "vulnerabilities": [
    {
      "cveId": "CVE-2024-1234",
      "dependency": { "name": "express", "version": "4.18.0", ... },
      "severity": "CRITICAL",
      "score": 9.2,
      "summary": "Buffer overflow in request parsing",
      "affectsVersion": true
    }
  ],
  "summary": {
    "total": 8,
    "critical": 1,
    "high": 2,
    "medium": 4,
    "low": 1
  }
}

Use Cases

Security Audit Before Deployment

Verify your production dependencies are safe:

npx tsx scripts/audit.ts /app/backend --severity critical

Dependency Health Check

Regular checks to catch newly discovered vulnerabilities:

npx tsx scripts/audit.ts . --no-cache

Generate Compliance Reports

Export vulnerability data for security reviews:

npx tsx scripts/audit.ts . --json > vulnerability-report.json

Focus on Critical Issues

Alert on only the most severe vulnerabilities:

npx tsx scripts/audit.ts . --severity critical --json

Multi-Project Assessment

Audit multiple projects in a monorepo:

npx tsx scripts/audit.ts services/auth
npx tsx scripts/audit.ts services/api
npx tsx scripts/audit.ts services/web

Severity Levels

Level CVSS Range Icon Meaning
CRITICAL 9.0-10.0 🔴 Immediate patching required
HIGH 7.0-8.9 🟠 Schedule patching soon
MEDIUM 4.0-6.9 🟡 Monitor and plan updates
LOW 0.1-3.9 🔵 Low risk, update when convenient
UNKNOWN N/A Unable to determine severity

Caching

Results are cached for 24 hours by default. CVE information doesn't change frequently, so caching improves performance.

Use --no-cache when:

  • Running scheduled security audits
  • Recently discovered vulnerabilities may not be cached
  • Doing a fresh security assessment
  • Setting up CI/CD pipelines

Exit Codes

Code Meaning
0 Success (no vulnerabilities found or filtered)
1 Vulnerabilities found (or error occurred)

Examples

Audit Node.js project with package.json

cd ~/myapp
npx tsx scripts/audit.ts
# Scans package.json and devDependencies

Audit Python project

cd ~/myproject
npx tsx scripts/audit.ts . --severity high
# Scans requirements.txt, shows only HIGH and CRITICAL

Audit Go project with fresh data

npx tsx scripts/audit.ts /path/to/go/project --no-cache
# Scans go.mod with latest CVE data

Generate JSON report for all vulnerabilities

npx tsx scripts/audit.ts --json > audit-report.json
# Machine-readable format for parsing/integration

CI/CD Integration

# Fail if any critical vulnerabilities found
npx tsx scripts/audit.ts --severity critical
if [ $? -ne 0 ]; then
  echo "Critical vulnerabilities detected!"
  exit 1
fi

Limitations

  • Version matching: Uses simple semantic versioning comparison
  • Direct dependencies only: Scans only direct dependencies listed in source files (not transitive dependencies from lock files)
  • Ruby Gemfile: Only scans gems with explicit version specifications in Gemfile (use Gemfile.lock for complete dependency information)
  • Platform-specific vulnerabilities: Shows all known CVEs regardless of platform
  • Rate limiting: OpenCVE API may limit requests (automatic backoff handled)
  • Accuracy: Depends on CVE database accuracy and product name matching

Performance

  • Typical scan time: 10-60 seconds (depending on dependency count and network)
  • Caching: Significantly reduces repeat scan time
  • Parallel searches: Could be optimized with concurrent API requests

Troubleshooting

"No supported dependency files found"

  • Ensure your project has one of the supported files:
    • package.json (Node.js)
    • requirements.txt (Python)
    • Gemfile (Ruby)
    • go.mod (Go)
    • pom.xml (Maven)

Some dependencies not scanned

  • Dependency names must match OpenCVE database naming
  • Some packages use different names in CVE vs package manager
  • Try searching individual dependencies with cve-lookup skill

No vulnerabilities found

  • Your dependencies may be up-to-date
  • Try with --no-cache to check latest database
  • Verify dependency files are valid

Rate limit errors

  • Wait a moment and retry
  • Use cached results from previous queries
  • Reduce severity level to scan fewer CVEs

Related Skills

  • cve-lookup: Search for individual CVEs by ID or product name
  • Combine with version managers to get patches
  • Use results with dependency update tools

References

CVE Vulnerability Lookup

Search for Common Vulnerabilities and Exposures (CVEs) with detailed information including severity scores, affected software, and references.

Usage

npx tsx scripts/lookup.ts [cve-id | --product <name>] [options]

Arguments

Argument Required Description
cve-id No* Search by CVE ID (e.g., CVE-2024-1086)
--product No* Search for CVEs affecting a product

*Either cve-id or --product must be provided

Options

Option Description
--no-cache Bypass cache and fetch fresh data
--limit=<n> Limit results for product search (default: 10)

Output

CVE ID Search Output:

📋 CVE-2024-1086
Severity: HIGH (7.8)
Published: 2024-01-15 12:30
Modified: 2024-01-20 08:45

Summary:
  A buffer overflow vulnerability in Linux kernel network stack...

CVSS v3.1: 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)

Affected Software:
  1. Linux Kernel - Versions 5.15 to 6.6, 6.7-rc1 to 6.7
     Versions: 5.15.0, 5.16.0, 6.0.0, 6.1.0, 6.2.0 ... and 15 more

Weaknesses: CWE-120 (Buffer Copy without Checking Size of Input)

References:
  1. https://nvd.nist.gov/vuln/detail/CVE-2024-1086
  2. https://www.cisa.gov/news-events/alerts/2024/01/15/...
  3. https://github.com/advisories/GHSA-...

Quick Start

npx tsx scripts/lookup.ts CVE-2024-1086
npx tsx scripts/lookup.ts --product OpenSSL
npx tsx scripts/lookup.ts --product "Apache Struts" --limit 20

Run from the cve-search plugin directory: ~/.claude/plugins/cache/cve-search/

Data Sources

The skill uses OpenCVE API as the primary data source:

  • OpenCVE: Lightweight, JSON-based CVE database
  • Coverage: Official CVE list with detailed metadata
  • Update frequency: Synchronized with official CVE feeds
  • No authentication: Public API, free to use

How It Works

CVE ID Lookup

When searching by CVE ID (e.g., CVE-2024-1086):

  1. Queries OpenCVE API with exact CVE identifier
  2. Returns complete vulnerability details
  3. Shows severity, CVSS score, affected products, and references
  4. Results cached for 24 hours

Product Search

When searching by product name (e.g., --product OpenSSL):

  1. Queries OpenCVE API with product search
  2. Returns matching CVEs (limited to specified count)
  3. Shows all vulnerabilities affecting that product
  4. Useful for identifying software risks

Output Format

CVE ID Search Output

📋 CVE-2024-1086
Severity: HIGH (7.8)
Published: 2024-01-15 12:30
Modified: 2024-01-20 08:45

Summary:
  A buffer overflow vulnerability in Linux kernel network stack...

CVSS v3.1: 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)

Affected Software:
  1. Linux Kernel - Versions 5.15 to 6.6, 6.7-rc1 to 6.7
     Versions: 5.15.0, 5.16.0, 6.0.0, 6.1.0, 6.2.0 ... and 15 more

Weaknesses: CWE-120 (Buffer Copy without Checking Size of Input)

References:
  1. https://nvd.nist.gov/vuln/detail/CVE-2024-1086
  2. https://www.cisa.gov/news-events/alerts/2024/01/15/...
  3. https://github.com/advisories/GHSA-...

Product Search Output

Searching for CVEs affecting "OpenSSL"...

Found 12 CVE(s):

📋 CVE-2023-6129
Severity: HIGH (7.5)
Published: 2023-11-28 12:00

Summary: PKCS #7 Signature Verification Bypass...
[truncated]

📋 CVE-2023-5678
Severity: MEDIUM (5.3)
...

API Response Format

OpenCVE Response Structure

{
  "results": [
    {
      "cveid": "CVE-2024-1086",
      "summary": "Buffer overflow in kernel network stack",
      "severity": "HIGH",
      "cvss": 7.8,
      "cvss_v3": {
        "score": 7.8,
        "vector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
      },
      "created_at": "2024-01-15T12:30:00Z",
      "updated_at": "2024-01-20T08:45:00Z",
      "vendors": [
        {
          "name": "linux",
          "product": "Linux Kernel",
          "versions": ["5.15.0", "5.16.0", "6.0.0", ...]
        }
      ],
      "references": ["https://nvd.nist.gov/...", "..."],
      "cwe": ["CWE-120"]
    }
  ]
}

Use Cases

Security Audit

Check if deployed software has known vulnerabilities:

npx tsx scripts/lookup.ts --product "Apache Tomcat" --limit 50

Incident Response

Quickly look up a CVE mentioned in an alert:

npx tsx scripts/lookup.ts CVE-2024-1234

Dependency Scanning

Verify your project dependencies for known issues:

npx tsx scripts/lookup.ts --product "jQuery" --limit 20

Vulnerability Assessment

Research a specific vulnerability before patching:

npx tsx scripts/lookup.ts CVE-2024-1086 --no-cache

Caching

Results are cached for 24 hours by default. CVE information doesn't change frequently, so caching significantly improves performance.

Use --no-cache when:

  • You need the latest CVE information
  • Recently patched vulnerabilities may not be in cache
  • Doing a fresh security assessment

Limitations

  • Search coverage: Depends on OpenCVE's database (generally comprehensive for official CVE list)
  • Real-time updates: Cached for 24 hours (use --no-cache for fresh data)
  • Product name matching: Uses substring search (may return unrelated CVEs)
  • Rate limiting: OpenCVE API has rate limits (automatic backoff implemented)
  • Detailed info: Some older CVEs may have incomplete metadata

Exit Codes

Code Meaning
0 Success (CVE found or search completed)
1 CVE not found or error occurred

Examples

Find a specific vulnerability

npx tsx scripts/lookup.ts CVE-2024-1086
# Returns full details of the Linux kernel buffer overflow

Search for vulnerabilities in OpenSSL

npx tsx scripts/lookup.ts --product OpenSSL
# Returns up to 10 OpenSSL CVEs

Get all recent Django vulnerabilities

npx tsx scripts/lookup.ts --product "Django" --limit 30
# Returns up to 30 Django-related CVEs

Fresh lookup bypassing cache

npx tsx scripts/lookup.ts CVE-2024-1234 --no-cache
# Fetches latest data from OpenCVE API

Related Skills

  • Use with version checking tools to identify if your installed version is vulnerable
  • Combine with security scanning tools for comprehensive vulnerability assessment
  • Cross-reference with GitHub Advisories for ecosystem-specific information

Troubleshooting

"CVE not found"

  • CVE may not yet be in the public database
  • Try with --no-cache to check latest database
  • Verify CVE ID format: CVE-YYYY-NNNNN

No results for product search

  • Product name may not match database naming
  • Try alternate names (e.g., "Apache HTTP Server" vs "Apache")
  • Check OpenCVE documentation for correct product names

Rate limit error

  • Wait a moment and retry
  • Use cached results from previous queries
  • Limit number of simultaneous requests

References