CISA Vulnerability Checker logo

CISA Vulnerability Checker

by yeger00

A Python tool that uses DuckDB to query CISA's Known Exploited Vulnerabilities catalog. It allows users to quickly check for recent CVEs or determine if a specific CVE is present in the CISA list.

View on GitHub

Last updated: N/A

CISA Vulnerability Checker

A Python tool that uses DuckDB to query CISA's Known Exploited Vulnerabilities catalog.

Features

  • Get all CVEs added in the last X days or hours
  • Check if a specific CVE exists in the list
  • Uses DuckDB's HTTPFS extension to read the JSON file directly from CISA's website

Installation

  1. Clone this repository:
git clone <repository-url>
cd <repository-name>
  1. Create a virtual environment (recommended):
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install the package in development mode:
pip install -e .

Usage

Get Recent CVEs

Get CVEs from the last 7 days:

cisa-vuln-checker recent-cves --days 7

Get CVEs from the last 24 hours:

cisa-vuln-checker recent-cves --hours 24

Check if a CVE Exists

cisa-vuln-checker check-cve CVE-2023-1234

Running the Server

To run the Model Context Protocol server:

uvicorn cisa_vuln_checker.server:app

This will start the server on the default port (8000). You can then interact with the CISA vulnerability checking tools through the MCP interface (/sse) or RESR (/rest).

Configuring the Server

Claude

To configure Claude to use the CISA vulnerability checker server, add the following to your Claude configuration file (usually located at ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "cisa": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8000/sse"
      ]
    }
  }
} 

Development

Running Tests

The project includes integration tests that test the CLI commands. To run the tests:

  1. Make sure you have the package installed in development mode (see Installation step 4)
  2. Run the tests:
pytest tests/

The tests will:

  • Test getting recent CVEs by days and hours
  • Test error handling when no arguments are provided
  • Test checking for existing and non-existing CVEs