Skip to main content

CVE Binary Checker Tool

Project description

CVE Binary Tool quick start / README

Build Status codecov Gitter Code style: black On PyPI

The CVE Binary Tool scans for a number of common, vulnerable open source components such as openssl, libpng, libxml2, and expat to let you know if a given directory or binary file includes common libraries with known vulnerabilities., known as CVEs (Common Vulnerabilities and Exposures).

Usage: cve-bin-tool

You can also do python -m cve_bin_tool.cli which is useful if you're trying the latest code from the cve-bin-tool github.

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -u {now,daily,never,latest}, --update {now,daily,never,latest}
                        update schedule for NVD database (default: daily)
  -x, --extract         autoextract compressed files
  --disable-version-check
                        skips checking for a new version

Input:
  directory             directory to scan
  -i INPUT_FILE, --input-file INPUT_FILE
                        provide input filename
  -C CONFIG, --config CONFIG
                        provide config file

Output:
  -q, --quiet           suppress output
  -l {debug,info,warning,error,critical}, --log {debug,info,warning,error,critical}
                        log level (default: info)
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        provide output filename (default: output to stdout)
  --html-theme HTML_THEME
                        provide custom theme directory for HTML Report
  -f {csv,json,console,html}, --format {csv,json,console,html}
                        update output format (default: console)
  -c CVSS, --cvss CVSS  minimum CVSS score (as integer in range 0 to 10) to
                        report (default: 0)
  -S {low,medium,high,critical}, --severity {low,medium,high,critical}
                        minimum CVE severity to report (default: low)

Checkers:
  -s SKIPS, --skips SKIPS
                        comma-separated list of checkers to disable
  -r RUNS, --runs RUNS  comma-separated list of checkers to enable

Note that if the CVSS and Severity flags are both specified, the CVSS flag takes precedence.

--input-file extends the functionality of csv2cve for other formats like JSON. It also allows cve-bin-tool to specify triage data so you can group issues which may have been mitigated (through patches, configuration, or other methods not detectable by our version scanning method) or mark false positives. Triage data can be re-used and applied to multiple scans. You can provide either CSV or JSON file as input_file with vendor, product and version fields. You can also add optional fields like remarks, comments, cve_number, severity.

Note that you can use -i or --input-file option to produce list of CVEs found in given vendor, product and version fields (Usage: cve-bin-tool -i=test.csv) or supplement extra triage data like remarks, comments etc. while scanning directory so that output will reflect this triage data and you can save time of re-triaging (Usage: cve-bin-tool -i=test.csv /path/to/scan).

Note: For backward compatibility, we still support csv2cve command for producing CVEs from csv but we recommend using new --input-file command instead.

You can use --config option to provide configuration file for the tool. You can still override options specified in config file with command line arguments. See our sample config files in the test/config

The 0.3.1 release is intended to be the last release to officially support python 2.7; please switch to python 3.6+ for future releases and to use the development tree. You can check our CI configuration to see what versions of python we're explicitly testing.

If you want to integrate cve-bin-tool as a part of your github action pipeline. You can checkout our example github action.

This readme is intended to be a quickstart guide for using the tool. If you require more information, there is also a user manual available.

How it works

This scanner looks at the strings found in binary files to see if they match certain vulnerable versions of the following libraries and tools:

Available checkers
avahi bash bind binutils busybox bzip2 cups
curl dovecot expat ffmpeg freeradius gimp gnutls
glibc gstreamer haproxy hostapd icecast icu irssi
kerberos libarchive libdb libgcrypt libjpeg libnss libtiff
libvirt lighttpd mariadb memcached ncurses nessus netpbm
nginx node openafs openldap openssh openssl openswan
openvpn png polarssl_fedora postgresql python qt radare2
rsyslog samba sqlite strongswan syslogng systemd tcpdump
varnish wireshark xerces xml2 zlib

All the checkers can be found in the checkers directory, as can the instructions on how to add a new checker. Support for new checkers can be requested via GitHub issues.

Limitations

This scanner does not attempt to exploit issues or examine the code in greater detail; it only looks for library signatures and version numbers. As such, it cannot tell if someone has backported fixes to a vulnerable version, and it will not work if library or version information was intentionally obfuscated.

This tool is meant to be used as a quick-to-run, easily-automatable check in a non-malicious environment so that developers can be made aware of old libraries with security issues that have been compiled into their binaries.

Requirements

To use the auto-extractor, you may need the following utilities depending on the type of file you need to extract. Belows are required to run the full test suite on linux:

  • file
  • strings
  • tar
  • unzip
  • rpm2cpio
  • cpio
  • ar
  • cabextract

Most of these are installed by default on many Linux systems, but cabextract and rpm2cpio in particular might need to be installed.

On windows systems, you may need:

  • ar
  • 7z
  • Expand

Windows has ar and Expand installed in default, but 7z in particular might need to be installed. If you wan to run our test-suite or scan a zstd compressed file, We recommend installing this 7-zip-zstd fork of 7zip. We are currently using 7z for extracting jar, apk, msi, exe and rpm files.

Feedback & Contributions

Bugs and feature requests can be made via GitHub issues. Be aware that these issues are not private, so take care when providing output to make sure you are not disclosing security issues in other products.

Pull requests are also welcome via git.

The CVE Binary Tool uses the Black python code formatter to keep coding style consistent; you may wish to have it installed to make pull requests easier. We've provided a pre-commit hook (in .pre-commit.config.yaml) so if you want to have the check run locally before you commit, you can install pre-commit and install the hook as follows from the main cve-bin-tool directory:

pip install pre-commit
pre-commit install

Security Issues

Security issues with the tool itself can be reported to Intel's security incident response team via https://intel.com/security.

If in the course of using this tool you discover a security issue with someone else's code, please disclose responsibly to the appropriate party.

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

cve-bin-tool-1.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

cve_bin_tool-1.1-py3.7.egg (1.4 MB view details)

Uploaded Source

cve_bin_tool-1.1-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file cve-bin-tool-1.1.tar.gz.

File metadata

  • Download URL: cve-bin-tool-1.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for cve-bin-tool-1.1.tar.gz
Algorithm Hash digest
SHA256 082534e27a149d4bfff6def6e64b1a213ea80c27f1662257d79c69482348625d
MD5 ec4dab29e84cfea2b2898bd835f0cd67
BLAKE2b-256 e598bcb0fc1226ea26332fef463bfd4f0fe90c590729c52a6535da754d107528

See more details on using hashes here.

File details

Details for the file cve_bin_tool-1.1-py3.7.egg.

File metadata

  • Download URL: cve_bin_tool-1.1-py3.7.egg
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for cve_bin_tool-1.1-py3.7.egg
Algorithm Hash digest
SHA256 e3c6eb4f420c1baa8e59b26629b6f81605a5799f1ba08762a536b98541bd5e81
MD5 38d98305a301b9c7dbf34379593e3a60
BLAKE2b-256 59411255e0f6470572164682e539bcfac84f5f1914acc15506d392228df7e468

See more details on using hashes here.

File details

Details for the file cve_bin_tool-1.1-py3-none-any.whl.

File metadata

  • Download URL: cve_bin_tool-1.1-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for cve_bin_tool-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cb55a72e990ff4b92d4e23cbcf6bc81b8b76aa11eeae508270c0bb945e7792dc
MD5 20cd524e42a28df14bf9e0ebd9a5cd72
BLAKE2b-256 74c72495366968bf951547ed385df69fd043e27a1ab5c2c0797cd4cdb50d6c14

See more details on using hashes here.

Supported by

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