From 74ea0c624bde2934ab7ffef956cd356e44b96fc9 Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Sat, 15 Aug 2026 15:36:50 -0500 Subject: [PATCH] fix(commerce-backend): regresion real -- npx roto en produccion tras remediacion de CVE El fix de CVE-2026-59873 (rm -rf npm entero, mergeado en fix/devsecops-medusa-cve-remediation) rompio en produccion el init container "migrations" de workloads/ecommerce/commerce/medusa.yaml, que corria "npx medusa db:migrate" contra la misma imagen. Detectado revisando el estado real del cluster despues del deploy (kubectl get pods): medusa-deploy quedo atascado en Init:CrashLoopBackOff con "npx: executable file not found in $PATH". Se probo primero borrar solo el tar vendorizado dentro de npm (en vez de npm entero) para no tocar npx -- no alcanza: el propio npx depende de ese mismo tar internamente (pacote/arborist), asi que sigue roto igual ("Cannot find module 'tar'"), confirmado localmente. Fix real: mantener el rm -rf de npm completo (sin CVE), y cambiar el init container para invocar el CLI de Medusa directo con node, sin pasar por npx -- mismo patron que ya usa el CMD de runtime de esta misma imagen. Verificado localmente: build OK, "node .../cli/dist/index.js db:migrate --help" funciona sin npm/npx presentes, Trivy en exit 0. --- workloads/commerce-backend/Dockerfile | 27 ++++++++++++++++++------ workloads/ecommerce/commerce/medusa.yaml | 8 +++++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/workloads/commerce-backend/Dockerfile b/workloads/commerce-backend/Dockerfile index 029275b..9712a11 100644 --- a/workloads/commerce-backend/Dockerfile +++ b/workloads/commerce-backend/Dockerfile @@ -69,14 +69,27 @@ 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 +# El CLI global de npm que trae la imagen base node:*-slim 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. +# usr/local/lib/node_modules/npm/node_modules/tar). Se elimina npm +# entero -- no alcanza con borrar solo el tar vendorizado: el propio +# `npx` depende de ese tar internamente (pacote/arborist) incluso para +# ejecutar un binario ya instalado localmente, así que queda roto igual +# si el paquete tar desaparece pero npm sigue ahí (confirmado +# probando "npx medusa --version" contra la imagen: falla con +# "Cannot find module 'tar'"). +# +# OJO con este cambio: el init container "migrations" de +# workloads/ecommerce/commerce/medusa.yaml corría "npx medusa +# db:migrate" contra esta misma imagen -- un primer intento de este +# fix borraba npm sin ajustar ese comando y rompió el init container +# en producción ("npx: executable file not found in $PATH", +# medusa-deploy atascado en Init:CrashLoopBackOff, detectado revisando +# el estado real del cluster después del deploy). El fix completo +# incluye cambiar ese comando a invocar el CLI directo con `node`, sin +# pasar por npm/npx -- mismo patrón que ya usa el CMD de este +# Dockerfile más abajo. RUN rm -rf /usr/local/lib/node_modules/npm # diff --git a/workloads/ecommerce/commerce/medusa.yaml b/workloads/ecommerce/commerce/medusa.yaml index f924da0..7762ff5 100644 --- a/workloads/ecommerce/commerce/medusa.yaml +++ b/workloads/ecommerce/commerce/medusa.yaml @@ -54,9 +54,13 @@ spec: - name: migrations image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.108 imagePullPolicy: IfNotPresent + # node directo, sin npx: la imagen ya no trae npm (ver + # Dockerfile de commerce-backend, remediacion de + # CVE-2026-59873) -- mismo binario que ya invoca el CMD de + # runtime de esa misma imagen. command: - - npx - - medusa + - node + - node_modules/@medusajs/cli/dist/index.js - db:migrate envFrom: - configMapRef: