Skip to content
Saltar al contenido principal
Trivy: Seguridad de Contenedores y DevSecOps con un Solo Comando

Trivy: Seguridad de Contenedores y DevSecOps con un Solo Comando

Trivy es el escáner de seguridad de contenedores más completo del ecosistema cloud native. Escanea vulnerabilidades, configuraciones inseguras, secrets y licencias con un solo comando.

6 minCyberFlows
[Espacio publicitario — AdSense]

Trivy: Seguridad de Contenedores y DevSecOps con un Solo Comando

El escáner de seguridad que necesitas en tu pipeline

Trivy es el escáner de seguridad de código abierto más popular para contenedores y cloud native. Desarrollado por Aqua Security, hace lo que otras herramientas necesitan múltiples binarios para lograr: escanea vulnerabilidades, configuraciones inseguras, secrets y licencias con un solo comando.

La ventaja de Trivy sobre herramientas como Clair o Anchore es su simplicidad: un solo binario sin dependencias externas, una base de datos de vulnerabilidades actualizada automáticamente, y soporte nativo para prácticamente cualquier formato de container image. Esto lo convierte en la herramienta ideal para integrar en pipelines de CI/CD donde la velocidad y la fiabilidad son críticas.

Por qué la seguridad de contenedores importa

Los contenedores Docker y Kubernetes son la base de la infraestructura moderna, pero introducen superficies de ataque que muchas organizaciones pasan por alto. Una imagen Docker puede contener cientos de paquetes del sistema operativo base, cada uno con vulnerabilidades conocidas. Sin un escaneo automatizado, estas vulnerabilidades llegan silenciosamente a producción.

Según los informes de Aqua Security, más del 50% de las imágenes en registries públicos contienen al menos una vulnerabilidad de severidad CRITICAL. Las organizaciones que no implementan escaneo de imágenes en su pipeline de CI/CD están desplegando código con vulnerabilidades conocidas que podrían ser explotadas en minutos.

Qué puede escanear Trivy

Target Qué detecta
Imágenes Docker CVEs en paquetes OS y librerías
Repositorios Git Vulnerabilidades de dependencias, secrets
Kubernetes Imágenes de pods con vulnerabilidades
Terraform/CloudFormation Configuraciones IaC inseguras
Dockerfile Mejores prácticas de seguridad
SBOM Inventario completo de componentes

Trivy utiliza múltiples fuentes de datos de vulnerabilidades: NVD, GitHub Advisories, Debian Security Tracker, Red Hat OVAL, y Alpine SecDB. Esto le permite detectar vulnerabilidades en prácticamente cualquier distribución Linux y en librerías de lenguajes como Python, Node.js, Go y Rust.

Instalación

# macOS
brew install trivy

# Ubuntu/Debian
sudo apt-get install trivy

# Docker
docker pull aquasec/trivy

# Arch Linux
yay -S trivy

En contenedores Docker, la forma más rápida de ejecutar Trivy es sin instalarlo:

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  aquasec/trivy image nginx:latest

Esto monta el socket de Docker para que Trivy pueda acceder directamente a las imágenes locales sin necesidad de pull ni push a un registry.

Escaneo básico

# Escanear una imagen Docker
trivy image nginx:latest

# Filtrar por severidad
trivy image --severity HIGH,CRITICAL nginx:latest

# Ignorar vulnerabilidades sin fix
trivy image --ignore-unfixed nginx:latest

# Escaneo rápido (solo paquetes OS, sin librerías)
trivy image --scanners vuln --security-checks vuln nginx:latest

El flag --ignore-unfixed es particularmente útil en producción: filtra las vulnerabilidades para las cuales el vendor no ha publicado un parche, permitiéndote enfocar tus esfuerzos remediales en lo que realmente se puede corregir.

Escaneo de repositorios

# Escanear código fuente
trivy fs --security-checks vuln,secret,config .

# Detectar secrets (API keys, tokens, credenciales)
trivy fs --security-checks secret .

# Generar SBOM
trivy image --format cyclonedx --output sbom.json nginx:latest

# Escanear dependencias lockfiles
trivy fs --scanners vuln ./src

El escaneo de secrets es especialmente valioso en pipelines de CI/CD: detecta tokens de API, credenciales de base de datos y claves privadas que los desarrolladores puedan haber commiteado accidentalmente al repositorio.

Integración con CI/CD

GitHub Actions

name: Trivy Security Scan
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Trivy
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'mi-app:latest'
          severity: 'CRITICAL,HIGH'
          exit-code: '1'  # Falla el pipeline si hay CRITICAL
          format: 'table'
          output: 'trivy-results.txt'
      - name: Upload results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: trivy-results
          path: trivy-results.txt

GitLab CI

trivy-scan:
  stage: test
  image: aquasec/trivy
  script:
    - trivy image --exit-code 1 --severity CRITICAL,HIGH $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  allow_failure: false

Pipeline completo con SBOM

security-scan:
  stage: security
  script:
    - trivy image --format cyclonedx --output sbom.json $IMAGE
    - trivy image --exit-code 1 --severity CRITICAL $IMAGE
    - trivy fs --format json --output fs-report.json .
  artifacts:
    reports:
      dependency_scanning: fs-report.json

SBOM: Software Bill of Materials

Un SBOM es un inventario completo de todos los componentes de software en una aplicación. Es requerido por regulaciones como el Executive Order 14028 y el EU Cyber Resilience Act.

# Generar SBOM en formato CycloneDX
trivy image --format cyclonedx --output sbom.json mi-app:latest

# Generar SBOM en formato SPDX
trivy image --format spdx --output sbom.spdx mi-app:latest

# SBOM con vulnerabilidades incluidas
trivy image --format cyclonedx-json --output sbom-vulns.json mi-app:latest

El SBOM es fundamental para la gestión de vulnerabilidades en producción: cuando se publica un nuevo CVE, puedes consultar tu SBOM para saber instantáneamente qué aplicaciones están afectadas y en qué versión exacta de la librería vulnerable.

Escaneo en producción

# Escanear todos los containers en ejecución
for container in $(docker ps --format '{{.Names}}'); do
    image=$(docker inspect --format '{{.Config.Image}}' $container)
    echo "Escaneando: $container ($image)"
    trivy image --severity HIGH,CRITICAL $image
done

# Escanear clúster de Kubernetes
trivy k8s --report summary cluster

# Escanear namespace específico
trivy k8s --report all -n production namespace

El escaneo continuo en producción es una práctica recomendada: las vulnerabilidades pueden aparecer después del despliegue inicial cuando se publican nuevos CVEs. Configurar un CronJob en Kubernetes que ejecute Trivy diariamente permite detectar estas amenazas emergentes antes de que sean explotadas.

Personalización con .trivyignore

# Ignorar CVEs específicos con justificación
cat > .trivyignore << 'EOF'
# CVE-2024-12345: Falso positivo, función no se usa en nuestro contexto
CVE-2024-12345
# CVE-2024-67890: Riesgo aceptado por el equipo de seguridad, mitigación compensatoria implementada
CVE-2024-67890
EOF

trivy image --ignorefile .trivyignore mi-app:latest

Es importante documentar en el archivo .trivyignore por qué se ignora cada CVE: cuando un auditor revise el pipeline de seguridad, necesitará ver que cada excepción fue evaluada y aprobada por alguien con autoridad, no simplemente omitida.

Errores comunes y cómo evitarlos

Falsos positivos: Trivy a veces reporta vulnerabilidades que no son explotables en tu contexto de uso. Revisa cada CVE individualmente antes de ignorarlo. Usa --ignore-unfixed para filtrar vulnerabilidades sin parche disponible.

Escaneo incompleto: No escanear los layers intermedios de una imagen multi-stage puede ocultar vulnerabilidades. Usa --image-src docker para asegurar que todos los layers sean analizados.

Imágenes slim: Las imágenes como alpine o distroless tienen una superficie de ataque mucho menor que ubuntu o debian completas. Siempre usa la imagen base más pequeña posible para tu aplicación.

Conclusión

Trivy hace que la seguridad de contenedores sea simple. Un solo comando, múltiples tipos de escaneo, integración nativa con CI/CD. Si todavía no lo tienes en tu pipeline, es hora de agregarlo.

La clave es automatizar: configura Trivy en tu pipeline para que cada build sea escaneada automáticamente, establece umbrales de severidad que bloqueen el despliegue, y mantén un registro de las excepciones con justificación documentada.


Herramientas relacionadas: OPNsense (firewall), Wireshark (análisis de red)

Artículos relacionados:

Aviso legal: Este contenido es estrictamente educativo. CyberFlows no apoya actividades ilegales. Úsalo solo en entornos autorizados.

[Espacio publicitario — AdSense]

Newsletter de Ciberseguridad

Resumen semanal con los mejores artículos, CVEs críticos y tendencias del mercado. Sin spam.

🔒 Tu email no se compartirá. Puedes darte de baja en cualquier momento.