Skip to main content

Python CLI for vFeed Vulnerability and Threat Intelligence

Project description

vfeed



pyvfeed - Python CLI for vFeed Vulnerability and Threat Intelligence

pyvfeed is a Python command-line tool for querying the vFeed correlated vulnerability and threat intelligence database. It produces structured JSON output covering CVE information, CVSS 2/3/4 scoring, EPSS, KEV, MITRE ATT&CK, advisories, exploits, patches, detection rules, and more.


Requirements

  • Python 3.9+
  • boto3 — licensed DB updates via AWS S3
  • pyyaml — YAML export support
  • urllib3 / stdlib urllib — demo DB download

Install all dependencies:

pip install -r requirements.txt

Quick Start

1. Download the demo DB

Downloads the demo vFeed DB and checks for updates automatically.

python pyvfeed.py --download-demo-db
[+] Checking demo DB update status ...
    [-] Fetching remote checksum from '...' ...
    [-] Remote checksum: a3f1...
    [-] Downloading demo DB 'vfeed.db.tgz' ...
    [-] Unpacking ...
[+] Cleaning tmp downloads ...

2. Set the DB file permanently

Save the DB path so every subsequent command uses it without needing --db:

python pyvfeed.py --set-dbfile /path/to/vfeed.db
[+] DB file saved to /path/to/pyvfeed/.pyvfeedrc: /path/to/vfeed.db

This writes a .pyvfeedrc file in the project directory. All future runs pick it up automatically.

3. Override the DB for a single run

Use --db to point at a different database without changing .pyvfeedrc:

python pyvfeed.py --db /tmp/other.db --information CVE-2017-9805

DB resolution order: common/config.py.pyvfeedrc--db


Database Management

Show DB schema

python pyvfeed.py --schema

Prints all CREATE TABLE and CREATE INDEX statements from the SQLite3 DB.

Update licensed DB

Requires valid subscription keys in common/config.py:

python pyvfeed.py --update
[+] Checking update status ...
    [-] Checksum verification a3f1...
    [-] Already updated
[+] Cleaning tmp downloads ...

If the local DB is out of date, it downloads and unpacks the latest version automatically.

Version info

python pyvfeed.py --version
{
  "title": "Python CLI for vFeed Vulnerability and Threat Intelligence - Pro Edition",
  "build": "2.0.0",
  "support": "support@vfeed.io"
}

Vulnerability Queries

All query commands accept a CVE or CPE identifier and return JSON.

Information

Basic vulnerability metadata including NVD status and triage flags when available.

python pyvfeed.py --information CVE-2017-9805
{
  "information": {
    "description": [
      {
        "id": "CVE-2017-9805",
        "parameters": {
          "published": "2017-09-05T17:29Z",
          "modified": "2019-10-03T00:03Z",
          "summary": "The REST Plugin in Apache Struts 2.1.2 ...",
          "vuln_status": "Analyzed",
          "source_identifier": "security@apache.org",
          "has_exploits": true,
          "has_kev_cisa": true,
          "has_patches": true,
          "has_advisory": true,
          "risk_score": 0.94
        }
      }
    ],
    "references": [
      { "vendor": "MISC", "url": "https://..." }
    ]
  }
}

Classification

CPE targets, affected packages and CWE weaknesses with MITRE ATT&CK ranking.

python pyvfeed.py --classification CVE-2017-9805

Risk

CVSS 2, CVSS 3, CVSS 4 (when available), EPSS probability and CISA KEV catalog entry.

python pyvfeed.py --risk CVE-2017-9805
{
  "risk": {
    "cvss": {
      "cvss2": {
        "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P",
        "base_score": "6.8",
        ...
      },
      "cvss3": {
        "vector": "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
        "base_score": "8.1",
        ...
      },
      "cvss4": {
        "vector": "CVSS:4.0/AV:N/AC:L/...",
        "base_score": "9.3",
        ...
      }
    },
    "epss": {
      "probability": 0.95975,
      "percentile": 0.99987
    },
    "kev": {
      "id": "CISA:BOD 22-01",
      "parameters": {
        "date_added": "2021-11-03",
        "date_due": "2022-05-03",
        "name": "Apache Struts Multiple Versions Remote Code Execution Vulnerability",
        "vendor": "Apache",
        "product": "Struts",
        "required_action": "Apply updates per vendor instructions.",
        "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog"
      }
    }
  }
}

cvss4 is omitted when no CVSS 4.0 entry exists for the CVE.

Advisory

Top advisories from the advisory database for a given CVE.

python pyvfeed.py --advisory CVE-2017-9805
[
  {
    "type": "vendor",
    "source": "Apache",
    "id": "S2-052",
    "link": "https://cwiki.apache.org/confluence/display/WW/S2-052"
  },
  ...
]

MITRE CWE and ATT&CK

CWE weaknesses and resolved ATT&CK techniques via the CVE → CWE → CAPEC → ATT&CK chain.

python pyvfeed.py --mitre CVE-2017-9805
{
  "cve_id": "CVE-2017-9805",
  "weaknesses": [
    {
      "cwe_id": "CWE-502",
      "title": "Deserialization of Untrusted Data",
      "class": "weakness",
      "url": "https://cwe.mitre.org/data/definitions/502.html",
      "attack_techniques": [
        {
          "id": "T1059",
          "name": "Command and Scripting Interpreter",
          "tactic": "execution",
          "description": "...",
          "url": "https://attack.mitre.org/techniques/T1059/"
        }
      ]
    }
  ]
}

Inspection

Remote and local vulnerability scanner signatures (Nessus, OpenVAS, etc.).

python pyvfeed.py --inspection CVE-2017-9805

Exploitation

Exploits and PoCs from ExploitDB, Metasploit and other sources.

python pyvfeed.py --exploitation CVE-2017-9805

Defense

Vendor patches, security bulletins, IDS/IPS rules (Snort, Suricata, Juniper).

python pyvfeed.py --defense CVE-2017-9805

Export

Export all metadata for a CVE to a JSON file in the configured export path.

python pyvfeed.py --export CVE-2017-9805
# Produces: CVE-2017-9805.json

Search

Search by CVE

Returns basic info and any available exploits.

python pyvfeed.py --search cve CVE-2017-9805

Search by CPE

Accepts both CPE 2.2 (cpe:/) and CPE 2.3 (cpe:2.3:) formats.

python pyvfeed.py --search cpe "cpe:2.3:a:apache:struts:2.3.5:*:*:*:*:*:*:*"
python pyvfeed.py --search cpe "cpe:/a:apache:struts:2.3.5"

Search by CWE

Returns all CVEs associated with a CWE identifier.

python pyvfeed.py --search cwe CWE-502
{
  "id": "CWE-502",
  "parameters": {
    "title": "Deserialization of Untrusted Data",
    "class": "weakness",
    "url": "https://cwe.mitre.org/data/definitions/502.html"
  },
  "vulnerability": [
    "CVE-2017-9805",
    "CVE-2019-0232",
    ...
  ]
}

Language Vulnerabilities

List CVEs related to a programming language, enriched with CVSS scores and metadata.

python pyvfeed.py --lang python
python pyvfeed.py --lang cpp
python pyvfeed.py --lang javascript
python pyvfeed.py --lang golang
python pyvfeed.py --lang java

Example output entry:

{
  "cve_id": "CVE-2021-3177",
  "summary": "Python 3.x through 3.9.1 has a buffer overflow ...",
  "cvss3_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
  "cpe23_id": "cpe:2.3:a:python:python:3.9.0:*:*:*:*:*:*:*",
  "cvss4_vector": "CVSS:4.0/AV:N/AC:L/...",
  "cvss4_base": "9.3",
  "vuln_status": "Analyzed",
  "has_exploits": true,
  "risk_score": 0.87
}

Package Vulnerabilities

List CVEs affecting a specific package, with an optional version range filter.

# All versions
python pyvfeed.py --pkgs wordpress

# Specific version range
python pyvfeed.py --pkgs openssl 1.0.1

Configuration

common/config.py

Default database and export paths, and subscription keys for licensed DB updates:

database = {
    "file": "vfeed.db",
    "path": "./"
}

export = {"path": "/tmp"}

subscription = {
    "access_key": "YOUR_ACCESS_KEY",
    "secret_key": "YOUR_SECRET_KEY",
    "plan":       "YOUR_PLAN"
}

.pyvfeedrc

Created automatically by --set-dbfile. Stored in the project directory:

{
  "dbfile": "/path/to/vfeed.db"
}

Full Help

python pyvfeed.py --help

usage: pyvfeed [-h] [--db FILE] [--set-dbfile FILE] [--schema] [--update]
               [--download-demo-db] [--information CVE|CPE]
               [--classification CVE|CPE] [--risk CVE|CPE]
               [--inspection CVE|CPE] [--exploitation CVE|CPE]
               [--defense CVE|CPE] [--advisory CVE] [--mitre CVE]
               [--export CVE|CPE] [--search TYPE ID] [--lang LANGUAGE]
               [--pkgs PACKAGE [PACKAGE ...]] [--version] [--plugin NAME TARGET]

Python CLI for vFeed Vulnerability and Threat Intelligence - Pro Edition

database:
  --db FILE            SQLite3 DB file to use (overrides config and .pyvfeedrc)
  --set-dbfile FILE    Permanently save DB file path to .pyvfeedrc
  --schema             Print DB schema to stdout
  --update             Update the vFeed database
  --download-demo-db   Download demo vFeed DB

vulnerability queries:
  --information CVE|CPE
  --classification CVE|CPE
  --risk CVE|CPE
  --inspection CVE|CPE
  --exploitation CVE|CPE
  --defense CVE|CPE
  --advisory CVE
  --mitre CVE
  --export CVE|CPE

search:
  --search TYPE ID     Search by type (cpe, cve, cwe) and identifier
  --lang LANGUAGE      List CVEs for a language
  --pkgs PACKAGE ...   List CVEs for a package and optional version

miscellaneous:
  --version            Show version and build info
  --plugin NAME TARGET Load and run a third-party plugin


Copyright (C) vFeed IO vFeed 2026.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvfeed-2.0.0.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyvfeed-2.0.0-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

File details

Details for the file pyvfeed-2.0.0.tar.gz.

File metadata

  • Download URL: pyvfeed-2.0.0.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pyvfeed-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7f5d49b6df20fb81085c26e938fc886a493139161fc7b8b640efc8ccc69e9a6c
MD5 b77e0936e2d258f2596d135b7cc85718
BLAKE2b-256 e3106339cb7c6a6d4fdacf2e1ac51c4614b045091bd26b2fd7c8bd1fa13f7f3a

See more details on using hashes here.

File details

Details for the file pyvfeed-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyvfeed-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 30.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pyvfeed-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3cf7f367ffbd21825492da2f1f7e95b7595781c3ce16436400df286e460070b
MD5 b7015f4168a284dc0c87b543417b6bc8
BLAKE2b-256 cf05d893887d19e31fa0d6193f1826f89874588ce48c65ce4107b39b45de302f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page