Compare commits

..
Author SHA1 Message Date
devops 93f071c175 Merge fix/devsecops-medusa-cve-remediation: remediacion CVE + excepcion documentada
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 21s
Build and Push Medusa / Construir y publicar Medusa (push) In progress
2026-08-15 13:50:09 -05:00
devops 0c1076eda0 fix(commerce-backend): remediar 3/5 CVE CRITICAL, documentar excepcion para 2
Run 138 de build-medusa.yaml encontro 5 CVE CRITICAL reales (no falsos
positivos) al escanear la imagen con Trivy:

Remediados en el Dockerfile (verificado localmente con Trivy real,
exit 0):
- CVE-2026-33845 / CVE-2026-42010 (libgnutls30, base Debian): apt
  upgrade puntual del paquete.
- CVE-2026-59873 (tar vendorizado dentro del npm CLI global de la
  imagen base node:*-slim): se elimina /usr/local/lib/node_modules/npm
  completo -- no es una dependencia real del proyecto (el CMD nunca
  invoca npm en runtime), asi que no hay nada que "actualizar".

Documentados como excepcion en workloads/commerce-backend/.trivyignore
(con --ignorefile solo en este workflow, no afecta a build.yaml ni
deploy-docs.yaml):
- CVE-2024-24790 / CVE-2025-68121 (Go stdlib embebido en el binario de
  esbuild que trae [email protected], dependencia interna de
  @medusajs/admin-sdk). Se probo el fix real (override de esbuild a
  una version mas nueva) y rompio el build del admin panel --
  [email protected] fija "esbuild: ^0.21.3" como dependencia directa, y
  esbuild >=0.24 cambio el manejo de targets de transpilacion que vite
  5 espera. No existe un patch dentro de la serie 0.21.x con un Go
  toolchain mas nuevo. Requiere subir @medusajs/admin-sdk/vite en un
  cambio aparte, fuera de alcance de este pipeline de seguridad.
2026-08-15 13:49:51 -05:00
devops 80d99f9f3f Merge fix/devsecops-trivy-timeout: fix real tras primer intento fallido (run 136)
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 20s
Build and Push Medusa / Construir y publicar Medusa (push) Failing after 15m1s
2026-08-15 13:10:55 -05:00
devops 81f01c7ade fix(devsecops): timeout de 15m en Trivy imagen para commerce-backend
El run 136 (primer intento de este pipeline, recien mergeado a main)
fallo en el paso "Escanear imagen (Trivy) - CRITICAL bloquea" con
"context deadline exceeded" a los 4m52s -- no una CVE, un timeout de
herramienta. Causa: el default de Trivy (5m) no alcanza para escanear
(vuln + secret scan de la imagen completa) el node_modules de Medusa
v2, mas pesado que el del frontend. Se agrega --timeout 15m0s a ambos
escaneos de imagen (CRITICAL y HIGH).
2026-08-15 13:09:47 -05:00
devops 45312fc189 Merge fix/devsecops-commerce-backend: pipeline de seguridad para commerce-backend
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 42s
Build and Push Medusa / Construir y publicar Medusa (push) Failing after 9m31s
2026-08-15 12:51:41 -05:00
3 changed files with 70 additions and 0 deletions
+16
View File
@@ -211,6 +211,19 @@ jobs:
# CRITICAL bloquea el pipeline: no se sube una imagen con una CVE
# crítica conocida y con fix disponible.
# --timeout 15m0s: el default de Trivy (5m) no alcanza para esta
# imagen -- a diferencia del frontend, commerce-backend arrastra
# el node_modules completo de Medusa v2 (framework + admin-sdk +
# cli), muchos más archivos que escanear tanto para vulnerabilidades
# como para el escaneo de secretos que Trivy corre por default
# dentro de la imagen. Visto en vivo: "context deadline exceeded"
# 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: |
@@ -219,6 +232,8 @@ jobs:
--severity CRITICAL \
--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.
@@ -230,6 +245,7 @@ jobs:
--severity HIGH \
--exit-code 0 \
--ignore-unfixed \
--timeout 15m0s \
"${IMAGE_NAME}:${{ steps.vars.outputs.VERSION }}"
- name: Instalar Syft
+34
View File
@@ -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 [email protected], 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: [email protected] 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
+20
View File
@@ -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
#