Estado: ✅ Aceptada Fecha: 2026-05-04 Contexto: el job container_scan rompía el merge por CVEs no-remediables.

🧭 Contexto

La política original del workflow security.yml ejecutaba grype scan-target:ci --fail-on critical. Eso rompía el job en cualquier CVE Critical detectada en la imagen, sin distinguir si la CVE tenía o no un parche disponible.

debian:bookworm-slim reporta decenas de CVEs (incluyendo Critical y High) en libc6, libpam, ncurses, util-linux, gpgv, etc. que Debian marca (won't fix) para esa major release. Esas CVEs no tienen parche aguas arriba — son irremediables dentro de la imagen actual sin migrar a otra base.

Resultado: el job rompía el merge permanentemente sin que nadie pudiera arreglarlo.

💡 Decisión

Cambiar la política a fallar solo ante vulnerabilidades que tengan fix publicado, mediante .grype.yaml:

only-fixed: true
fail-on-severity: critical

Adicionalmente, el workflow se divide en dos pasos:

  1. Inventario completo (sin filtros) impreso al $GITHUB_STEP_SUMMARY. Las CVEs no-fixable siguen visibles y auditables.
  2. Enforcement con .grype.yaml. Solo este paso decide si el job pasa o falla.

El Dockerfile incorpora apt-get upgrade en el stage runtime para que cualquier CVE que sí tenga parche en repos Debian baje al hacer build.

🔄 Alternativas consideradas

📊 Consecuencias

Positivas:

Negativas:

Neutras:

🔗 Referencias