mediumCWE-1104A06:2021

Lockfile Faltante

Sin un lockfile, npm install resuelve la versión compatible más reciente de cada dependencia — lo que puede introducir un paquete comprometido en tu próximo deploy.

Cómo Funciona

package.json usa rangos de semver (^1.2.3). Sin package-lock.json, cada instalación puede traer una versión diferente. Si un paquete es comprometido y se publica una nueva versión de parche, tu próximo CI instala la versión maliciosa automáticamente. Los lockfiles fijan versiones exactas para que las instalaciones sean reproducibles.

Código Vulnerable
// MAL: sin lockfile en el repo — cada instalación es no determinística
// .gitignore
package-lock.json  # nunca hagas esto
yarn.lock          # nunca hagas esto
Código Seguro
// BIEN: commitea tu lockfile y usa ci en vez de install
// .gitignore — NO agregues package-lock.json ni yarn.lock

// En CI:
// npm ci  (instala versiones exactas del lockfile, falla si el lockfile está desactualizado)

Ejemplo Real

El ataque de event-stream en 2018 tuvo éxito en parte porque proyectos sin lockfiles jalaron automáticamente la versión maliciosa recién publicada. Los proyectos con lockfiles estuvieron protegidos hasta que actualizaron explícitamente.

Cómo Prevenirlo

  • Commitea package-lock.json o yarn.lock al control de versiones — nunca lo pongas en .gitignore
  • Usa npm ci en vez de npm install en pipelines de CI/CD
  • Habilita Dependabot o Renovate para mantener el lockfile actualizado con PRs revisados
  • Verifica la integridad del lockfile con npm audit signatures en Node 18+

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas