Ciberamenazas y contramedidas

Ataque a la cadena de suministro

Se lee en aproximadamente 4 minutos

Qué es un ataque a la cadena de suministro

Un ataque a la cadena de suministro es un método de ataque que, en lugar de atacar directamente a la organización objetivo, se infiltra a través de la cadena de suministro de software, bibliotecas, servicios o hardware en los que la organización confía. La mayor amenaza es que, al explotar mecanismos de actualización legítimos y dependencias, es fácil evadir las medidas de seguridad convencionales.

En el desarrollo de software moderno, una sola aplicación depende de cientos a miles de bibliotecas de código abierto. Un atacante solo necesita inyectar código malicioso en un punto de esta cadena de dependencias para afectar a todas las organizaciones que utilizan esa biblioteca. Cuando se combina con ataques de día cero, la detección se vuelve aún más difícil.

Patrones de ataque típicos

Los ataques a la cadena de suministro tienen varios patrones típicos.

  • Compromiso del sistema de compilación: Infiltrarse en la infraestructura de compilación y distribución del software para incrustar malware en binarios legítimos. En el incidente de SolarWinds (2020), el pipeline de compilación fue comprometido y se distribuyeron actualizaciones maliciosas a aproximadamente 18.000 organizaciones.
  • Contaminación de dependencias: Publicar paquetes maliciosos en registros de paquetes como npm o PyPI. Se utilizan técnicas de typosquatting (nombres similares a paquetes legítimos) y confusión de dependencias (Dependency Confusion).
  • Secuestro de mantenedores legítimos: Comprometer la cuenta de un mantenedor de un proyecto de código abierto e introducir código malicioso en versiones legítimas. En el incidente de xz Utils (2024), se insertó una puerta trasera después de un largo período de construcción de confianza.
  • Abuso de pipelines CI/CD: Infiltrarse en entornos CI/CD como GitHub Actions o Jenkins para alterar los artefactos de compilación.

En todos los patrones, el malware se propaga a través de canales de distribución legítimos, lo que dificulta que el receptor detecte la irregularidad.

Medidas de defensa y marcos de referencia

La defensa contra ataques a la cadena de suministro es insuficiente con una sola medida y requiere un enfoque multicapa.

Gestión de dependencias

  • Creación de SBOM (Software Bill of Materials): Catalogar todos los componentes de los que depende la aplicación como base para la gestión de vulnerabilidades.
  • Fijación de dependencias y verificación de hash: Fijar versiones con archivos de bloqueo y verificar los valores hash de los paquetes para detectar alteraciones.
  • Uso de registros privados: En lugar de referenciar paquetes externos directamente, utilizar un registro privado que contenga solo paquetes verificados.

Protección de compilación y despliegue

  • Compilaciones reproducibles: Garantizar que el mismo código fuente siempre genere el mismo binario, permitiendo detectar alteraciones en el entorno de compilación.
  • Firma y verificación: Agregar firmas digitales a los artefactos de compilación y verificar las firmas en el destino de distribución. Se pueden utilizar herramientas como Sigstore.
  • Rigurosa seguridad de contenedores: Realizar escaneo de imágenes de contenedores, gestión de imágenes base y verificación de firmas de imágenes.

Medidas organizacionales

  • Aplicación de confianza cero: No confiar en ningún componente dentro de la cadena de suministro y verificar continuamente.
  • Plan de respuesta a incidentes: Incluir escenarios de compromiso de la cadena de suministro y preparar procedimientos desde la detección hasta la contención.
  • Marco SLSA (Supply-chain Levels for Software Artifacts): Elevar gradualmente el nivel de medidas siguiendo el modelo de madurez de seguridad de la cadena de suministro propuesto por Google.

Riesgos de IaC y la cadena de suministro de infraestructura

Los ataques a la cadena de suministro no se limitan al código de aplicación, sino que también se extienden al ámbito de IaC (Infrastructure as Code). Si se alteran componentes de terceros utilizados en definiciones de infraestructura, como módulos de Terraform o plantillas de CloudFormation, todo el entorno en la nube podría verse comprometido.

Para mitigar los riesgos de la cadena de suministro de IaC, las siguientes medidas son efectivas.

  • Fijar las versiones de módulos de Terraform y charts de Helm, y verificar con hash
  • Realizar revisiones de código antes de utilizar módulos de terceros
  • Revisar siempre las diferencias de cambios de infraestructura (plan/changeset) por una persona antes de aplicarlos
  • Restringir los permisos de ejecución del pipeline de IaC al mínimo necesario basándose en el principio de privilegios mínimos

Un sistema que verifique la confiabilidad de la cadena de suministro tanto en software como en infraestructura es indispensable para la seguridad moderna.

Conceptos erróneos comunes

El software de proveedores de confianza es seguro
Como demostró el incidente de SolarWinds, incluso el software legítimo de grandes proveedores puede contener código malicioso si el proceso de compilación es comprometido. La confiabilidad del proveedor y la seguridad del software son cuestiones separadas, y la verificación también es necesaria por parte del receptor.
El código abierto es seguro porque muchos ojos lo vigilan
Muchos proyectos de código abierto dependen de un pequeño número de mantenedores, y no todos los commits se revisan adecuadamente. En el incidente de xz Utils, el atacante pasó años ganando la confianza del mantenedor antes de insertar una puerta trasera.

Comparación entre ataques a la cadena de suministro y ataques de día cero

Ataque a la cadena de suministro

Se infiltra a través de cadenas de suministro de confianza. Difícil de detectar al explotar canales de actualización legítimos. Amplio alcance de impacto, con posibilidad de afectar a miles de organizaciones con un solo compromiso.

Ataque de día cero

Explota directamente vulnerabilidades desconocidas. El ataque se realiza cuando no existe un parche. Se utiliza frecuentemente en ataques dirigidos, con un alcance de impacto relativamente limitado.

Términos relacionados

Artículos relacionados