Skip to main content

search_vulns logo

A modular tool to search for known vulnerabilities, exploits and more across various data sources.

search_vulns release License PyPI downloads search-vulns.com up search_vulns contributors Python version

About · Quick Links · Modules · Installation · Usage · Wiki · License


About

search_vulns can be used to search for known vulnerabilities in software. To achieve this, it utilizes a locally built database containing various data sources about products, vulnerabilities, exploits, software recency and more. Since search_vulns is designed in a modular fashion, new data sources and extensions can be integrated easily. A complete list of all current modules and included data sources is provided in the Modules section.

You can either provide product titles like Apache 2.4.39 or a CPE 2.3 string like cpe:2.3:a:sudo_project:sudo:1.8.2:*:*:*:*:*:*:* as input. In addition, you can directly search for vulnerabilities like CVE-2023-1234 or GHSA-xx68-jfcg-xmmf by using a comma-separated list of IDs.

search_vulns can either be used as a CLI tool or via a web server. It is recommended to use the CLI tool for automated workflows that might be resource-constrained. Otherwise, using the web server is recommended, because it offers more features and flexibility. A public instance of the web server is available at https://search-vulns.com.

Modules

search_vulns' search engine is designed in a modular fashion. Therefore, new data sources can be integrated easily. The currently available modules and data sources are the following:

Module ID Description
nvd.search_vulns_nvd Integrates CVE information and exploits from the National Vulnerability (NVD) database
vulncheck.search_vulns_nvdpp Integrates additional enrichment of the CVE/NVD data via VulnCheck's NVD++ alongside its KEV data. Note that a VulnCheck account is required to access their data.
ghsa.search_vulns_ghsa Integrates CVE and non-CVE vulnerabilties from the GitHub Security Advisory (GHSA) database
exploit_db.search_vulns_edb Integrates publicly available exploits from the Exploit-DB
poc_in_github.search_vulns_poc_in_github Integrates exploit information from PoC-in-GitHub
misc.search_vulns_msf_exploits Integrates information about exploits in the Metasploit Framework
misc.search_vulns_nuclei Integrates information about Nuclei templates for CVEs
misc.search_vulns_kevintel Integrates KEV information from KEVIntel
end_of_life_date.search_vulns_eold Integrates software recency information from endoflife.date
epss.search_vulns_epss Integrates FIRST's EPSS scores for CVEs
cpe_search.search_vulns_cpe_search Matches a users natural language query to a CPE string via cpe_search and the NVD's official dictionary
linux_distro_backpatches.debian.search_vulns_debian Integrates backpatch information from the Debian Security Bug Tracker
linux_distro_backpatches.ubuntu.search_vulns_ubuntu Integrates backpatch information from the Ubuntu Security API via aquasecurity's repository
linux_distro_backpatches.redhat.
search_vulns_redhat
Integrates backpatch information from the Red Hat Security Data API via aquasecurity's repository
product_specific.search_vulns_nginx Integrates product / vendor specific advisories for nginx
product_specific.search_vulns_mssql Integrates product / vendor specific data for Microsoft SQL Server
euvd.search_vulns_euvd Integrates vulnerability IDs and KEV data from the EUVD

As this overview shows, modules can help in finding product IDs, vulnerabilities, extra information about vulnerabilities and extra information about the queried product. Examples of the latter two are exploits, CVSS or EPSS scores, or software recency information. Furthermore, modules can classify identified vulnerabilities as patched if they store and utilize special information related to the query, for example.

Have a look at the template module to get started with writing your own modules: src/search_vulns/modules/template/search_vulns_template.py.

Installation

The core of search_vulns can be installed as the lightweight Python package (search_vulns), optionally with a web server component. An extended installation can be performed, which enables you to build the local databases yourself instead of pulling them from the latest release on GitHub and to use MariaDB as database backend. As of now, there are no other functional differences.

Have a look at detailed instructions in the Wiki.

Usage

search_vulns's usage information is shown in the following:

usage: search_vulns [-h] [-u] [--full-update] [--full-update-module MODULE_ID [MODULE_ID ...]]
                    [--full-install] [-a] [-f {txt,md,ansi,json}] [-o OUTPUT] [-q QUERY]
                    [-c CONFIG] [-V] [--list-modules]
                    [--cpe-search-threshold CPE_SEARCH_THRESHOLD]
                    [--ignore-general-product-vulns] [--include-single-version-vulns]
                    [--use-created-product-ids]
                    [--created-product-ids-threshold CREATED_PRODUCT_IDS_THRESHOLD]
                    [--include-patched] [--api-key API_KEY] [--api-url API_URL]
                    [--query-file QUERY_FILE] [-i] [--vuln-count VULN_COUNT] [--md-cols MD_COLS]

Search for known vulnerabilities in software -- Created by Dustin Born (ra1nb0rn)

options:
  -h, --help            show this help message and exit
  -u, --update          Download the latest version of the the local vulnerability and software
                        database from GitHub repo
  --full-update         Fully (re)build the local vulnerability and software database
  --full-update-module MODULE_ID [MODULE_ID ...]
                        Fully (re)build the local database for the given module(s) in-place
  --full-install        Fully install search_vulns, including all dependencies (python packages,
                        system packages etc.)
  -a, --artifacts       Print JSON list of artifacts created during full update
  -f {txt,md,ansi,json}, --format {txt,md,ansi,json}
                        Output format: txt, json, ansi, or md (default: ansi (interactive), txt
                        (otherwise))
  -o OUTPUT, --output OUTPUT
                        File to write found vulnerabilities to
  -q QUERY, --query QUERY
                        A query, either a software title like 'Apache 2.4.39', a product ID
                        string (e.g. CPE 2.3) or a list of vuln IDs
  -c CONFIG, --config CONFIG
                        A config file to use (default: config.json)
  -V, --version         Print the version of search_vulns
  --list-modules        Print all available modules
  --cpe-search-threshold CPE_SEARCH_THRESHOLD
                        Similarity threshold used for matching a CPE to a query via the
                        cpe_search module
  --ignore-general-product-vulns
                        Ignore vulnerabilities that only affect a general product (i.e. without
                        version)
  --include-single-version-vulns
                        Include vulnerabilities that only affect one specific version of a
                        product when querying a lower version
  --use-created-product-ids
                        If no matching product ID exists in the software database, automatically
                        use matching ones created by search_vulns
  --created-product-ids-threshold CREATED_PRODUCT_IDS_THRESHOLD
                        Required similarity/match threshold to actually use a created product ID
                        (default: 0.5)
  --include-patched     Include vulnerabilities reported as (back)patched, e.g. by Debian
                        Security Tracker, in results
  --api-key API_KEY     API key for remote search (overrides SV_API_KEY env var)
  --api-url API_URL     API base URL (default: https://search-vulns.com/api/)
  --query-file QUERY_FILE
                        File with queries, one per line (# comments and blank lines skipped)
  -i, --interactive     Interactive mode: suggest product IDs, pick, then search
  --vuln-count VULN_COUNT
                        Max number of vulnerabilities per query (sorted by criticality)
  --md-cols MD_COLS     Columns for markdown format (default: id,cvss,description)

Note that when querying software with -q you have to put the software information in quotes if it contains any spaces. Also, to make multiple queries at once, you can use -q multiple times or use the interactive mode (-i). For one, a query can be a software name / title like 'Apache 2.4.39' or 'Wordpress 5.7.2'. Furthermore, a query can also be a CPE 2.3 string.

Here are some examples:

  • Query Sudo 1.8.2 for known vulnerabilities:
    $ search_vulns -q 'Sudo 1.8.2'
    [+] Sudo 1.8.2 (cpe:2.3:a:sudo_project:sudo:1.8.2:*:*:*:*:*:*:*/cpe:2.3:a:todd_miller:sudo:1.8.2:*:*:*:*:*:*:*)
    CVE-2019-14287 (CVSSv3.1/8.8): In Sudo before 1.8.28, an attacker with access to a Runas ALL sudoer account can bypass certain policy blacklists and session PAM modules, and can cause incorrect logging, by invoking sudo with a crafted user ID. For example, this allows bypass of !root configuration, and USER= logging, for a "sudo -u \#$((0xffffffff))" command.
    Exploits:  https://www.exploit-db.com/exploits/47502
               [...]
    Reference: https://nvd.nist.gov/vuln/detail/CVE-2019-14287, 2019-10-17
    CVE-2017-1000368 (CVSSv3.0/8.2): Todd Miller's sudo version 1.8.20p1 and earlier is vulnerable to an input validation (embedded newlines) in the get_process_ttyname() function resulting in information disclosure and command execution.
    Reference: https://nvd.nist.gov/vuln/detail/CVE-2017-1000368, 2017-06-05
    [...]
    
  • Query Moodle 3.4.0 for known vulnerabilities:
    $ search_vulns -q 'Moodle 3.4.0'
    [+] Moodle 3.4.0 (cpe:2.3:a:moodle:moodle:3.4.0:*:*:*:*:*:*:*)
    CVE-2018-14630 (CVSSv3.0/8.8): moodle before versions 3.5.2, 3.4.5, 3.3.8, 3.1.14 is vulnerable to an XML import of ddwtos could lead to intentional remote code execution. When importing legacy 'drag and drop into text' (ddwtos) type quiz questions, it was possible to inject and execute PHP code from within the imported questions, either intentionally or by importing questions from an untrusted source.
    Reference: https://nvd.nist.gov/vuln/detail/CVE-2018-14630, 2018-09-17
    CVE-2018-1133 (CVSSv3.0/8.8): An issue was discovered in Moodle 3.x. A Teacher creating a Calculated question can intentionally cause remote code execution on the server, aka eval injection.
    Exploits:  https://www.exploit-db.com/exploits/46551
    Reference: https://nvd.nist.gov/vuln/detail/CVE-2018-1133, 2018-05-25
    [...]
    
  • Explicitly retrieve information about CVE-2024-24824 and GHSA-q9q2-3ppx-mwqf:
    $ search_vulns -q 'CVE-2024-24824 GHSA-q9q2-3ppx-mwqf'
    [+] CVE-2024-24824 GHSA-q9q2-3ppx-mwqf ()
    CVE-2024-24824 (CVSSv3.1/8.8): Graylog is a free and open log management platform. Starting in version 2.0.0 and prior to versions 5.1.11 and 5.2.4, arbitrary classes can be loaded and instantiated using a HTTP PUT request to the `/api/system/cluster_config/` endpoint. Graylog's cluster config system uses fully qualified class names as config keys. To validate the existence of the requested class before using them, Graylog loads the class using the class loader. [...]
    Exploits:  https://github.com/Graylog2/graylog2-server/security/advisories/GHSA-p6gg-5hf4-4rgj
    Reference: https://nvd.nist.gov/vuln/detail/CVE-2024-24824, 2024-02-07
    GHSA-q9q2-3ppx-mwqf (CVSSv3.1/7.3): Graylog Allows Stored Cross-Site Scripting via Files Plugin and API Browser
    Reference: https://github.com/advisories/GHSA-q9q2-3ppx-mwqf, 2025-05-07
    
  • Retrieve open vulnerabilities for Squid 5.7-2 on Debian 12:
    $ search_vulns -q 'Squid 5.7-2 Debian 12'
    [...]
    
  • Retrieve open vulnerabilities for Apache Tomcat 9.0.70-2 on Ubuntu Plucky
    $ search_vulns -q 'Apache Tomcat 9.0.70-2 Ubuntu Plucky'
    [...]
    
  • Retrieve vulnerabilities, including backpatched ones, for Nginx 1.20.1-22 on RHEL 9.2 in JSON format:
    $ search_vulns -q 'Nginx 1.20.1-22 RHEL 9.2' -f json --include-patched
    [...]
    

License

The code of search_vulns in this repository is licensed under the MIT license, see here.

The data produced by search_vulns is licensed under the CC BY 4.0 license, see here.

View the licenses of the included data sources here.

Metadata

Release files for search-vulns 1.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for search-vulns 1.2.7
File Size Uploaded
search_vulns-1.2.7.tar.gz 855.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for search-vulns 1.2.7
File Interpreter ABI Platform
search_vulns-1.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / search_vulns-1.2.7.tar.gz

Download URL search_vulns-1.2.7.tar.gz
Size 855.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6a8172846ddafdfba72f678de62b830e0a3d57d6b0cee5d0cf56ff84c59de766
BLAKE2b-256 checksum
How to use checksums
e30facb951dbd8668279f79f408fb0e2b091ca0036a1a4610789c8239b7e8482
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / search_vulns-1.2.7-py3-none-any.whl

Download URL search_vulns-1.2.7-py3-none-any.whl
Size 877.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4bad91d6be40717920f5f0e48a9903300092521225d9314d487f2fcfe6089bde
BLAKE2b-256 checksum
How to use checksums
b231c9334d6cef86257784b8e77ada83f16f8dd19bc54c14de24308009675b2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.7 This release

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page