Ataques a la cadena de suministro: riesgos en las dependencias de software
Lectura de 11 min aprox.
Un ataque a la cadena de suministro explota las relaciones de confianza en el proceso de desarrollo y distribución de software para distribuir malware a través de actualizaciones y bibliotecas legítimas. Según el informe de Sonatype de 2024, los ataques a la cadena de suministro de código abierto aumentaron un 156% interanual, con más de 700,000 paquetes maliciosos identificados acumulativamente. A partir de 2025, la generación de código malicioso usando IA y la inserción sofisticada de puertas traseras en paquetes legítimos han surgido como nuevas amenazas. Esta amenaza, difícil de detectar con contramedidas convencionales, afecta no solo a los desarrolladores sino a todos los usuarios de software. Gartner predice que el 45% de todas las organizaciones experimentarán ataques a la cadena de suministro para 2025, haciendo urgente la preparación tanto para individuos como organizaciones. Este artículo explica los mecanismos de los ataques a la cadena de suministro hasta las estrategias de defensa organizacional e individual, con ejemplos y datos específicos.
Cómo funcionan los ataques a la cadena de suministro
El panorama completo del incidente SolarWinds
El incidente de SolarWinds descubierto en 2020 fue un caso emblemático que demostró la gravedad de los ataques a la cadena de suministro al mundo. Los atacantes infiltraron el sistema de compilación de SolarWinds e incrustaron una puerta trasera (SUNBURST) en una actualización legítima del software de monitoreo de red Orion. Esta actualización fue instalada por aproximadamente 18,000 organizaciones, y alrededor de 100 organizaciones, incluidas agencias del gobierno de EE.UU., fueron comprometidas. Los atacantes solo modificaron parte del pipeline de compilación, sin dejar rastros en el repositorio de código fuente, haciéndolo indetectable mediante revisión de código. Este incidente destacó la vulnerabilidad estructural de que cuando la "cadena de confianza" del software se rompe en un solo punto, todos los usuarios posteriores se ven afectados.
Contaminación de dependencias en npm / PyPI
Los ataques dirigidos a registros de paquetes son una amenaza más común y frecuente. En 2021, el paquete npm ua-parser-js (más de 8 millones de descargas semanales) tuvo su cuenta de mantenedor secuestrada, y se publicó una versión maliciosa con un minero de criptomonedas. En PyPI, se descubrieron aproximadamente 450 paquetes de typosquatting en 2023, distribuyendo código de robo de información aprovechando errores tipográficos en nombres de paquetes legítimos.
Las técnicas de envenenamiento de dependencias se clasifican principalmente en tres tipos. Primero, la manipulación de paquetes legítimos mediante el secuestro de cuentas de mantenedores. Segundo, la publicación de paquetes falsos mediante typosquatting (ej: lodahs en lugar de lodash). Tercero, la explotación de Dependency Confusion registrando paquetes con el mismo nombre que paquetes internos en registros públicos. Cuando el investigador de seguridad Alex Birsan demostró Dependency Confusion en 2021, logró ejecutar código en los sistemas de compilación de más de 35 empresas, incluyendo Apple, Microsoft y PayPal.
Infiltración en pipelines CI/CD
Los pipelines CI/CD son infraestructura de desarrollo que automatiza la compilación, pruebas y despliegue de código, pero son objetivos de alto valor para los atacantes. En el incidente de Codecov de 2022, el script Bash Uploader de la herramienta CI fue manipulado, enviando las variables de entorno de los usuarios (claves API, tokens, credenciales) a servidores externos. También se han reportado casos de GitHub Actions de terceros comprometidas, y en 2024, la popular acción tj-actions/changed-files fue manipulada, afectando aproximadamente 23,000 repositorios. Los pipelines CI/CD son particularmente peligrosos porque tienen permisos de despliegue a producción, lo que significa que un compromiso da a los atacantes acceso directo a producción.
¿Qué debería hacer realmente?
La defensa completa contra ataques a la cadena de suministro es difícil, pero hay formas de reducir significativamente el riesgo. Los usuarios individuales deben habilitar las actualizaciones automáticas del SO y aplicaciones, esperando 1-2 días antes de aplicar actualizaciones importantes. Solo instale extensiones de navegador y aplicaciones de fuentes confiables, y elimine las innecesarias. Los desarrolladores deben establecer contraseñas únicas de más de 20 caracteres con autenticación de dos factores basada en TOTP en las cuentas de registros de paquetes, y fijar las versiones de dependencias a hashes de commit.
Protección de cuentas de desarrollador
Cuentas de registros de paquetes
Las cuentas de registros de paquetes como npm, PyPI y RubyGems son los objetivos más atacados como punto de partida para ataques a la cadena de suministro. npm obligó la autenticación de dos factores para mantenedores de los 500 paquetes principales desde 2022, pero sigue siendo opcional para otros paquetes. Genere contraseñas aleatorias de más de 20 caracteres con Passtsuku.com y siempre configure la autenticación de dos factores con una aplicación TOTP o llave de seguridad de hardware. La autenticación por SMS no se recomienda debido al riesgo de ataques de intercambio de SIM.
Las cuentas con permisos de publicación de paquetes requieren una gestión particularmente estricta. Para npm, use el comando `npm access` para verificar qué usuarios tienen permisos de publicación y elimine rápidamente los permisos innecesarios. Al gestionar en equipo, minimice el número de miembros con permisos de publicación y requiera autenticación de dos factores para todas las operaciones de publicación.
Protección de repositorios de código fuente
Las cuentas de GitHub y GitLab tienen acceso no solo al código fuente sino también a las configuraciones de pipelines CI/CD y secretos, haciendo que el impacto de un compromiso sea extenso. Según el informe de seguridad de GitHub de 2024, los compromisos de cuentas a través de tokens y contraseñas filtrados representan aproximadamente el 40% de los incidentes relacionados con repositorios.
Además de contraseñas fuertes generadas por Passtsuku.com, las siguientes configuraciones son esenciales para la protección del repositorio: configurar reglas de protección de ramas para prohibir pushes directos a la rama principal; requerir al menos una aprobación de revisión para pull requests; requerir commits firmados para detectar manipulación de commits.
Seguridad de servicios CI/CD
Los servicios CI/CD como GitHub Actions, CircleCI y Jenkins almacenan secretos altamente sensibles como claves de despliegue, tokens API y credenciales de nube. Si estos secretos se filtran, conduce directamente al acceso no autorizado a entornos de producción. Siempre almacene los secretos en el almacén de secretos cifrado del servicio CI/CD y configúrelos para que no aparezcan en los logs. Para GitHub Actions, es importante establecer los permisos de `GITHUB_TOKEN` al mínimo y especificar explícitamente solo los permisos necesarios con la clave `permissions`.
Al usar acciones y plugins CI/CD de terceros, fije las versiones a hashes de commit. La especificación por etiqueta o nombre de rama conlleva el riesgo de manipulación mediante reasignación de etiquetas. Para la gestión de claves API y tokens en pipelines CI/CD, consulte también las mejores prácticas de gestión de claves API. Para aprender sistemáticamente sobre la protección de cuentas de desarrollador, guías de seguridad de cuentas de desarrollador y protección de registros de paquetes (Amazon) son útiles.
Estrategias de defensa organizacional
Aprovechamiento de SBOM (Lista de materiales de software)
SBOM (Software Bill of Materials) es un documento que lista todos los componentes y sus dependencias contenidos en el software. En EE.UU., la Orden Ejecutiva 14028 de 2021 obligó a proporcionar SBOM para el software entregado al gobierno federal. Al crear y gestionar SBOMs, puede identificar rápidamente los sistemas afectados cuando se descubren vulnerabilidades en las bibliotecas en uso.
Hay dos formatos estándar de SBOM: SPDX (Linux Foundation) y CycloneDX (OWASP). En npm, puede generar un SBOM en formato CycloneDX con el comando npm sbom --sbom-format cyclonedx. Se recomienda comparar regularmente los SBOMs generados con bases de datos de vulnerabilidades (NVD, OSV) para detectar componentes con vulnerabilidades conocidas. Combinar esto con la auditoría de seguridad de código abierto permite una gestión más sistemática de la seguridad de las dependencias. Tenga en cuenta que los SBOMs son instantáneas estáticas, por lo que deben regenerarse con cada compilación para mantener la actualidad.
Firma y verificación de código
La firma de código es un mecanismo para verificar el autor del software y si ha sido manipulado. El proyecto Sigstore está ganando atención como infraestructura que proporciona firma gratuita para software de código abierto. npm ha soportado procedencia basada en Sigstore desde 2023, permitiendo la verificación criptográfica de qué repositorio y commit se compiló un paquete. Puede verificar las firmas de paquetes instalados con el comando `npm audit signatures`.
cosign (Sigstore) es ampliamente adoptado para firmar imágenes de contenedores. Al firmar imágenes publicadas en Docker Hub o GitHub Container Registry y verificar firmas en el despliegue, puede prevenir la ejecución de imágenes manipuladas. En entornos Kubernetes, combinando con motores de políticas como Kyverno u OPA Gatekeeper, es posible bloquear automáticamente el despliegue de imágenes sin firmar.
Principio de mínimo privilegio
Para minimizar el daño de los ataques a la cadena de suministro, es importante el principio de otorgar solo los permisos mínimos necesarios a cada componente. Otorgue a las cuentas de servicio del pipeline CI/CD solo los permisos necesarios para el despliegue, no privilegios de administrador. Para AWS, especifique ARNs de recursos concretos y acciones en las políticas IAM y evite el uso de comodines.
Los permisos de los paquetes de dependencias también deben restringirse. En Node.js, el flag `--experimental-permission` para restringir el acceso a la red y al sistema de archivos en tiempo de ejecución está disponible desde v20. Deno está aislado por defecto, requiriendo permiso explícito para el acceso a la red y al sistema de archivos. Al aprovechar estos mecanismos, incluso si se incluye un paquete malicioso, el alcance del daño puede limitarse.
Medidas que pueden tomar los usuarios individuales
Los ataques a la cadena de suministro no son solo un problema para desarrolladores y organizaciones. Todos los usuarios de software pueden verse potencialmente afectados. Aquí hay un resumen de las medidas que puede tomar como usuario individual.
Primero, habilite las actualizaciones automáticas para su SO y aplicaciones. Sin embargo, para actualizaciones importantes, tenga precaución esperando 1-2 días antes de aplicar en lugar de inmediatamente después del lanzamiento. Ha habido casos donde código malicioso fue incluido en actualizaciones legítimas, con problemas descubiertos poco después del lanzamiento. Haga el hábito de respaldar datos importantes antes de aplicar actualizaciones.
Evite extensiones de navegador y aplicaciones de smartphone con pocas instalaciones o reseñas, y verifique la credibilidad del desarrollador antes de instalar. En 2023, aproximadamente 34,000 extensiones maliciosas fueron eliminadas de Chrome Web Store, mostrando que incluso las tiendas oficiales no son necesariamente seguras. Consulte también la seguridad de extensiones de navegador. Elimine rápidamente las extensiones y aplicaciones que ya no use para reducir la superficie de ataque.
Establecer contraseñas fuertes únicas para cada servicio con Passtsuku.com y habilitar la autenticación de dos factores también sirve como defensa indirecta contra ataques a la cadena de suministro. Esto se alinea con el principio de seguridad Zero Trust de "nunca confiar, siempre verificar." Incluso si los atacantes infiltran el sistema de un proveedor de servicios y roban hashes de contraseñas, las contraseñas aleatorias suficientemente largas son extremadamente difíciles de descifrar offline. Establezca contraseñas que muestren 100 bits o más de entropía en el medidor de fortaleza de Passtsuku.com. Para comprender el panorama completo de los ataques a la cadena de suministro, estudios de casos y estrategias de defensa contra ataques a la cadena de suministro (Amazon) son útiles.
Los ataques a la cadena de suministro son una amenaza que sacude el modelo de confianza del software. Aunque la defensa completa es difícil, combinar la visibilidad de SBOM, la verificación de firma de código, el mínimo privilegio riguroso y la protección de cuentas a nivel individual puede reducir significativamente el riesgo. Debido a que las dependencias de software son difíciles de ver, se requiere un enfoque consciente para gestionarlas y revisarlas regularmente.
Actúa ahora
- Habilite las actualizaciones automáticas del SO y aplicaciones y aplique parches de seguridad rápidamente (espere 1-2 días para actualizaciones importantes)
- Revise las extensiones del navegador y elimine las innecesarias (Chrome: verifique en chrome://extensions)
- Desarrolladores: establezcan contraseñas únicas de más de 20 caracteres generadas por Passtsuku.com para cuentas de npm / PyPI / GitHub y habiliten la autenticación de dos factores basada en TOTP
- Establezca contraseñas únicas para cada servicio con Passtsuku.com para prepararse ante el posible robo de hashes de contraseñas por ataques a la cadena de suministro
Preguntas frecuentes
- ¿Qué es un ataque a la cadena de suministro?
- Es un método de ataque que infiltra el proceso de desarrollo o distribución de software o hardware para insertar malware en productos o actualizaciones legítimas. Es muy difícil de detectar porque los usuarios confían en la fuente.
- ¿Cómo puedo protegerme de los ataques a la cadena de suministro?
- Verifique que las actualizaciones provengan de fuentes legítimas y acostúmbrese a comprobar las firmas digitales. Minimice las herramientas y bibliotecas que usa y revise regularmente los avisos de seguridad.
- ¿Hay ejemplos de ataques a la cadena de suministro que causaron daños importantes?
- El incidente de SolarWinds en 2020 es un ejemplo destacado. Se insertó una puerta trasera en una actualización legítima de software de gestión de redes, afectando a miles de organizaciones, incluidas agencias del gobierno de EE.UU.
¿Te resultó útil este artículo?