
Base de datos local de vulnerabilidades CVE/CPE con búsqueda, clasificación, interfaz web y API para análisis y gestión de vulnerabilidades sin conexión.

cve-search es una herramienta para importar CVE (Common Vulnerabilities and Exposures) y CPE (Common Platform Enumeration) en una MongoDB para facilitar la búsqueda y el procesamiento de CVEs.
El objetivo principal del software es evitar realizar búsquedas directas y públicas en las bases de datos públicas de CVE. Las búsquedas locales suelen ser más rápidas y puede limitar sus consultas sensibles a través de Internet.
cve-search incluye un backend para almacenar vulnerabilidades e información relacionada, una intuitiva interfaz web para buscar y gestionar vulnerabilidades, una serie de herramientas para consultar el sistema y una interfaz API web.
cve-search es utilizado por muchas organizaciones. Los servicios públicos de CVE de CIRCL también estaban impulsados por cve-search, pero desde entonces han sido reemplazados por Vulnerability-Lookup.
Este documento le brinda información básica sobre cómo comenzar con cve-search. Para obtener más información, consulte la documentación en la carpeta /doc de este proyecto.
Consulte la documentación para comenzar.
Puede buscar en la base de datos usando search.py.
usage: search.py [-h] [-p P [P ...]] [--only-if-vulnerable] [--strict_vendor_product] [--lax] [-f F] [-c C] [-o O]
[-l] [-n] [-r] [-a] [-v V] [-s S] [-t T] [-i I]
Search for vulnerabilities in the National Vulnerability DB. Data from https://nvd.nist.gov/.
options:
-h, --help show this help message and exit
-p P [P ...] P = search one or more products, e.g. o:microsoft:windows_7 or o:cisco:ios:12.1 or
o:microsoft:windows_7 o:cisco:ios:12.1. Add --only-if-vulnerable if only vulnerabilities that
directly affect the product are wanted.
--only-if-vulnerable With this option, "-p" will only return vulnerabilities directly assigned to the product. I.e.
it will not consider "windows_7" if it is only mentioned as affected OS in an adobe:reader
vulnerability.
--strict_vendor_product
With this option, a strict vendor product search is executed. The values in "-p" should be
formatted as vendor:product, e.g. microsoft:windows_7
--lax Strict search for software version is disabled. Likely gives false positives for earlier
versions that were not yet vulnerable. Note that version comparison for non-numeric values
is done with simplifications.
-f F F = free text search in vulnerability summary
-c C search one or more CVE-ID
-o O O = output format [csv|html|json|xml|cveid]
-l sort in descending mode
-n lookup complete cpe (Common Platform Enumeration) name for vulnerable configuration
-r lookup ranking of vulnerable configuration
-a Lookup CAPEC for related CWE weaknesses
-v V vendor name to lookup in reference URLs
-s S search in summary text
-t T search in last n day (published)
-T T search in last n day (modified)
-i I Limit output to n elements (default: unlimited)
Ejemplos:
./bin/search.py -p cisco:ios:12.4
./bin/search.py -p cisco:ios:12.4 -o json
./bin/search.py -f nagios -n
./bin/search.py -p microsoft:windows_7 -o html
Si desea buscar todas las vulnerabilidades de WebEx y mostrar solo las referencias oficiales del proveedor.
./bin/search.py -p webex: -o csv -v "cisco"
También puede volcar el JSON para un ID de CVE específico.
./bin/search.py -c CVE-2010-3333 -o json
O volcar las últimas 2 entradas CVE en formato RSS o Atom.
./bin/dump_last.py -f atom -l 2
O puede usar la interfaz web o la interfaz API web.
Hay una base de datos de clasificación que permite clasificar las vulnerabilidades de software según su nombre de plataforma común (CPE). La clasificación se puede realizar por organización o departamento dentro de su organización o cualquier nombre significativo para usted.
Por ejemplo, puede agregar un nombre CPE parcial como "sap:netweaver", que es muy crítico para su departamento de contabilidad.
./sbin/db_ranking.py -c "sap:netweaver" -g "accounting" -r 3
y luego puede buscar la clasificación (opción -r) para un CVE-ID específico:
./bin/search.py -c CVE-2012-4341 -r -n
Como cve-search se basa en un conjunto de herramientas, se puede utilizar y combinar con herramientas Unix estándar. Si alguna vez se pregunta cuáles son los principales proveedores que usan el término "unknown" para sus vulnerabilidades:
python3 bin/search_fulltext.py -q unknown -f \
| jq -c '. | .vulnerable_configuration[0]' \
| cut -f5 -d: | sort | uniq -c | sort -nr | head -10
1500 oracle
381 sun
372 hp
232 google
208 ibm
126 mozilla
103 microsoft
100 adobe
78 apple
68 linux
Puede comparar los valores CVSS (Common Vulnerability Scoring System) de algunos productos según su nombre CPE. Por ejemplo, comparar oracle:java con sun:jre y usar R para hacer algunas estadísticas sobre sus valores CVSS:
python3 bin/search.py -p oracle:java -o json \
| jq -r '.cvss' | Rscript -e 'summary(as.numeric(read.table(file("stdin"))[,1]))'
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.800 5.350 9.300 7.832 10.000 10.000
python3 bin/search.py -p sun:jre -o json \
| jq -r '.cvss' | Rscript -e 'summary(as.numeric(read.table(file("stdin"))[,1]))'
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000 5.000 7.500 7.333 10.000 10.000
Si desea indexar todos los CVE de su colección MongoDB actual:
./sbin/db_fulltext.py -l 0
y consulta el índice de texto completo (para obtener una lista de CVE-ID coincidentes):
./bin/search_fulltext.py -q NFS -q Linux
o para consultar el índice de texto completo y generar el objeto JSON para cada CVE-ID:
./bin/search_fulltext.py -q NFS -q Linux -f
El indexador de texto completo se puede utilizar para generar datos JSON de las palabras clave más comunes en las entradas CVE. Utiliza NLTK para lematizar palabras (convertir a formas base) y filtrar palabras vacías comunes en inglés.
Ejecute el script para generar el JSON:
./bin/search_fulltext.py -g -s > cve.json
El archivo cve.json resultante contiene una jerarquía plana:
{
"name": "cve-search",
"children": [
{"name": "vulnerability", "size": 4855},
{"name": "allow", "size": 2544},
{"name": "file", "size": 2240},
...
]
}
El script no crea las visualizaciones, pero cve.json se puede usar como datos fuente para herramientas de visualización como diagramas Pack de D3-hierarchy o generadores de nubes de palabras.

La interfaz web proporciona una forma intuitiva de navegar por las entradas CVE más recientes y ver los detalles de un CVE específico. Las instrucciones completas para configurar e implementar la interfaz web como servicio SystemD o aplicación uWSGI están disponibles en la documentación de WebGUI.
Para iniciar rápidamente la interfaz web con fines de prueba, ejecute:
python3 ./web/index.py
Una vez iniciado, abra su navegador y navegue a http://127.0.0.1:5000/.
La interfaz web incluye una API JSON mínima para obtener CVE por ID, por proveedor o producto.
La API pública en cve.circl.lu ha reemplazado a cve-search con Vulnerability-Lookup, pero la API sigue siendo compatible en gran medida con versiones anteriores.
Enumere los proveedores conocidos en JSON
curl "http://127.0.0.1:5000/api/browse/"
Vuelque el producto de un proveedor específico en JSON
curl "http://127.0.0.1:5000/api/browse/zyxel"
{
"product": [
"n300_netusb_nbg-419n",
"n300_netusb_nbg-419n_firmware",
"p-660h-61",
"p-660h-63",
"p-660h-67",
"p-660h-d1",
"p-660h-d3",
"p-660h-t1",
"p-660h-t3",
"p-660hw",
"p-660hw_d1",
"p-660hw_d3",
"p-660hw_t3"
],
"vendor": "zyxel"
}
Encuentre las vulnerabilidades asociadas a un proveedor y un producto.
curl "http://127.0.0.1:5000/api/search/zyxel/p-660hw" | jq .
[
{
"cwe": "CWE-352",
"references": [
"http://www.exploit-db.com/exploits/33518",
"http://secunia.com/advisories/58513",
"http://packetstormsecurity.com/files/126812/Zyxel-P-660HW-T1-Cross-Site-Request-Forgery.html",
"http://osvdb.org/show/osvdb/107449"
],
"vulnerable_configuration": [
"cpe:/h:zyxel:p-660hw:_t1:v3"
],
"Published": "2014-06-16T14:55:09.713-04:00",
"id": "CVE-2014-4162",
"Modified": "2014-07-17T01:07:29.683-04:00",
"cvss": 6.8,
"summary": "Multiple cross-site request forgery (CSRF) vulnerabilities in the Zyxel P-660HW-T1 (v3) wireless router allow remote attackers to hijack the authentication of administrators for requests that change the (1) wifi password or (2) SSID via a request to Forms/WLAN_General_1."
},
{
"cwe": "CWE-20",
"references": [
"http://www.kb.cert.org/vuls/id/893726"
],
"vulnerable_configuration": [
"cpe:/h:zyxel:p-660h-63:-",
"cpe:/h:zyxel:p-660h-t1:-",
"cpe:/h:zyxel:p-660h-d3:-",
"cpe:/h:zyxel:p-660h-t3:v2",
"cpe:/h:zyxel:p-660h-t1:v2",
"cpe:/h:zyxel:p-660h-d1:-",
"cpe:/h:zyxel:p-660h-67:-",
"cpe:/h:zyxel:p-660h-61:-",
"cpe:/h:zyxel:p-660hw_t3:v2",
"cpe:/h:zyxel:p-660hw_t3:-",
"cpe:/h:zyxel:p-660hw_d3:-",
"cpe:/h:zyxel:p-660hw_d1:v2",
"cpe:/h:zyxel:p-660hw_d1:-",
"cpe:/h:zyxel:p-660hw:_t1:v2",
"cpe:/h:zyxel:p-660hw:_t1:-"
],
Versión oficial dockerizada de cve-search:
Existen algunas versiones dockerizadas no oficiales de cve-search (que no son mantenidas por nosotros):
Puede encontrar el registro de cambios en GitHub Releases (registro de cambios heredado).
cve-search es software libre distribuido bajo la "GNU Affero General Public License v3.0"
Copyright (c) 2012 Wim Remes - https://github.com/wimremes/
Copyright (c) 2012-2024 Alexandre Dulaunoy - https://github.com/adulau/
Copyright (c) 2015-2019 Pieter-Jan Moreels - https://github.com/pidgeyl/
Copyright (c) 2020-2024 Paul Tikken - https://github.com/P-T-I