LiteLLM 1.107.0 con malware: qué hacer con tus claves de IA

LiteLLM, una pasarela de código abierto que muchas aplicaciones usan para conectarse a OpenAI, Anthropic y otros proveedores de IA, distribuyó el 21 de octubre de 2026 una versión, la 1.107.0, con código malicioso que roba credenciales. Afecta a quien la instaló o arrancó su imagen de Docker esa mañana, entre las 06:39 y las 09:20 de Lima.

Lo que se sabe

  • El paquete: según el informe de incidente de LiteLLM, litellm 1.107.0 estuvo disponible en PyPI el 21 de octubre de 11:39 a 13:23 UTC (06:39 a 08:23 en Lima). Ya se retiró.
  • Las imágenes de Docker: LiteLLM dice que las etiquetas v1.107.0, latest, main-latest y main-stable apuntaron a la imagen comprometida en Docker Hub de 11:46 a 14:20 UTC (06:46 a 09:20 en Lima) y en GHCR hasta las 13:51 UTC. Quien descargó «latest» en ese rato recibió la versión mala aunque no pidiera la 1.107.0.
  • Lo que no está afectado: la empresa afirma que todas las versiones anteriores son seguras, que la etiqueta v1.107.0 del código fuente en GitHub no contiene los archivos maliciosos y que el registro privado de su versión enterprise no se vio afectado.
  • Cómo pasó: LiteLLM explica que se usaron las cuentas de GitHub de tres ingenieros, «aparentemente» con tokens OAuth robados de la herramienta de línea de comandos de GitHub, para cambiar el flujo de publicación y compilar desde un repositorio controlado por el atacante. Todavía no sabe cómo se obtuvieron esos tokens.
  • Qué hace el código malicioso: según el análisis publicado en GitHub por el equipo de Upwind y el de Aikido Security, se ejecuta cada vez que arranca Python en ese entorno, reúne claves de nube, claves SSH, contraseñas guardadas en el navegador, variables de entorno y las claves de proveedores de IA guardadas en la base de datos de LiteLLM, y las envía a un dominio del atacante. Además deja un componente capaz de descargar y ejecutar más código.
  • El uso de lo robado: Wiz afirma haber visto credenciales de AWS robadas validadas unas 4,5 horas después del robo y consultas sobre el acceso a modelos de Bedrock, un patrón que asocia al uso de modelos de IA a costa de la víctima.
  • El estado: LiteLLM da el incidente por contenido, con la investigación en curso. Dice que revocó los tokens implicados y retiró los paquetes.

Qué cambia y qué no

No cambia nada para quien tiene fijada una versión anterior, como la 1.106.2, o no instaló ni actualizó LiteLLM esa mañana. Tampoco para quien usa ChatGPT, Claude o Gemini directamente: el problema está en un componente que se instala en servidores y aplicaciones, no en los proveedores.

Sí cambia para quien instaló sin fijar versión o usa la etiqueta latest de Docker y actualizó en esas horas. LiteLLM pide dar por hecho que el robo se produjo si la 1.107.0 llegó a instalarse en una máquina con salida a internet. Y como LiteLLM suele guardar las claves de varios proveedores en un mismo sitio, una sola instalación afectada puede exponerlas todas a la vez.

Cómo saber si te afecta

  1. Averigua si tu web o tu herramienta de IA usa LiteLLM. Si tu chatbot o agente lo montó un desarrollador o un proveedor, pregúntale tres cosas: si usa LiteLLM, qué versión tiene y si se instaló o actualizó el 21 de octubre entre las 06:39 y las 09:20 de Lima.
  2. Mira la versión instalada. En el servidor o el contenedor, `pip show litellm` la muestra. LiteLLM dice que ver la 1.107.0, o los archivos `cook.pth` o `sitecustomize.py` entre los paquetes de Python, confirma la exposición. No encontrarlos no prueba que el entorno esté limpio.
  3. No lo arregles con una instalación encima. Según la guía de LiteLLM, cualquier arranque de Python en ese entorno vuelve a ejecutar el código malicioso. Lo que recomienda es reconstruir el entorno o la imagen desde cero con `litellm==1.106.2`.
  4. Revoca las claves en el panel de cada proveedor. Las de IA guardadas en LiteLLM, las claves maestras y virtuales del propio LiteLLM, la contraseña de su base de datos, las credenciales de nube del servidor y cualquier secreto de las variables de entorno. Cambiar una clave solo en la configuración no anula la vieja: hay que borrarla donde se creó y generar otra.
  5. Revisa el consumo desde el 21 de octubre en el panel de cada proveedor de IA y en la consola de tu nube. Picos fuera de horario o modelos que no usas son la señal típica de uso ajeno.
  6. Fija las versiones a partir de ahora. Según LiteLLM, los expuestos fueron quienes instalaron sin versión fija o con las etiquetas que siempre apuntan a la última. Una versión fija, actualizada a propósito, evita este riesgo.

Relacionado: Brecha en OpenCode: qué hacer con tus claves de API de IA

Fuentes

Actualizaciones: si LiteLLM publica cómo se robaron los tokens o amplía la lista de afectados, se añadirá aquí con su enlace.