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.
This commit is contained in:
@@ -69,14 +69,27 @@ RUN apt-get update \
|
|||||||
&& apt-get upgrade -y libgnutls30 \
|
&& apt-get upgrade -y libgnutls30 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
#
|
# El CLI global de npm que trae la imagen base node:*-slim arrastra su
|
||||||
# El CLI global de npm que trae la imagen base node:*-slim no se usa en
|
# propia copia vendorizada de `tar` con un CVE CRITICAL
|
||||||
# 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
|
# (CVE-2026-59873, detectado por Trivy en
|
||||||
# usr/local/lib/node_modules/npm/node_modules/tar). Se elimina en vez
|
# usr/local/lib/node_modules/npm/node_modules/tar). Se elimina npm
|
||||||
# de forzar una versión: no es una dependencia real de este proyecto,
|
# entero -- no alcanza con borrar solo el tar vendorizado: el propio
|
||||||
# así que no hay nada que "actualizar" -- solo superficie sin uso.
|
# `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
|
RUN rm -rf /usr/local/lib/node_modules/npm
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -54,9 +54,13 @@ spec:
|
|||||||
- name: migrations
|
- name: migrations
|
||||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.108
|
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.108
|
||||||
imagePullPolicy: IfNotPresent
|
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:
|
command:
|
||||||
- npx
|
- node
|
||||||
- medusa
|
- node_modules/@medusajs/cli/dist/index.js
|
||||||
- db:migrate
|
- db:migrate
|
||||||
envFrom:
|
envFrom:
|
||||||
- configMapRef:
|
- configMapRef:
|
||||||
|
|||||||
Reference in New Issue
Block a user