¿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?
- Vamos a la página dada.

- Interceptamos la petición al endpoint
/api/process.
- Cambiamos el método a POST, metemos un JSON con el campo
datacon un texto cualquiera y cambiamos elContent-Type.
- No sabemos lo que mandar así que leeremos el archivo que nos dan en la tarea.
Sobre la linea 23 podemos ver información relevante. - Vamos a proceder a mandar la palabra
debug.
