Ataque de dependencia confusa
¿Qué es Ataque de dependencia confusa?
Ataque de dependencia confusaAtaque a la cadena de suministro en el que el adversario publica un paquete malicioso en un registro público con el mismo nombre que una dependencia interna, engañando a las herramientas de build para que tomen la versión pública.
El dependency confusion explota el comportamiento por defecto de los gestores de paquetes (npm, pip, Maven, NuGet, RubyGems...) que combinan registros públicos y privados. El atacante averigua el nombre de un paquete interno (manifests filtrados, repositorios públicos, DNS), publica en el registro público un paquete con el mismo nombre y versión superior y espera a que los agentes de build lo instalen. La investigación de Alex Birsan en 2021 demostró que decenas de grandes compañías eran vulnerables. Mitigaciones: ámbito explícito de registros (npm scoped packages, upstream feeds en NuGet, pip --index-url), publicar placeholders internos en registros públicos, bloquear resolución saliente, firmar paquetes con Sigstore o PGP y consumir a través de un repositorio de artefactos curado que fije nombre y origen. SLSA, SBOM y la monitorización continua de nuevos paquetes públicos también ayudan a detectar intentos.
● Ejemplos
- 01
Paquete interno internal-utils sustituido por un internal-utils@99.0.0 malicioso en npm.
- 02
Pipeline que descarga una dependencia pip de PyPI en lugar del índice privado.
● Preguntas frecuentes
¿Qué es Ataque de dependencia confusa?
Ataque a la cadena de suministro en el que el adversario publica un paquete malicioso en un registro público con el mismo nombre que una dependencia interna, engañando a las herramientas de build para que tomen la versión pública. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Ataque de dependencia confusa?
Ataque a la cadena de suministro en el que el adversario publica un paquete malicioso en un registro público con el mismo nombre que una dependencia interna, engañando a las herramientas de build para que tomen la versión pública.
¿Cómo funciona Ataque de dependencia confusa?
El dependency confusion explota el comportamiento por defecto de los gestores de paquetes (npm, pip, Maven, NuGet, RubyGems...) que combinan registros públicos y privados. El atacante averigua el nombre de un paquete interno (manifests filtrados, repositorios públicos, DNS), publica en el registro público un paquete con el mismo nombre y versión superior y espera a que los agentes de build lo instalen. La investigación de Alex Birsan en 2021 demostró que decenas de grandes compañías eran vulnerables. Mitigaciones: ámbito explícito de registros (npm scoped packages, upstream feeds en NuGet, pip --index-url), publicar placeholders internos en registros públicos, bloquear resolución saliente, firmar paquetes con Sigstore o PGP y consumir a través de un repositorio de artefactos curado que fije nombre y origen. SLSA, SBOM y la monitorización continua de nuevos paquetes públicos también ayudan a detectar intentos.
¿Cómo defenderse de Ataque de dependencia confusa?
Las defensas contra Ataque de dependencia confusa combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Ataque de dependencia confusa?
Nombres alternativos comunes: Ataque de sustitución de paquetes, Confusión de namespaces.
● Términos relacionados
- appsec№ 1069
Seguridad de la cadena de suministro de software
Disciplina que protege cada eslabón de la producción de software —fuente, dependencias, build, firma, distribución y despliegue— frente a manipulación, código malicioso y pérdida de integridad.
- attacks№ 1116
Ataque a la cadena de suministro
Ataque que compromete a un proveedor de software, hardware o servicios de confianza para llegar a sus clientes finales.
- attacks№ 1184
Typosquatting
Registrar nombres de dominio o de paquete que son erratas o imitaciones visuales de los legítimos para captar a quien comete errores de tecleo o de reconocimiento.
- appsec№ 305
Anclaje de dependencias
Práctica de declarar las dependencias de software en versiones exactas, a menudo junto con hashes criptográficos, para que las builds consuman siempre los mismos artefactos y resistan manipulación de la cadena de suministro.
- appsec№ 971
SCA (Análisis de composición de software)
Análisis automatizado de los componentes open source y de terceros de una aplicación para identificar vulnerabilidades conocidas, problemas de licencia y dependencias obsoletas o de riesgo.
- appsec№ 784
Firma de paquetes
Aplicación de una firma criptográfica a un paquete de software para que los consumidores verifiquen la identidad del publicador y que el artefacto no se ha alterado tras su publicación.
● Véase también
- № 1097Starjacking
- № 647Paquete malicioso de npm
- № 1183Paquete typosquatted