Esta guía proporciona una consulta NRQL lista para usar para escenarios comunes de análisis y monitoreo de seguridad. Copie estas consultas en el generador de consultas o agréguelas al dashboard personalizado para obtener información más profunda y valiosa sobre sus datos de vulnerabilidades.
Para obtener información sobre la estructura de datos subyacente, consulte Referencia de estructura de datos de seguridad.
Importante
Estas consultas se escriben en el esquema de evento Vulnerability real. Tenga en cuenta las siguientes limitaciones del esquema:
- El evento
Vulnerabilityno tiene un campostateo de ciclo de vida — las consultas no pueden filtrar por estado OPEN/CLOSED. - No hay ningún campo
resolvedAt— las consultas de MTTR y velocidad de remediación que requieren un timestamp resuelto no se pueden reproducir a partir de este evento. cvss.scoreyepss.percentilese almacenan como cadenas. Usenumeric()para convertirlos antes de compararlos o agregarlos numéricamente.ORDER BY numeric(...)no es compatible. Asigne un alias a la conversión enSELECTy useLIMITpara recuperar los resultados principales.HAVINGen agregados facetados no es compatible. UtiliceLIMITpara devolver los N mejores resultados en su lugar.
Reportes ejecutivos
Total de vulnerabilidades abiertas por gravedad
Obtenga una visión de alto nivel de su exposición a vulnerabilidades:
FROM VulnerabilitySELECT count(*) AS 'Total Vulnerabilities'FACET severitySINCE 7 days agoTendencias críticas y de alta gravedad
Realice un seguimiento de cómo cambian las vulnerabilidades críticas a lo largo del tiempo:
FROM VulnerabilitySELECT count(*) AS 'Critical & High Vulnerabilities'WHERE severity IN ('CRITICAL', 'HIGH')TIMESERIES AUTOSINCE 7 days agovulnerabilidades por entidad
Identifique qué aplicación u hosts tienen más vulnerabilidades:
FROM VulnerabilitySELECT count(*) AS 'Vulnerability Count'FACET entityLookupValueLIMIT 20SINCE 7 days agoDistribución de vulnerabilidades en la cartera
Comprender la propagación de vulnerabilidades:
FROM VulnerabilitySELECT percentage(count(*), WHERE severity = 'CRITICAL') AS 'Critical %', percentage(count(*), WHERE severity = 'HIGH') AS 'High %', percentage(count(*), WHERE severity = 'MEDIUM') AS 'Medium %', percentage(count(*), WHERE severity = 'LOW') AS 'Low %'SINCE 7 days agoPriorización y evaluación de riesgos
Vulnerabilidades de alta prioridad
Encuentre vulnerabilidades con alta probabilidad de explotación:
FROM VulnerabilitySELECT cve, package, package.version, numeric(cvss.score) AS 'cvssScore', numeric(epss.percentile) AS 'epssPercentile'WHERE numeric(epss.percentile) > 0.9SINCE 30 days agoLIMIT 20Vulnerabilidades de alta explotabilidad
Identificar vulnerabilidades con un exploit conocido:
FROM VulnerabilitySELECT count(*) AS 'Findings', max(numeric(cvss.score)) AS 'Max CVSS'WHERE exploitKnown = 'true'FACET cve, entityLookupValue, packageSINCE 30 days agoSugerencia
El evento Vulnerability no tiene un campo activeRansomware. Esta consulta utiliza exploitKnown como el indicador disponible más cercano para hallazgos de alto riesgo. Si esta consulta no devuelve resultados, aún no se han ingerido hallazgos con un exploit conocido confirmado —la consulta es válida para el esquema y devolverá datos una vez que aparezcan dichos hallazgos.
Vulnerabilidades críticas recién detectadas
Monitorizar nuevos hallazgos críticos:
FROM VulnerabilitySELECT cve, package, package.version, entityLookupValue, firstDetectedWHERE severity = 'CRITICAL'SINCE 30 days agovulnerabilidades que requieren atención inmediata
Combine múltiples factores de riesgo:
FROM VulnerabilitySELECT count(*) AS 'Findings', max(numeric(cvss.score)) AS 'Max CVSS', max(numeric(epss.percentile)) AS 'Max EPSS'WHERE (severity = 'CRITICAL' AND numeric(epss.percentile) > 0.85) OR exploitKnown = 'true' OR numeric(epss.percentile) > 0.95FACET cve, entityLookupValue, packageSINCE 30 days agoSeguimiento de la exposición y la remediación
Advertencia
El evento Vulnerability no incluye un campo resolvedAt o un campo de ciclo de vida state (OPEN/CLOSED). Las consultas para el tiempo medio de remediación (MTTR), la velocidad de remediación y el tiempo de respuesta de vulnerabilidades críticas no se pueden calcular a partir de este evento tal como se ingiere actualmente. Para rastrear las métricas de remediación, use una fuente de datos separada, como datos de seguimiento de problemas o de tickets.
Vulnerabilidades abiertas de mayor duración
Encontrar vulnerabilidades que se han detectado durante períodos prolongados:
FROM VulnerabilitySELECT min(firstDetected) AS 'First Detected', count(*) AS 'Occurrences'FACET cve, entityLookupValue, packageLIMIT 20SINCE 90 days agovulnerabilidades por grupo de edad
Agrupar vulnerabilidades por período de detección:
FROM VulnerabilitySELECT count(*) AS 'Vulnerabilities'TIMESERIES 1 weekSINCE 180 days agoAnálisis de paquetes y bibliotecas
La biblioteca más vulnerable
Identificar la biblioteca que presenta las mayores vulnerabilidades:
FROM VulnerabilitySELECT count(*) AS 'Vulnerability Count'FACET packageLIMIT 10SINCE 7 days agobiblioteca que requiere actualizaciones
Encuentre paquetes con correcciones disponibles:
FROM VulnerabilitySELECT count(*) AS 'Vulnerable Entities'WHERE remediation.exists = 'true'FACET package, package.versionLIMIT 20SINCE 7 days agoDetección de vulnerabilidades por origen
Comprenda qué integración está encontrando vulnerabilidades:
FROM VulnerabilitySELECT count(*) AS 'Detections'FACET sourceSINCE 30 days agoAnálisis de dependencia Java
Centrar en las vulnerabilidades específicas de Java:
FROM VulnerabilitySELECT count(*) AS 'Vulnerabilities'WHERE package LIKE '%.jar' OR package LIKE '%maven%' OR package.language = 'java'FACET package, severitySINCE 30 days agoLIMIT 20consulta específica de la entidad
Resumen de vulnerabilidades de la aplicación
Obtenga recuentos de vulnerabilidades para una aplicación específica:
FROM VulnerabilitySELECT count(*) AS 'Total', filter(count(*), WHERE severity = 'CRITICAL') AS 'Critical', filter(count(*), WHERE severity = 'HIGH') AS 'High', filter(count(*), WHERE severity = 'MEDIUM') AS 'Medium', filter(count(*), WHERE severity = 'LOW') AS 'Low'WHERE entityLookupValue = 'YOUR_ENTITY_NAME'SINCE 7 days agoDesglose de vulnerabilidades por tipo de entidad
Analizar vulnerabilidades en diferentes tipos de entidad:
FROM VulnerabilitySELECT count(*) AS 'Vulnerabilities'FACET entityLookupValue, severity, entityTypeLIMIT 20SINCE 7 days agoentidad sin escaneos recientes
Identificar entidad que podría no estar reportando datos de vulnerabilidades:
FROM VulnerabilitySELECT max(timestamp) AS 'Last Scan'FACET entityLookupValueSINCE 30 days agoLIMIT 20Cumplimiento y presentación de reportes
Vulnerabilidades mayores a 30 días (seguimiento de SLA)
Monitorear las vulnerabilidades que exceden su SLA de remediación:
FROM VulnerabilitySELECT count(*) AS 'Overdue Vulnerabilities'FACET entityLookupValue, severitySINCE 180 days agoUNTIL 30 days agoLIMIT 20vulnerabilidades métricas mensuales
Generar reportes mensuales:
FROM VulnerabilitySELECT count(*) AS 'Total Detected', uniqueCount(entityGuid) AS 'Affected Entities', filter(count(*), WHERE severity IN ('CRITICAL', 'HIGH')) AS 'High Risk'FACET monthOf(firstDetected)SINCE 180 days agoTIMESERIES 1 monthAnálisis avanzado
radio de explosión de vulnerabilidades
Identificar vulnerabilidades que afectan a muchas entidades:
FROM VulnerabilitySELECT count(entityGuid) AS 'Affected Entities', max(numeric(cvss.score)) AS 'CVSS'FACET cveLIMIT 20SINCE 30 days agoPuntaje de higiene de seguridad
Calcular un puntaje de seguridad personalizada:
FROM VulnerabilitySELECT 100 - ( filter(count(*), WHERE severity = 'CRITICAL') * 10 + filter(count(*), WHERE severity = 'HIGH') * 5 + filter(count(*), WHERE severity = 'MEDIUM') * 2 + filter(count(*), WHERE severity = 'LOW') * 0.5) AS 'Security Score'FACET entityLookupValueSINCE 7 days agoLIMIT 20Tendencias de vulnerabilidades por tipo
Compare las vulnerabilidades de la aplicación con las de la infraestructura:
FROM VulnerabilitySELECT count(*) AS 'Vulnerabilities'FACET entityTypeTIMESERIES AUTOSINCE 30 days agoHallazgos de seguridad basados en la entidad
Consulte los datos de vulnerabilidades del estado actual utilizando el tipo de evento Entity. Este enfoque es más adecuado para preguntas centradas en la entidad que para tendencias de series temporales:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND cve.id IS NOT NULLFACET cve.id, severitySINCE 7 days agoSugerencia
Agregar AND cve.id IS NOT NULL filtra los hallazgos de configuración incorrecta y de tipo de política que no tienen CVE asignado, que de otro modo dominarían los resultados de la faceta. Esta consulta utiliza el tipo de evento Entity (búsqueda de entidad de NerdGraph) en lugar del tipo de evento Vulnerability — refleja el estado actual de la entidad en lugar de un flujo de eventos, por lo que no es adecuada para la tendencia de TIMESERIES.
Usando estas consultas
En el generador de consultas
- Vaya a one.newrelic.com > All capabilities > Query your data
- Copia y pega cualquier consulta de esta página
- Haga clic en Run para ver los resultados.
- Ajuste los rangos de tiempo y los filtros según sea necesario
En los dashboards personalizados
- Crear un nuevo dashboard o editar uno existente
- Agrega un widget y selecciona Query builder
- Pegue la consulta y configure la visualización
- Almacena el widget en tu dashboard
En alertas
- Vaya a Alerts > Create a condition
- Seleccione NRQL query como tipo de condición
- Emplee consultas que devuelvan recuentos o umbrales
- Configurar alerta umbral y canal de notificación
Para obtener más información sobre las alertas, consulte Configurar alertas de vulnerabilidades.
Consejos para personalizar la consulta
Reemplazar marcador de posición
'YOUR_ENTITY_NAME'- Reemplace con su nombre de entidad real del atributoentityLookupValue- Rangos de tiempo (por ejemplo,
SINCE 30 days ago): ajústelos a sus necesidades
Combinar con otros datos
NRQL no admite JOIN entre eventos. Para correlacionar los datos de vulnerabilidades con las métricas de APM o infraestructura, utilice consultas separadas y combine los resultados en un dashboard. Por ejemplo:
-- Vulnerability dataFROM VulnerabilitySELECT count(*) AS 'Vulnerabilities'FACET entityLookupValueSINCE 1 day ago-- APM transaction data (run as a separate query)FROM TransactionSELECT average(duration) AS 'Avg Response Time'FACET appNameSINCE 1 day agoExportar resultados
Todos los resultados de la consulta pueden ser:
- Descargado como CSV
- Añadido a los dashboards
- Exportado a través de API
- Compartido con tu equipo