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 {json,txt,md,ansi}] [-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] [--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 {json,txt,md,ansi}, --format {json,txt,md,ansi}
                        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
  --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.6

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.6
File Size Uploaded
search_vulns-1.2.6.tar.gz 853.9 kB Details

Built distribution (wheel)

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

Total release size: 1.7 MB

Release files / search_vulns-1.2.6.tar.gz

Download URL search_vulns-1.2.6.tar.gz
Size 853.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e5ba9868b41c8a758a33ec15dd5a4624b49d2ba68a013ecaa7b5a71eb4343ff3
BLAKE2b-256 checksum
How to use checksums
85cf35b0ae8e05d71ad2dbc118cfc144a98991b34fc5f03836e90ca794056242
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 Sep 21, 2026.

Transparency log

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

Download URL search_vulns-1.2.6-py3-none-any.whl
Size 876.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8d080817e8a8297ae40736d6577b9f28a51d9932735cae283ec6726c27401e9
BLAKE2b-256 checksum
How to use checksums
2a5172a848a3b03940b5e777fe205579721fe32bea9ee90ae7705e6cea0df03e
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 Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

1.2.7

2 release files

This release

1.2.6 This release

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