
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.