Seguridad de Dependencias
Reglas
- Ejecutar
npm audit en CI — fallar la compilación en vulnerabilidades altas/críticas
- Usar
lockfile-lint para verificar que todos los paquetes se resuelvan al registro oficial de npm
- Fijar versiones principales en
package.json: usar ^ para actualizaciones menores, nunca * o latest
- Revisar nuevas dependencias antes de instalarlas: verificar conteos de descargas de npm, fecha de última publicación, número de mantenedores
- Usar
npm ls --all para auditar dependencias transitivas — tus dependencias directas traen cientos más
- Configurar Snyk, Socket.dev o GitHub Dependabot para alertas de vulnerabilidades en tiempo real
- Actualizar dependencias semanalmente — las dependencias obsoletas acumulan vulnerabilidades conocidas
- name: Auditar dependencias
run: npm audit --audit-level=high
- name: Verificar integridad del lockfile
run: npx lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https
{
"dependencies": {
"next": "^14.0.0",
"react": "^18.0.0",
"zod": "^3.0.0"
}
}
Evitar
npm install random-package sin verificar el paquete primero — el typosquatting es real
- Ignorar las advertencias de
npm audit — las vulnerabilidades conocidas son el vector de ataque más fácil
- Usar
* o latest como rangos de versión — una publicación comprometida afecta instantáneamente tu compilación
- Ejecutar scripts
postinstall de paquetes no confiables sin revisión
- Asumir que los paquetes populares son seguros — incluso
event-stream (millones de descargas) fue comprometido