Tema 11
El escaneo de vulnerabilidades permite detectar componentes con fallas conocidas antes y después del despliegue. Su valor no está en producir listas extensas, sino en priorizar, corregir y evitar que los riesgos vuelvan a entrar al pipeline.
Las imágenes de contenedores combinan sistema operativo, runtime, librerías, dependencias y código de aplicación. Cada componente puede tener vulnerabilidades conocidas. El escaneo permite identificar esas vulnerabilidades y tomar decisiones antes de que lleguen a producción.
Escanear no es suficiente. Una organización puede tener miles de hallazgos y seguir expuesta si no prioriza por criticidad, explotación real, exposición del servicio y posibilidad de corrección.
El objetivo es integrar el escaneo al ciclo DevSecOps: pull request, build, registry, pre-deploy y runtime.
El escaneo puede analizar distintas capas del artefacto y del proyecto. Cada una aporta una visión parcial.
| Elemento | Qué detecta | Ejemplo |
|---|---|---|
| Paquetes del sistema | Vulnerabilidades en paquetes instalados por la distribución | openssl, glibc, curl, bash |
| Dependencias de lenguaje | Vulnerabilidades en librerías de aplicación | npm, pip, Maven, NuGet, Go modules |
| Imagen base | Problemas heredados por todas las imágenes derivadas | Base desactualizada o sin soporte |
| Binarios incluidos | Componentes externos agregados manualmente | Herramientas descargadas en build |
| Configuración | Malas prácticas de Dockerfile o permisos | Usuario root, secretos, capabilities amplias |
SCA significa Software Composition Analysis. Analiza componentes de terceros para identificar vulnerabilidades, licencias, versiones obsoletas y dependencias transitivas.
Es importante porque muchas aplicaciones dependen de decenas o cientos de librerías. Una vulnerabilidad puede estar en una dependencia directa o en una dependencia transitiva que el equipo ni siquiera conoce explícitamente.
Las vulnerabilidades suelen identificarse con CVE. CVSS estima severidad técnica. EPSS estima probabilidad de explotación observada o esperada. Ninguna métrica por sí sola alcanza para decidir prioridad.
| Métrica | Qué aporta | Límite |
|---|---|---|
| CVE | Identificador común de una vulnerabilidad conocida | No indica por sí solo exposición real |
| CVSS | Severidad técnica basada en características del fallo | No siempre refleja explotación activa o contexto de negocio |
| EPSS | Probabilidad de explotación | No reemplaza análisis de impacto interno |
| Advisory del proveedor | Detalle de versiones afectadas y correcciones | Puede tardar en sincronizarse entre bases de datos |
Dos vulnerabilidades con la misma severidad pueden tener prioridades distintas. El contexto define si el riesgo es explotable y qué impacto tendría.
Factores de contexto:
El pipeline es el lugar natural para detectar vulnerabilidades antes de publicar o desplegar. La política debe definir qué hallazgos bloquean y cuáles generan advertencia.
| Etapa | Escaneo | Decisión |
|---|---|---|
| Pull request | Dependencias declaradas y Dockerfile | Advertir temprano y sugerir corrección |
| Build | Imagen generada | Bloquear críticos según política |
| Publicación | Artefacto final y metadatos | Permitir solo imágenes aprobadas |
| Pre-deploy | Imagen candidata y entorno destino | Aplicar gates más estrictos para producción |
Una imagen que era aceptable al publicarse puede volverse vulnerable después, cuando se descubre una nueva CVE. Por eso los registries deben reanalizar imágenes almacenadas.
Beneficios:
El registry debe integrarse con inventario y despliegues reales. No todas las imágenes almacenadas están en producción.
El escaneo en runtime responde qué imágenes vulnerables están ejecutándose realmente. Esta información es clave para priorizar porque conecta vulnerabilidades con exposición operativa.
Permite responder:
Los escáneres no son perfectos. Pueden reportar vulnerabilidades que no aplican o no detectar componentes empaquetados de forma no estándar.
Una política de bloqueo define cuándo una imagen no puede avanzar. Debe ser clara, medible y ajustada al contexto para no paralizar entregas ni permitir riesgos inaceptables.
Criterios posibles:
Remediar no siempre significa actualizar una librería. Puede requerir cambiar imagen base, reconstruir, modificar código, eliminar paquetes, aplicar mitigaciones o aceptar temporalmente el riesgo.
| Causa | Remediación | Riesgo residual |
|---|---|---|
| Imagen base vulnerable | Actualizar base y reconstruir imágenes derivadas | Compatibilidad con runtime o dependencias |
| Dependencia de aplicación vulnerable | Actualizar paquete, ajustar lockfile y probar | Cambios funcionales o breaking changes |
| Paquete innecesario | Eliminarlo de la imagen final | Dependencia oculta no detectada |
| Sin parche disponible | Mitigar exposición, monitorear y documentar excepción | Riesgo aceptado temporalmente |
Las excepciones son necesarias cuando no existe parche, la actualización rompe compatibilidad o el riesgo está mitigado. Pero deben ser temporales y explícitas.
Una excepción debe incluir:
Las métricas ayudan a saber si el programa reduce riesgo o solo produce reportes.
Un SBOM lista los componentes de software incluidos en una aplicación o imagen. Facilita responder rápidamente si una vulnerabilidad afecta a la organización.
El SBOM ayuda a:
El escaneo de vulnerabilidades es un componente esencial de DevSecOps, pero solo aporta valor si se integra con priorización, gates de pipeline, remediación, excepciones y métricas. Su propósito es reducir riesgo operativo, no producir listas interminables.
En el próximo tema estudiaremos la seguridad de registros de contenedores, firmas de imágenes y procedencia.