XUT_ / COURSES / PENETRATION TESTER

AS03 - Software Supply Chain Failures

¿Qué es?

Los fallos en la cadena de suministro de software ocurren cuando las aplicaciones confían en componentes, librerías, servicios o modelos comprometidos, desactualizados o sin verificación adecuada. Estas debilidades no son inherentes al código, sino a las herramientas y software del que depende.


¿Por qué importa?

Las aplicaciones modernas están construidas a partir de paquetes, APIs y modelos de IA de terceros. Una dependencia comprometida puede comprometer el sistema completo, permitiendo a los atacantes ganar acceso sin tocar tu código. Además este tipo de ataque puede ser automatizado y distribuido.


Ejemplo

En 2021, SolarWinds fue comprometida y esto mostró el peligro de este tipo de ataques. Los atacantes insertaron código malicioso en una actualización confiable, afectando a miles de organizaciones que inmediatamente la instalaron. No fue un bug en la lógica del código, sino una debilidad en el proceso de construcción de actualizaciones, verificación y distribución.


Patrones Comunes

  • Usar librerías o dependencias sin verificar o no mantenidas.
  • Instalar automáticamente actualizaciones sin verificación.
  • Sobredependencia de modelos IA de terceros sin auditoría.
  • Procesos de montaje inseguros o procesos CI/CD que permiten manipulación.
  • Falta de supervisión de vulnerabilidades en las dependencias implementadas.
  • Rastreo deficiente de licencias o procedencia de los componentes.

Cómo Prevenirlo

  • Verifica todos los componentes, librerías y modelos IA de terceros antes de usarlos.
  • Monitoriza y parchea las dependencias de forma regular.
  • Firma, verifica y audita las actualizaciones de software y paquetes.
  • Cierra a conciencia los procesos CI/CD y construcción para prevenir la manipulación.
  • Rastrea el origen y licencias de las dependencias.
  • Implementa monitorización de tiempo de ejecución para comportamiento inusual de dependencias o componentes IA.
  • Integra modelos de amenazas de cadena en el SDLC incluyendo testing, despliegue y workflows de actualizaciones.

Reto

Navega al puerto 5003 de la IP dada. El código está desactualizado e importa un componente viejo: lib/vulnerable_utils.py. ¿Puedes debuggearlo?

  1. Vamos a la página dada. AS03 - Software Supply Chain Failures
  2. Interceptamos la petición al endpoint /api/process. AS03 - Software Supply Chain Failures
  3. Cambiamos el método a POST, metemos un JSON con el campo data con un texto cualquiera y cambiamos el Content-Type. AS03 - Software Supply Chain Failures
  4. No sabemos lo que mandar así que leeremos el archivo que nos dan en la tarea. AS03 - Software Supply Chain Failures Sobre la linea 23 podemos ver información relevante.
  5. Vamos a proceder a mandar la palabra debug. AS03 - Software Supply Chain Failures