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.
// 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// 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
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Typosquatting de Paquetes
highInstalar un paquete con un nombre que difiere por un caracter de una librería popular puede instalar malware en vez del paquete real.
Paquetes Abandonados
mediumLas dependencias que no han sido actualizadas en 2+ años no recibirán parches de seguridad cuando se descubran nuevas vulnerabilidades.
Scripts de Instalación Maliciosos
highLos scripts postinstall de npm se ejecutan automáticamente con los permisos de tu sistema durante npm install, convirtiéndolos en un vector común de malware.
Confusión de Dependencias
highLos paquetes internos privados sin prefijo de scope pueden ser hijackeados publicando un paquete público con el mismo nombre pero mayor versión.