A medida que aumenta el número de organizaciones que dependen de diversas herramientas externas y proveedores de software para prestar servicios a sus clientes, la complejidad de la cadena de suministro de software no hace sino aumentar, por lo que resulta vital comprender cómo interactúan estos componentes y afectan al sistema global.

En este artículo se desglosan las partes de la cadena de suministro de software, sus vulnerabilidades y las soluciones para protegerla contra piratas informáticos y otros agentes malintencionados.

Pasos para la seguridad de la cadena de suministro de software

  1. Evaluación de proveedores
  2. Control continuo
  3. Implantar el SBOM
  4. Cifrado y comunicación segura
  5. Auditorías y pruebas periódicas
  6. Realización de pruebas de seguridad automatizadas
  7. Gestión de la dependencia
  8. Formación en seguridad

¿Qué es una cadena de suministro de software?

Una cadena de suministro de software hace referencia a todos los procesos, herramientas y componentes de terceros que conforman el desarrollo, la producción y la entrega de productos de software. Abarca desde el código que escriben los desarrolladores hasta las bibliotecas de código abierto, las aplicaciones de terceros y los servicios en la nube.

Elementos clave de una cadena de suministro de software

Una infografía que enumera los elementos clave de una cadena de suministro de software.
  • Desarrolladores y herramientas de desarrollo: Entornos de desarrollo integrados (IDE), repositorios de código fuente y sistemas de control de versiones.
  • Software y bibliotecas de código abierto: Dependencias de terceros que se incorporan al software.
  • Terceros proveedores: Herramientas de terceros y proveedores de software que integran soluciones con la aplicación principal.
  • Canalizaciones CI/CD: Automatización de sistemas que prueban, construyen y luego despliegan el software.
  • Infraestructura en nube: Entornos de alojamiento y servicios en la nube utilizados en el producto final.

¿Por qué es tan importante la seguridad de la cadena de suministro de software?

La seguridad de la cadena de suministro de software es importante porque la mayoría del software moderno depende en gran medida de herramientas de terceros y bibliotecas de código abierto, entre otras proporcionadas por proveedores externos. Un solo punto débil dentro de una cadena de suministro podría dejar a una organización expuesta a graves riesgos cibernéticos, de ahí que la cadena de suministro forme parte de la ciberseguridad general.

El creciente número de ataques a la cadena de suministro indica que las organizaciones deben hacer hincapié en la seguridad a lo largo del ciclo de vida del software. Una estrategia eficaz de seguridad de la cadena de suministro fomenta una cultura que fija las vulnerabilidades de las herramientas y bibliotecas de terceros para que se solucionen y mitiguen antes de que repercutan en todo el ecosistema del software.

Ejemplos de ataques a la cadena de suministro de software

Cada uno de los siguientes incidentes ilustra a grandes rasgos cómo los atacantes han aprovechado las vulnerabilidades de la cadena de suministro de software para producir un impacto de amplio alcance.

Ataque de SolarWinds

El sitio ataque a SolarWinds fue uno de los ataques a la cadena de suministro de software más conocidos y devastadores de la historia reciente. Ocurrió en 2020 y consistió en un sofisticado ataque al software de monitorización y gestión de TI Orion de SolarWinds.

Este ataque puso de relieve la vulnerabilidad de la cadena de suministro de software y, en particular, los problemas en el ámbito de las relaciones de confianza que existen entre los vendedores y sus clientes. Esto ha hecho que aumente la concienciación sobre la supervisión continua y las prácticas de seguridad sólidas, incluso con proveedores bien establecidos.

Ataque NotPetya

El ataque ataque NotPetyaocurrido en junio de 2017, es un ejemplo clásico de ataque destructivo a la cadena de suministro de software que paralizó empresas de todo el mundo. A diferencia de otros ataques, NotPetya no se centraba en el robo de datos, sino que estaba diseñado para causar el máximo trastorno.

Una vez liberado, el malware se propagó con facilidad de red en red, aprovechando los puntos débiles de los sistemas de Microsoft que estaban sin parchear. NotPetya cifró los datos de los usuarios y luego presentó un mensaje de rescate solicitando el pago en Bitcoin. El daño financiero total de NotPetya se estimó en más de 10.000 millones de dólares, lo que lo convierte en uno de los ciberataques más destructivos económicamente de la historia moderna.

Ataque CodeCov

A principios de 2021, el ataque CodeCov sirvió como recordatorio de cómo incluso las herramientas de desarrollo de software de confianza pueden verse comprometidas para lanzar ataques a gran escala en la cadena de suministro. CodeCov era una herramienta muy utilizada por los desarrolladores para medir la cobertura del código, y sufrió una brecha maliciosa que pasó desapercibida durante varios meses.

Los atacantes fueron capaces de infiltrarse en los entornos CI/CD de múltiples organizaciones, exponiendo potencialmente propiedad intelectual altamente sensible, credenciales y secretos de infraestructura. Fue una brecha que realmente hizo sonar las alarmas sobre la seguridad de la tubería CI/CD y la necesidad de tener controles más fuertes en términos de seguridad con herramientas de desarrollo.

¿Cuáles son los riesgos de seguridad para la cadena de suministro de software?

Hay toda una serie de riesgos críticos relacionados con la cadena de suministro de software, entre ellos:

  1. Bibliotecas de código abierto comprometidas: Los atacantes suelen apuntar a las bibliotecas de código abierto porque saben que se utilizan ampliamente en todos los sectores.
  2. Terceros proveedores malintencionados: Los proveedores sin escrúpulos pueden introducir puertas traseras, malware o prácticas inseguras.
  3. Canalizaciones CI/CD comprometidas: Los atacantes pueden utilizar canalizaciones de automatización inseguras para inyectar código malicioso.
  4. Actualizaciones de software inseguras: Los atacantes pueden interceptar las actualizaciones de software o alterarlas con la intención de propagar malware, o incluso obtener acceso no autorizado.

Riesgo nº 1: Software de código abierto

El software de código abierto (OSS) desempeña un papel fundamental en el desarrollo de software moderno, y muchas organizaciones confían en él para acelerar el desarrollo y reducir costes. 

Sin embargo, la diferencia del OSS en cuanto a la creación de riesgos únicos para la cadena de suministro de software es que normalmente lo desarrollan comunidades, no equipos de seguridad dedicados. Los atacantes son conscientes de ello y ahora atacan activamente los componentes de código abierto para intentar introducir vulnerabilidades o malware.

¿Por qué es vulnerable el software de código abierto?

  • Código no validado: Las bibliotecas y componentes de código abierto pueden no pasar por el mismo nivel de pruebas de seguridad que el software comercial.
  • Dependencias obsoletas: La mayoría de los proyectos de código abierto no se mantienen activamente, lo que significa que las vulnerabilidades pueden estar incluidas en el código durante un largo periodo de tiempo.
  • Ataques a la cadena de suministro: Los atacantes pueden comprometer bibliotecas populares de código abierto accediendo al repositorio o inyectando código malicioso en las actualizaciones.

Riesgo nº 2: Terceros proveedores

Los proveedores externos forman parte de cualquier cadena de suministro de software; sin embargo, conllevan algunos riesgos, ya que sus prácticas de seguridad afectan a la integridad del software.

El riesgo de terceros es el que se crea en su sistema debido a aplicaciones, bibliotecas, servicios o incluso hardware físico de terceros. Una postura de seguridad débil por parte de un proveedor puede exponer estratégicamente toda su cadena de suministro a accesos no autorizados, robo de datos o inyección de malware.

¿Por qué son vulnerables los proveedores externos?

  • Malos hábitos de seguridad: No todos los proveedores tienen las mismas normas de seguridad; algunos de ellos son más vulnerables a un ataque.
  • Falta de transparencia: Los proveedores no siempre revelan sus prácticas de seguridad, por lo que es difícil evaluar la naturaleza del riesgo que entrañan.
  • Código no supervisado: Cuando los vendedores desarrollan contribuciones de código, ese código puede incluir vulnerabilidades secretas que pueden ser explotadas.
  • Cuestiones de conformidad: Utilización de proveedores externos que no cumplan los requisitos normativos podría acarrear problemas legales y multas.

Riesgo nº 3: Canalizaciones CI/CD

Las canalizaciones de integración continua/despliegue continuo (CI/CD) son la columna vertebral del desarrollo de software moderno para la integración, las pruebas y el despliegue automatizados del código.

Sin embargo, todas estas ventajas conllevan considerables riesgos de seguridad en la cadena de suministro de software. Si no están bien protegidos, los pipelines de CI/CD se convierten en un objetivo muy atractivo para un atacante interesado en manipular el desarrollo plantando código malicioso en ellos.

¿Por qué son vulnerables las canalizaciones CI/CD?

  • Acceso automatizado a sistemas críticos: Las canalizaciones CI/CD tienen acceso automático a los repositorios de código, los entornos de prueba y los sistemas de producción. Si un atacante accediera al canal CI/CD, podría manipular sin ser detectado la compilación o el despliegue del software.
  • Falta de controles de seguridad: La mayoría de las organizaciones dan prioridad a la velocidad de sus conductos CI/CD sobre la seguridad. Los efectos resultantes son controles de acceso débiles o inexistentes, registros insuficientes y ausencia de pruebas de vulnerabilidades de seguridad.
  • Integración con servicios de terceros: Un CI/CD normal interactúa con servicios e integraciones de terceros, como marcos de pruebas, servicios en la nube y herramientas de análisis de código, entre otros. Cada punto de integración se convierte en una entrada potencial para un atacante si esas herramientas tienen debilidades o malas prácticas de seguridad.
  • Gestión de secretos: Los pipelines utilizan información sensible como claves API, tokens y contraseñas para conectar una plétora de servicios diferentes. Un almacenamiento y exposición deficientes de estos secretos dentro de la tubería permiten a los atacantes utilizarlos para violar otras partes del entorno.

Riesgo nº 4: Actualizaciones de software

Uno de los riesgos más ignorados pero significativos para la cadena de suministro de software son las actualizaciones de software inseguras. Las actualizaciones de software se realizan con regularidad para mantener el rendimiento del software, añadirle nuevas funciones y, lo que es más importante, parchear vulnerabilidades.

Sin embargo, cuando estas actualizaciones reciben una postura de seguridad insuficiente, pueden convertirse en un vector de ataque crítico, que puede proporcionar una vía para que el atacante distribuya software comprometido directamente a los usuarios finales.

¿Por qué son vulnerables las actualizaciones de software?

  • Confianza en el mecanismo de actualización: La mayoría de los usuarios y organizaciones confían intrínsecamente en que las actualizaciones de software proporcionadas por el proveedor son legítimas y seguras. Los atacantes pueden aprovecharse de esta confianza insertando código malicioso en el proceso de actualización.
  • Ataques Man-in-the-Middle (MiTM): El atacante puede secuestrar el canal de comunicación entre un proveedor de software y sus usuarios, sustituyendo las actualizaciones legítimas por versiones maliciosas.
  • Compromiso de la cadena de suministro: Un ataque a los propios proveedores, especialmente aquellos con posturas de seguridad débiles, para comprometer sus servidores de actualización. Los atacantes pueden distribuir malware a través de lo que parece una actualización de software legítima y eludir las medidas de seguridad tradicionales basadas en la reputación del proveedor.
  • Actualizaciones sin firmar o firmadas incorrectamente: Actualizaciones sin firmar o firmadas incorrectamente: Las firmas digitales garantizan la autenticidad de las actualizaciones de software. Cuando estas actualizaciones no están firmadas o lo están de forma incorrecta -o si se han robado las claves de firma-, los piratas informáticos pueden distribuir actualizaciones maliciosas a lo largo de la cadena como si procedieran de una fuente de confianza.

Gestión de riesgos en la cadena de suministro y DevSecOps

La gestión de riesgos de la cadena de suministro implica determinar y mitigar los riesgos de terceros proveedores y de los componentes externos utilizados en el desarrollo de software.

DevSecOps es un enfoque del desarrollo de aplicaciones que abarca la seguridad a lo largo de todo el ciclo de vida del desarrollo de software, desde el diseño hasta la implantación. Hace hincapié en la colaboración entre los equipos de desarrollo, seguridad y operaciones para garantizar que la seguridad se prioriza junto con la funcionalidad.

Cómo proteger la cadena de suministro de software

Para garantizar la seguridad de la cadena de suministro de software se requiere un enfoque multicapa que combine personas, procesos y tecnología. Estos son los pasos clave que puede dar para mejorar la seguridad de su cadena de suministro:

  1. Evaluación de proveedores: Realice un análisis en profundidad de los proveedores externos y sus prácticas de seguridad.
  2. Control continuo: Utilice herramientas para supervisar la cadena de suministro en busca de vulnerabilidades y actividades sospechosas.
  3. Aplicar SBOM: Utilice una lista de materiales de software (SBOM) para realizar un seguimiento de todos los componentes que intervienen en la cadena de suministro de software a todos los niveles.
  4. Cifrado y comunicación segura: Deben utilizarse normas de cifrado estrictas para proteger los datos en tránsito y en reposo.
  5. Auditorías y pruebas periódicas: Audite y pruebe continuamente su cadena de suministro de software para detectar posibles vulnerabilidades.
  6. Realizar pruebas de seguridad automatizadas: Integre herramientas en tiempo de desarrollo que realicen análisis estáticos y dinámicos.
  7. Gestión de la dependencia: Emplea herramientas que rastreen y actualicen automáticamente las bibliotecas de terceros.
  8. Formación en seguridad: Mantenga informados a los desarrolladores sobre las prácticas de seguridad más avanzadas.
  9. Principio del menor privilegio: No conceder nunca más derechos de los necesarios a usuarios y servicios para minimizar la exposición a la seguridad del sistema.

¿Qué es una lista de materiales de software (SBOM)?

El SBOM es un registro formal de todos los componentes, incluidas las bibliotecas de terceros necesarias para producir un determinado producto de software. Un SBOM es fundamental para rastrear las dependencias y determinar si alguno de estos componentes sigue siendo seguro y está actualizado. 

Los SBOM permiten a una organización conocer el origen de su software y actuar con rapidez cuando se detecta una vulnerabilidad en bibliotecas o dependencias de terceros. Son esenciales en las metodologías de seguridad de la cadena de suministro, ya que permiten una transparencia muy necesaria en el proceso de desarrollo de software.

Herramientas de pruebas de seguridad automatizadas

Las herramientas de pruebas de seguridad automatizadas ayudan a detectar en una fase temprana las vulnerabilidades durante el proceso de desarrollo, con el fin de minimizar los riesgos que podrían conducir a la implantación de software inseguro.

Análisis de la composición del software (SCA)

Las herramientas SCA son capaces de detectar y controlar las bibliotecas de código abierto utilizadas en un proyecto determinado, buscando vulnerabilidades reveladas y problemas de licencia y garantizando que sólo se utilicen componentes seguros y conformes.

Pruebas estáticas de seguridad de las aplicaciones (SAST)

Herramientas SAST analizan el código fuente en busca de posibles fallos de seguridad antes de ejecutar el software. Aportan información que permite a los desarrolladores corregir las vulnerabilidades en una fase temprana del ciclo de desarrollo.

Pruebas dinámicas de seguridad de las aplicaciones (DAST)

Herramientas DAST comprueban las vulnerabilidades de las aplicaciones en ejecución. Ejecutan ataques simulados contra el software para encontrar puntos débiles que un atacante podría explotar.

Seguridad de la cadena de suministro de software frente a seguridad de las aplicaciones

Aunque tanto la seguridad de la cadena de suministro de software como la seguridad de las aplicaciones pretenden proteger el software de las amenazas, se centran en aspectos diferentes.

La seguridad de la cadena de suministro de software se centra en la protección de los componentes y proveedores que contribuyen al proceso de desarrollo de software. Implica la evaluación de herramientas de terceros, la seguridad de las canalizaciones CI/CD y la gestión de las dependencias de código abierto.

La seguridad de las aplicaciones se centra en la protección del producto de software final, incluidos el código, los datos y la infraestructura. Esto implica evaluaciones de vulnerabilidad, pruebas de penetración y protección de las API.

En esencia, la seguridad de la cadena de suministro examina los factores externos que contribuyen a la seguridad del software, mientras que la seguridad de las aplicaciones se centra en proteger el propio software.

Para ampliar su perímetro de seguridad, considere Verimatrix XTDuna solución integral diseñada para detectar y responder a las amenazas de la cadena de suministro y las aplicaciones en tiempo real. Más información aquí.