Offensive Security Tool: CVE Binary Tool by Intel
Reading Time: 4 Minutes
Offensive Security Tool: CVE Binary Tool by Intel
CVE Binary Tool quick start / README
The CVE Binary Tool developed by Intel Corporation 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).
See the documentation and quickstart guide
Usage: cve-bin-tool <directory/file to scan>
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:
-e, --exclude exclude path while scanning
-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)
--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
Deprecated:
-x, --extract autoextract compressed files
CVE Binary Tool autoextracts all compressed files by default now
See Also: Offensive Security Tool: Hashcat
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 their 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, they still support csv2cve
command for producing CVEs from csv but they 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 their 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 their CI configuration to see what versions of python they are explicitly testing.
If you want to integrate cve-bin-tool as a part of your github action pipeline. You can checkout their 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 | gcc | 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.
See Also: Complete Offensive Security and Ethical Hacking Course
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.
See Also: Hacking stories: MafiaBoy, the hacker who took down the Internet
Requirements
To use the auto-extractor, you may need the following utilities depending on the type of file you need to extract. The utilities below 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 want to run our test-suite or scan a zstd compressed file, they recommend installing this 7-zip-zstd fork of 7zip. They are currently using 7z
for extracting jar
, apk
, msi
, exe
and rpm
files.
If you get an error about building libraries when you try to install from pip, you may need to install the Windows build tools. The Windows build tools are available for free from https://visualstudio.microsoft.com/visual-cpp-build-tools/
If you get an error while installing brotlipy on Windows, installing the compiler above should fix it.
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 and isort to keep coding style consistent; you may wish to have it installed to make pull requests easier. They have 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