
El director de seguridad de la información de SlowMist, 23pds, reveló el 25 de marzo que la biblioteca de puerta de enlace de IA en Python, LiteLLM, que tiene un millón de descargas mensuales, fue víctima de un ataque a la cadena de suministro en PyPI. Las versiones afectadas 1.82.7 y 1.82.8 estuvieron en la plataforma durante al menos dos horas. Los atacantes, mediante la inserción de múltiples capas de malware, pueden robar información, incluyendo datos de monederos de criptomonedas.
LiteLLM actúa como una interfaz unificada en la pila tecnológica de IA, soportando llamadas a modelos de principales proveedores como OpenAI, Anthropic y Google. Su arquitectura se sitúa directamente entre la aplicación y varios proveedores de servicios de IA, permitiendo el acceso a numerosas claves API, variables de entorno y datos confidenciales de configuración.
Al comprometer este tipo de componentes intermedios, los atacantes no necesitan infiltrarse directamente en los servicios upstream para interceptar credenciales sensibles en entornos de desarrollo local, pipelines de CI/CD y infraestructura en la nube. Actualmente, los investigadores están evaluando si este ataque está relacionado con los grupos de amenazas TeamPCP y LAPSUS$, y la investigación de atribución aún está en curso. El incidente fue inicialmente reportado públicamente por un usuario de GitHub y posteriormente analizado por investigadores externos de Futuresearch.
El código malicioso incrustado en las versiones comprometidas utiliza una estructura de tres capas, implementada mediante un script de Python codificado en Base64 ofuscado:
Primera capa (capa de fuga de datos): recopila datos sensibles locales, los cifra con AES-256-CBC, encripta la clave de sesión con una clave pública RSA codificada en el código, y empaqueta todo en tpcp.tar.gz para exfiltrarlo a un endpoint controlado por los atacantes.
Segunda capa (detección y recopilación de credenciales): enumera información del sistema, variables de entorno, y extrae sistemáticamente claves SSH, credenciales de Git, credenciales en la nube de AWS/GCP/Azure, archivos de configuración de Kubernetes, datos de monederos de criptomonedas y configuraciones de CI/CD. En algunos casos, el malware intenta usar credenciales robadas para consultar APIs de AWS o manipular Kubernetes.
Tercera capa (persistencia y control remoto): escribe un archivo sysmon.py en el disco y lo configura como un servicio del sistema, realizando sondeos cada 50 minutos a un endpoint controlado por los atacantes, permitiendo la entrega continua de nuevas funciones maliciosas en sistemas ya infectados.
Las comunicaciones maliciosas utilizan dominios como models[.]litellm[.]cloud y checkmarx[.]zone.
Las organizaciones que hayan instalado o ejecutado versiones comprometidas de LiteLLM (1.82.7 o 1.82.8) deben considerar sus sistemas como comprometidos. Dado que el malware tiene capacidades de persistencia y puede haber desplegado cargas útiles adicionales, eliminar simplemente el paquete no es suficiente.
Se recomienda tomar las siguientes acciones de inmediato: rotar todas las credenciales potencialmente expuestas (incluyendo claves de acceso a AWS/GCP/Azure, claves SSH y API); revisar los registros en busca de conexiones salientes sospechosas a los dominios models[.]litellm[.]cloud o checkmarx[.]zone; eliminar archivos maliciosos conocidos como tpcp.tar.gz, /tmp/pglog, /tmp/.pg_state y servicios relacionados con sysmon.py; y, si las condiciones lo permiten, reconstruir los sistemas afectados desde un estado limpio conocido.
¿Qué versiones de LiteLLM están afectadas por este ataque a la cadena de suministro?
Las versiones afectadas son LiteLLM 1.82.7 y 1.82.8, con código malicioso incrustado en proxy_server.py (ambas versiones) y litellm_init.pth (versión 1.82.8). Se recomienda a los usuarios verificar la versión que utilizan y actualizar a la versión más reciente y segura.
¿Qué tipos de información sensible podrían haber sido robados en este ataque?
El malware recopila claves SSH, credenciales en la nube de AWS/GCP/Azure, archivos de configuración de Kubernetes y tokens de cuentas de servicio, credenciales de Git, claves API en variables de entorno, historial de comandos Shell, datos de monederos de criptomonedas y contraseñas de bases de datos. La superficie de ataque abarca entornos de desarrollo local, pipelines de CI/CD y la infraestructura en la nube.
¿Cómo puedo verificar si mi sistema ha sido comprometido?
Se deben buscar indicadores de intrusión como archivos tpcp.tar.gz, archivos temporales /tmp/pglog o /tmp/.pg_state, y servicios persistentes relacionados con sysmon.py. Además, revisar los registros de conexiones salientes para detectar comunicaciones con los dominios maliciosos mencionados.