Desarrollo Seguro Dificultad: intermedia
Seguridad de dependencias y cadena de suministro
Tu código es tan seguro como el paquete más olvidado de tu árbol de dependencias.
Una app moderna arrastra cientos o miles de dependencias transitivas. Cada una es código ajeno que ejecutas con tus privilegios. Los ataques a la cadena de suministro explotan justo eso.
1. Fija versiones con un lockfile
Versiona siempre package-lock.json, pnpm-lock.yaml, poetry.lock, etc. Garantiza builds
reproducibles y evita que una versión maliciosa entre silenciosamente.
# BIEN — instala exactamente lo del lockfile, sin resolver versiones nuevas
npm ci
2. Audita vulnerabilidades conocidas
npm audit --omit=dev # Node
pip-audit # Python
Automatízalo con Dependabot, Renovate o Snyk para recibir PRs de actualización. No dejes que las alertas se acumulen: triajea y parchea lo explotable.
3. Cuidado con el typosquatting y los paquetes nuevos
- Verifica el nombre exacto antes de instalar (
crossenvvscross-env). - Desconfía de paquetes muy recientes, con pocas descargas o mantenedor único.
- Revisa qué scripts de instalación (
postinstall) ejecuta un paquete.
4. Minimiza la superficie
Cada dependencia es riesgo. Pregúntate si necesitas el paquete o si son 10 líneas propias.
Elimina dependencias sin usar (depcheck, knip).
5. Verifica integridad y procedencia
- Usa integrity hashes del lockfile; no los edites a mano.
- Adopta SBOM (Software Bill of Materials) para saber qué contiene tu release.
- Donde sea posible, verifica firmas/procedencia (Sigstore, npm provenance).
6. Pipeline y CI
- No des a CI más secretos de los necesarios; limita permisos de los tokens.
- Fija las actions/imágenes por hash, no por tag mutable (
@v4puede cambiar bajo tus pies).
Checklist rápida
- Lockfile versionado e instalación con
npm ci/equivalente. - Auditoría automatizada (Dependabot/Renovate/Snyk) con triaje activo.
- Vigilancia de typosquatting y de scripts
postinstall. - Superficie mínima: dependencias sin usar eliminadas.
- Integridad por hash, SBOM y verificación de procedencia donde aplique.
- Permisos mínimos en CI y acciones fijadas por hash.
- #dependencias
- #supply-chain
- #owasp