mediumCWE-1104A06:2021

Lockfile Faltante (Config de Proyecto)

Un proyecto sin un lockfile commiteado puede instalar diferentes versiones de dependencias en cada máquina, haciendo builds no reproducibles y ataques de supply chain más difíciles de detectar.

Cómo Funciona

Este problema extiende la verificación de lockfile de supply chain (ID 141) a la perspectiva de configuración del proyecto. Sin un lockfile en la raíz del repo, tu CI, builds de Docker y nuevas máquinas de desarrolladores resuelven versiones de dependencias de forma independiente.

Código Vulnerable
# MAL: package-lock.json listado en .gitignore
# .gitignore
package-lock.json
yarn.lock
pnpm-lock.yaml
# npm install en CI jala lo que sea que esté disponible — no determinístico
Código Seguro
# BIEN: lockfile commiteado, CI usa 'npm ci' para instalaciones reproducibles
# .gitignore — lockfiles NO listados

# Dockerfile
COPY package.json package-lock.json ./
RUN npm ci --only=production  # falla si el lockfile no coincide con package.json

Ejemplo Real

Los proyectos que ponen en gitignore su lockfile frecuentemente descubren divergencia de dependencias — diferentes miembros del equipo corriendo diferentes versiones del mismo paquete, llevando a bugs de 'funciona en mi máquina' y postura de seguridad inconsistente entre entornos.

Cómo Prevenirlo

  • Elimina package-lock.json de .gitignore inmediatamente si está ahí
  • Commitea el lockfile y usa npm ci en todos los builds de CI/CD y Docker
  • Configura npm para siempre generar un lockfile: agrega 'package-lock=true' a .npmrc
  • Periódicamente corre npm audit con el lockfile para detectar vulnerabilidades en versiones fijadas

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas