Ataque a la Cadena de Suministro en LiteLLM v1.107.0: Tokens OAuth de GitHub CLI Robados, Fork Malicioso y el RAT de Inicio cook.pth en Python

Ataque a la Cadena de Suministro en LiteLLM v1.107.0 Tokens OAuth de GitHub y RAT cook.pth
📌
Security Roundup Series: Fin de Semana del 26 de Octubre de 2026 • 7 min de lectura deep dive
🏛️
Incident Overview: Target / Organization: Biblioteca Python y Router Proxy de IA LiteLLM (BerriAI) versión 1.107.0 Threat Actor / Attribution: Actor de Amenazas contra la Cadena de Suministro (Abusando de 3 Tokens OAuth Robados de GitHub CLI) Impact / Records Compromised: Paquete PyPI litellm==1.107.0 e Imágenes en Docker Hub / GHCR (v1.107.0, latest, main-stable) Envenenados entre las 11:39 y 14:20 UTC del 21 de Octubre de 2026 Initial Attack Vector: Secuestro del Flujo de Publicación Apuntando a un Fork con Guion (Berri-AI/litellm) que Inyecta el Hook de Inicio cook.pth en Python

Dado que LiteLLM actúa como la pasarela central de modelos de lenguaje (LLM) y SDK unificado de Python para miles de empresas —enrutando llamadas hacia OpenAI, Anthropic, Google Vertex AI y AWS Bedrock—, comprometer una instancia de LiteLLM equivale a capturar la bóveda maestra de credenciales de IA y nube de una organización. Durante el fin de semana, los informes forenses de LiteLLM (BerriAI) y Datadog Security Labs revelaron la anatomía completa del ataque a la cadena de suministro en LiteLLM v1.107.0: un secuestro quirúrgico de CI/CD ejecutado con tres tokens OAuth robados de GitHub CLI, un fork malicioso diferenciado por un solo guion y un hook de configuración de rutas de Python (cook.pth) que ejecuta malware en el instante en que se invoca cualquier comando de Python en el sistema.

Diagrama de la Cadena de Ataque a LiteLLM v1.107.0
Flujo completo del compromiso de LiteLLM v1.107.0: abuso de tokens OAuth de GitHub CLI, compilación desde el fork Berri-AI/litellm, persistencia mediante cook.pth y robo de claves en PostgreSQL.

Etapa 1: Cómo Tres Tokens OAuth de gh Burlaron las Protecciones de Despliegue

El flujo de publicación de LiteLLM utilizaba GitHub Actions protegido por aprobaciones de entorno multiusuario. Para eludir estos controles sin modificar directamente el código del repositorio legítimo BerriAI/litellm, los atacantes utilizaron tokens OAuth de GitHub CLI (gh) previamente robados a tres ingenieros distintos del proyecto:

  1. El Truco del Fork con Guion (Token #1): Los atacantes prepararon el código malicioso en un fork externo llamado Berri-AI/litellm (nótese el guion adicional). Con el Token #1, dispararon el workflow oficial de publicación indicando que descargara y compilara el árbol de código desde dicho fork.
  2. Aprobación del Entorno de Producción (Token #2): Con el Token #2, aprobaron la compuerta de revisión del entorno de despliegue a las 11:39 UTC del 21 de octubre de 2026, publicando litellm==1.107.0 en PyPI y sobreescribiendo las etiquetas v1.107.0, latest, main-latest y main-stable en Docker Hub y GHCR.
  3. Borrado Antiforense de Registros (Token #3): Finalmente, utilizaron el Token #3 para eliminar los logs de ejecución de GitHub Actions y retrasar la detección.

Etapa 2: Dentro de cook.pth — Por Qué Ejecutar pip uninstall Vuelve a Disparar el Malware

En lugar de ocultar el código malicioso únicamente dentro de litellm/__init__.py, el paquete envenenado instala cook.pth y cook.py directamente en la raíz de site-packages/. Por diseño en la biblioteca estándar de Python (Lib/site.py), cada vez que el intérprete de Python arranca, lee todos los archivos .pth en site-packages/ y ejecuta automáticamente cualquier línea que comience con import antes de cargar el script del usuario:

# Contenido de site-packages/cook.pth en litellm==1.107.0:
import os, sys; exec(open(os.path.join(os.path.dirname(__file__) if '__file__' in locals() else [p for p in sys.path if 'site-packages' in p][0], 'cook.py')).read())
⚠️
Trampa Crítica en Respuesta a Incidentes: ¡NO Ejecute pip para Diagnosticar! Dado que pip, poetry y pytest son scripts de Python que cargan site.py al iniciar, ejecutar pip list o pip uninstall litellm dentro de un contenedor infectado vuelve a ejecutar cook.pth inmediatamente. Inspeccione siempre el sistema de archivos con herramientas nativas de shell (find, grep) o invoque Python con la bandera -S (python3 -S).

Etapa 3: Exfiltración de Secretos, Volcado de PostgreSQL y RAT en Segundo Plano

Al ejecutarse, cook.py recolecta todas las variables de entorno (OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS_SECRET_ACCESS_KEY, LITELLM_MASTER_KEY), se conecta directamente a la base de datos PostgreSQL configurada en DATABASE_URL para volcar las tablas LiteLLM_VerificationToken y LiteLLM_Config, roba claves privadas en ~/.ssh/* e inicia un demonio persistente que consulta un servidor C2 cada 60 minutos para ejecutar comandos remotos.

Triaje Forense Seguro y Remediación

🔍
Script de Auditoría Segura en Bash (Sin Invocar Python) #!/usr/bin/env bash # TRIAJE SEGURO: ¡No invoca python ni pip! echo "[*] Buscando artefactos maliciosos de LiteLLM 1.107.0 en el sistema de archivos..." find / -path /proc -prune -o \( -name "cook.pth" -o -name "cook.py" -o -name "litellm-1.107.0*" \) -print 2>/dev/null echo "[*] Auditando todos los archivos .pth en site-packages en busca de hooks 'import '..." find / -name "*.pth" 2>/dev/null | xargs grep -n "^import[[:space:]]" 2>/dev/null
  1. Destruir y Reconstruir Entornos Afectados: Cualquier contenedor o entorno virtual que haya descargado litellm==1.107.0 o las imágenes Docker afectadas el 21 de octubre debe ser destruido y reconstruido fijando litellm==1.106.2 (o versiones posteriores limpias verificadas por hash SHA-256).
  2. Rotación Total de Credenciales: Rote de inmediato LITELLM_MASTER_KEY, contraseñas de PostgreSQL, todas las claves API de proveedores LLM (OpenAI, Anthropic, Gemini, Bedrock), credenciales de AWS/GCP/Azure y claves SSH de desarrolladores.

Read more

Guía de Blindaje Empresarial para el Black October Runtimes Políglotas ESXi VMDK y Sandboxes de IA

Guía de Blindaje Empresarial para el "Black October": Protección de Runtimes Políglotas, Integridad .pth en Python, Cifrado VMDK en ESXi y Sandboxes de IA

📌Security Roundup Series: Fin de Semana del 26 de Octubre de 2026 • 8 min de lectura deep dive🛡️Vulnerability Intelligence: CVE ID: ARQUITECTURA DE DEFENSA EN PROFUNDIDAD (Seguridad de Memoria en Runtimes, Integridad de Cadena de Suministro, Aislamiento ESXi y Contención de IA) Severity: MANUAL ESTRATÉGICO Y DE INGENIERÍA (CVSS

By James Luther
SafePay AA26-293A Emperador Ransomware AB InBev Capcom ID 11.77M y PingCAP TiDB Cloud

Forense de Ransomware y Megabrechas: Alerta SafePay de CISA (AA26-293A), Emperador Ataca a AB InBev, Capcom ID (11.77M) y PingCAP TiDB Cloud

📌Security Roundup Series: Fin de Semana del 26 de Octubre de 2026 • 7 min de lectura deep dive🏛️Incident Overview: Target / Organization: Objetivos Globales: SafePay (600+ Organizaciones), AB InBev, Capcom ID (11.77M), PingCAP TiDB Cloud, CenterPoint Energy (7.49M) y Burger King Japón (11.18M) Threat Actor / Attribution: Grupo

By James Luther
Cadena KEV Plex2Shell Siemens Romulus CVE-2026-110936 FortiSIEM CVE-2026-106173 y Cisco Expressway

Cadenas de Exploits Empresariales y KEV: RCE en Plex2Shell, DLL Sideloading "Romulus" en Siemens (CVE-2026-110936), FortiSIEM gRPC y Cisco Expressway

📌Security Roundup Series: Fin de Semana del 26 de Octubre de 2026 • 7 min de lectura deep dive🛡️Vulnerability Intelligence: CVE ID: CVE-2026-96652..96656, CVE-2026-110936, CVE-2026-106173 y CVE-2026-76466 (CWE-918 (SSRF), CWE-427 (Ruta de Búsqueda No Controlada), CWE-22 (Path Traversal) y CWE-295 (Validación TLS)) Severity: CRÍTICA (CISA KEV E INFRAESTRUCTURA EMPRESARIAL)

By James Luther
CVE-2026-91403 Crisis WebPKI de eMudhra Claves Privadas de 8 Bits y Revocación en Oracle Java SE

CVE-2026-91403 y la Crisis WebPKI de eMudhra: Cómo Claves Privadas de 8 Bits (< 256) Forzaron Revocaciones de Emergencia en Java y Sistemas Operativos

📌Security Roundup Series: Fin de Semana del 26 de Octubre de 2026 • 6 min de lectura deep dive🚨Vulnerability Intelligence: CVE ID: CVE-2026-91403 (CWE-331 / CWE-326 (Entropía Insuficiente / Fuerza de Cifrado Inadecuada)) Severity: CRÍTICA (EMERGENCIA CRIPTOGRÁFICA WEBPKI) (CVSS 9.1) Threat Actor: Cualquier Adversario con Capacidad de Interceptación TLS MitM o

By James Luther