diff --git a/.gitea/workflows/build-medusa.yaml b/.gitea/workflows/build-medusa.yaml index 5fcd087..cdc7ea8 100644 --- a/.gitea/workflows/build-medusa.yaml +++ b/.gitea/workflows/build-medusa.yaml @@ -220,6 +220,10 @@ jobs: # a los 4m52s con el timeout default, en un run donde el host # venía de terminar el docker build (ver hallazgo de rendimiento # de Gitea/runner en docs/playbooks). + # --ignorefile: excepciones puntuales y documentadas (ver + # workloads/commerce-backend/.trivyignore) para CVEs sin fix de + # bajo riesgo disponible hoy. No debilita el gate en general -- + # cualquier otra CRITICAL sigue bloqueando igual. - name: Escanear imagen (Trivy) — CRITICAL bloquea shell: bash run: | @@ -229,6 +233,7 @@ jobs: --exit-code 1 \ --ignore-unfixed \ --timeout 15m0s \ + --ignorefile "${APP_DIR}/.trivyignore" \ "${IMAGE_NAME}:${{ steps.vars.outputs.VERSION }}" # HIGH solo informa por ahora — mismo criterio que el frontend. diff --git a/workloads/commerce-backend/.trivyignore b/workloads/commerce-backend/.trivyignore new file mode 100644 index 0000000..a599216 --- /dev/null +++ b/workloads/commerce-backend/.trivyignore @@ -0,0 +1,34 @@ +# Excepciones documentadas al gate CRITICAL de Trivy (imagen) para +# commerce-backend. Cada entrada requiere justificación y fecha -- no +# es un mecanismo para silenciar hallazgos sin revisar. +# +# CVE-2024-24790 / CVE-2025-68121 (golang stdlib, gobinary): +# Van embebidas en el binario precompilado de esbuild +# (app/node_modules/@esbuild/linux-x64/bin/esbuild), traído +# transitivamente por vite@5.4.21, que a su vez lo trae +# @medusajs/admin-sdk para bundlear el panel de admin en build time. +# No es un binario que se ejecute en runtime del contenedor (el CMD +# corre "node .../medusa/cli start", nunca esbuild). +# +# Se intentó el fix real (bump de esbuild a una versión compilada con +# un Go toolchain más nuevo, override en package.json) y rompió el +# build del admin: vite@5.4.21 declara "esbuild: ^0.21.3" como +# dependencia directa (no rango amplio), y esbuild >=0.24 cambió el +# manejo de la lista de "target" de transpilación que vite 5 pasa +# internamente -- build.yaml falló con +# "Transforming destructuring... not supported yet" / +# PLUGIN_ERROR en vite:esbuild-transpile. No existe un patch dentro +# de la propia serie 0.21.x (0.21.5 ya es la última) que incluya un +# Go toolchain con estas CVEs corregidas. +# +# Domesticar esto de verdad requiere subir @medusajs/admin-sdk (y por +# lo tanto vite) a una versión que dependa de un esbuild más nuevo -- +# fuera de alcance de este pipeline de seguridad, queda como TODO de +# dependencias en un cambio aparte, no bloqueado por CI mientras +# tanto. +# +# Documentado: 2026-08-15. Revisar en cada bump de @medusajs/* por si +# ya arrastra una versión de vite/esbuild más nueva y esta excepción +# deja de ser necesaria. +CVE-2024-24790 +CVE-2025-68121 diff --git a/workloads/commerce-backend/Dockerfile b/workloads/commerce-backend/Dockerfile index ca15878..029275b 100644 --- a/workloads/commerce-backend/Dockerfile +++ b/workloads/commerce-backend/Dockerfile @@ -59,6 +59,26 @@ ENV NODE_ENV=production \ PORT=9000 \ NPM_CONFIG_UPDATE_NOTIFIER=false +# +# libgnutls30 en la base node:22.18.0-bookworm-slim trae dos CVE +# CRITICAL con fix ya publicado por Debian (CVE-2026-33845, +# CVE-2026-42010) -- detectado por el gate de Trivy imagen del +# pipeline (run 138). Solo se actualiza este paquete puntual, no toda +# la imagen, para minimizar el diff de superficie de la base. +RUN apt-get update \ + && apt-get upgrade -y libgnutls30 \ + && rm -rf /var/lib/apt/lists/* + +# +# El CLI global de npm que trae la imagen base node:*-slim no se usa en +# runtime (el CMD invoca a Medusa directo con `node`, nunca `npm`) y +# arrastra su propia copia vendorizada de `tar` con un CVE CRITICAL +# (CVE-2026-59873, detectado por Trivy en +# usr/local/lib/node_modules/npm/node_modules/tar). Se elimina en vez +# de forzar una versión: no es una dependencia real de este proyecto, +# así que no hay nada que "actualizar" -- solo superficie sin uso. +RUN rm -rf /usr/local/lib/node_modules/npm + # # Solo lo necesario para ejecutar Medusa #