Para: desarrolladores y operadores que usan LiteLLM, la herramienta de código abierto para llamar a muchas API de LLM (modelos de lenguaje de gran tamaño) mediante una única interfaz, ya sea como biblioteca de Python o como proxy (pasarela de LLM) que se ejecuta en Docker.
Este artículo se basa en el aviso oficial de BerriAI, la empresa detrás de LiteLLM, y en las actualizaciones de estado que publicó en GitHub. No trata técnicas de ataque, el contenido del malware ni valores concretos de indicadores de compromiso (IoC). Consulte los nombres de archivo y los digests de las imágenes en la página del aviso de la empresa.
En desarrollo: este artículo se actualizará a medida que la organización publique más información
A las 11:00 UTC del 24 de octubre de 2026 (20:00 JST)Aún no se sabe
- Cambios para evitar que se repita (la empresa dice que los compartirá la semana siguiente)
- El número de usuarios o entornos afectados
- Si los datos robados se han utilizado
El 23 de octubre (UTC) la empresa dijo que había completado su investigación de la cadena de ataque y publicó un análisis de causa raíz. Dice que algunas suposiciones de las actualizaciones de estado que publicó durante la investigación eran "inexactas o incompletas", y que el análisis es la fuente de referencia. La primera publicación del incidente se ha dejado en su forma original.
Lo que los usuarios deben hacer (versiones y ventana afectadas, limpieza, qué claves rotar) no ha cambiado desde la primera publicación. El 24 de octubre (UTC) la empresa publicó 1.103.8, 1.104.6, 1.105.4 y 1.106.3, y la última versión en PyPI es ahora 1.106.3. Desde estas versiones ha cambiado la clave de cosign que firma las imágenes de Docker y los charts de Helm (paso 3 más abajo).
Qué deben hacer hoy los usuarios de LiteLLM
El paso 1 es para todos. Los pasos siguientes siguen la guía de la empresa para entornos que instalaron o iniciaron una versión o imagen afectada.
Compruebe si está afectado: cuándo instaló y qué etiqueta usó
La empresa enumera los siguientes artefactos afectados. Todas las horas son del 21 de octubre de 2026.
| Canal | Afectado | Ventana (UTC) |
|---|---|---|
| PyPI | litellm==1.107.0 (los siete wheels) | 11:39 a 13:23 |
| Docker Hub | v1.107.0, latest, main-latest, main-stable | 11:46 a 14:20 |
| GHCR (el registro de contenedores de GitHub) | Las mismas cuatro etiquetas (litellm, litellm-database, litellm-non_root) | 11:46 hasta dejar de estar disponibles, a más tardar a las 13:51 |
La empresa dice que está afectado si instaló LiteLLM con pip sin fijar una versión durante la ventana, o si inició un contenedor desde una de estas etiquetas durante la ventana. Si su CI ejecuta pip install litellm en cada compilación, o su Dockerfile se construye FROM la etiqueta latest, la versión afectada pudo instalarse sin que nadie hiciera nada.
- Si un entorno puede estar afectado, no inicie Python ni pip para comprobar su versión. Aíslelo primero y luego revise los registros de despliegue o los digests de las imágenes desde otra máquina limpia. Si no puede descartar la exposición, trátelo como afectado y pase a la reconstrucción y la rotación de credenciales que se indican más abajo (nota de este sitio). El comando de comprobación de versión de la empresa también inicia Python, así que no lo ejecute antes de limpiar
- La empresa ha publicado los nombres de archivo que hay que buscar y los digests de las imágenes. Encontrarlos confirma la exposición, pero no encontrarlos no demuestra que el entorno esté limpio
- Si había fijado explícitamente 1.106.2 o anterior, o 1.107.0rc1 o rc2, no está afectado (la empresa dice que las versiones anteriores quedan fuera de esta vulneración)
- Los clientes que descargan desde el registro privado empresarial no se vieron afectados (la empresa)
Si se instaló: no empiece con pip install en ese entorno
Según el análisis del investigador citado en el aviso de la empresa, el malware se instala como archivos que Python carga automáticamente cada vez que se inicia. Se ejecuta de nuevo en cualquier proceso de Python, incluidos los que nunca importan litellm y el propio pip.
El orden de limpieza que da la empresa es el siguiente (los nombres de archivo y las ubicaciones están en su página del aviso):
- Sin iniciar Python, elimine desde la shell los archivos maliciosos que nombra la empresa (y sus archivos de caché) de todos los directorios site-packages afectados
- Detenga el proceso de Python que quedó ejecutándose en segundo plano
- Solo entonces reinstale fijando
litellm==1.106.2. La empresa dice que es mejor reconstruir desde cero las imágenes y los entornos virtuales
Si lo ejecutó en contenedores, lo más rápido suele ser detener los contenedores creados a partir de la imagen afectada y volver a crearlos desde una imagen fijada a una versión limpia (nota de este sitio).
Fije una versión y verifique con la nueva clave de firma
En su primera publicación, la empresa pidió fijar 1.106.2 o cualquier versión explícita publicada antes de este incidente. El 24 de octubre (UTC) publicó después 1.103.8, 1.104.6, 1.105.4 y 1.106.3. La última versión en PyPI es 1.106.3, y 1.107.0 sigue retirada. Según las notas de la versión, estas versiones eliminan la autoridad de certificación raíz de eMudhra de todos los paquetes de certificados en los que confían el SDK, el proxy y las imágenes de Docker. El tema de eMudhra se trata en qué deben hacer los usuarios de Python con las claves de la CA intermedia de eMudhra.
En Docker, haga referencia a las imágenes por una etiqueta de versión, o mejor por digest (un valor calculado a partir del contenido de la imagen), en lugar de etiquetas como latest o main-stable, cuyo contenido cambia. Así, un cambio en lo que apunta una etiqueta no le llega.
Según las notas de la versión, desde las versiones del 24 de octubre las imágenes de Docker y los charts de Helm se firman con una nueva clave de cosign (cosign es una herramienta para firmar y verificar imágenes de contenedores), y la verificación con la clave anterior falla. Si fija el antiguo cosign.pub en scripts de cosign verify, comprobaciones de CI o políticas de Kubernetes que verifican firmas (como Kyverno), sustitúyalo por la nueva clave del commit indicado en las notas de la versión. Las notas también indican el SHA-256 de la nueva clave, así que compare con él la clave que descargue antes de cambiar (nota de este sitio).
Rote las claves: todo lo que el entorno pudo alcanzar
La empresa dice que, si 1.107.0 llegó a instalarse en un host con acceso saliente a internet, debe asumir que los datos robados se enviaron con éxito. Nombra en particular estos:
- El rol en la nube asociado al servidor o contenedor (como un rol IAM de instancia o tarea de AWS)
- Todas las claves de proveedores de LLM guardadas en la base de datos del proxy de LiteLLM
- La clave maestra del proxy y todas las claves virtuales que emitió
- La contraseña de la cadena de conexión a la base de datos (DATABASE_URL)
- Todos los secretos que estaban en el entorno de cualquier proceso que se ejecutaba en el host
Según el análisis del investigador, el malware también estaba diseñado para recopilar claves SSH, credenciales de Git y de publicación de paquetes, tokens de Kubernetes, contraseñas guardadas en navegadores y la configuración de asistentes de programación con IA. Si ejecutó 1.107.0 en el portátil de un desarrollador, también deben rotarse las credenciales de ese portátil.
Emita una clave nueva en el panel de cada servicio y revoque la anterior (nota de este sitio: configure primero la clave nueva y después revoque la anterior, para evitar una interrupción). El manejo de las claves de API se trata en qué hace riesgosos los archivos .env y las claves de API.
Compruebe si hubo uso indebido: registros de auditoría en la nube y uso de LLM
La empresa pide revisar el registro de auditoría de AWS (CloudTrail) en busca de una llamada de comprobación de identidad (GetCallerIdentity) hecha con el rol de la instancia en torno al momento de la instalación, y después cualquier uso de las credenciales de ese rol desde fuera de su propia infraestructura.
Como nota de este sitio, revise también los paneles de sus proveedores de LLM por si hubo un aumento inesperado del uso o de los cargos desde las 11:39 UTC del 21 de octubre (la tarde en Japón). Cuando se usa una clave de LLM robada, puede verse en el uso y la facturación. Lo que ocurre con las claves robadas se trata en cómo las claves de API robadas llevan a bloqueos de cuentas.
Instaló 1.107.0 o inició una etiqueta afectada durante la ventana
Tratar como comprometido
↓→
1. Limpiar sin iniciar Python
Mejor: reconstruir imágenes y entornos virtuales
El host tenía acceso saliente a internet
Asumir que los datos se enviaron
↓→
2. Rotar todas las claves a las que pudo acceder
Roles en la nube, claves de proveedores, clave maestra, base de datos
Fijó explícitamente 1.106.2 o anterior
La empresa dice que las versiones anteriores quedan fuera de esta vulneración
↓→
3. Mantener la versión fijada; verificar las firmas de las versiones nuevas
En Docker, usar una etiqueta de versión o un digest. Nueva clave de cosign desde las versiones del 24 de octubre
Si ejecuta el proxy de LiteLLM
La base de datos del proxy guarda las claves de todos los proveedores de LLM que conecta. Según el análisis del investigador, cuando DATABASE_URL estaba configurada, el malware estaba diseñado para leer las tablas que contienen las claves de proveedores y la configuración de modelos. Si su proxy se inició con 1.107.0, planee rotar todas las claves de proveedores registradas en él y haga una lista antes de empezar. Las claves virtuales que entregó también tendrán que reemitirse, así que preparar un mensaje para quienes las usan reducirá la confusión.
Qué ocurrió (según BerriAI)
Lo siguiente se basa en la publicación del blog de BerriAI "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised" (publicada el 21 de octubre de 2026, actualizada a las 20:30 UTC de ese día), en su análisis de causa raíz del 23 de octubre "The attack chain behind the v1.107.0 LiteLLM release" y en las actualizaciones de estado que su director de seguridad publicó en la incidencia de GitHub. Todas las horas son UTC del 21 de octubre salvo que se indique otra cosa. No se reproducen valores de indicadores como las direcciones y los nombres que usó el atacante.
27 de mayo
Un archivo de configuración que contiene la clave maestra de una plataforma interna de agentes se sube por error a un repositorio público. La confirmación se sobrescribe rápidamente, pero la clave maestra no se revoca (análisis de causa raíz).10 de octubre
El atacante usa la clave maestra para llamar a la API de la plataforma y obtiene el token de GitHub CLI del propietario de la organización configurado allí. Unos 45 minutos después, con ese token, el atacante ejecuta CI en los repositorios de la empresa y extrae secretos de CI, con lo que obtiene los tokens de otros dos mantenedores (análisis de causa raíz).12 de octubre
Con el token del propietario, el atacante ejecuta CI en varios repositorios privados y extrae secretos por segunda vez: secretos poco sensibles y claves de proveedores de LLM con fondos mínimos usadas en las pruebas de CI. La empresa dice que no intervinieron en el camino hacia los artefactos envenenados, y que rotó los tokens implicados y auditó los registros de seguridad (análisis de causa raíz).10:08
La protección de ramas rechaza un cambio en el flujo de trabajo privado de publicación. Cinco segundos después, una credencial vinculada a una cuenta de desarrollador con privilegios se usa para anular la protección y aplicar el cambio.10:46
El flujo de trabajo modificado inicia una ejecución de preparación (staging) construida desde el repositorio imitación controlado por el atacante.11:11
El atacante usa otras credenciales robadas para lograr que se apruebe y se publique la versión modificada.11:39 a 11:40
Se suben a PyPI siete wheels maliciosos de 1.107.0.11:46
Se publican las imágenes de Docker de la misma versión.12:06
Un investigador externo informa del problema en una incidencia de GitHub.12:09 a 12:24
El atacante elimina los rastros del cambio en el flujo de trabajo (análisis de causa raíz; el registro de auditoría de la organización conservó un registro).13:02
La empresa inicia su respuesta al incidente (análisis de causa raíz).Hasta las 13:23
PyPI ha retirado 1.107.0.14:20
Todas las etiquetas afectadas de Docker Hub se han retirado o redirigido a imágenes limpias.20:30
La empresa actualiza el aviso y dice que cree haber identificado la cadena de ataque.23:37
La empresa informa de que está identificando todos los tokens de autenticación de la organización y revocando o rotando cada uno. Los registros siguen bloqueados para nuevas versiones y las publicaciones regulares siguen en pausa.02:19 del 22 de octubre (11:19 JST)
La empresa informa de que no hay novedades relevantes desde su última actualización. Los registros siguen bloqueados y las publicaciones regulares siguen en pausa. Pasa de actualizaciones cada dos horas a actualizaciones cuando haya novedades significativas.Alrededor de las 21:00 a 21:50 del 23 de octubre (alrededor de las 06:00 a 06:50 JST del 24 de octubre)
Alrededor de las 21:00 la empresa publica su análisis de causa raíz y dice que algunas de sus suposiciones anteriores eran inexactas o incompletas. Una actualización a las 21:50 (06:50 JST) de la primera publicación remite al análisis como registro de referencia.Aproximadamente de 07:56 a 09:15 del 24 de octubre (aproximadamente de 16:56 a 18:15 JST)
La empresa publica 1.103.8, 1.104.6, 1.105.4 y 1.106.3 en PyPI. Eliminan la autoridad de certificación raíz de eMudhra de los paquetes de confianza, y las imágenes de Docker y los charts de Helm pasan a una nueva clave de firma de cosign (notas de la versión).
- Afectado
- litellm==1.107.0 en PyPI (los siete wheels). Las etiquetas v1.107.0, latest, main-latest y main-stable en Docker Hub y GHCR (en GHCR: las imágenes litellm, litellm-database y litellm-non_root)
- Qué ocurrió
- El canal de publicación fue comprometido y se publicó una 1.107.0 con malware. La etiqueta oficial v1.107.0 en GitHub no contiene los archivos maliciosos; los artefactos se compilaron desde un repositorio imitación controlado por el atacante
- Qué hace el malware (según lo divulgado)
- Malware compilado que roba credenciales y carga herramientas de ejecución remota de código. Se ejecuta cada vez que se inicia Python y deja un proceso ejecutándose en segundo plano
- Versiones fuera de esta vulneración
- Todas las versiones anteriores quedan fuera de esta vulneración. Por ahora, fije 1.106.2 u otra versión explícita
- Causa (análisis de causa raíz del 23 de octubre)
- Una clave maestra no revocada de una plataforma interna de agentes, subida por error a un repositorio público, se usó para obtener el token OAuth de GitHub CLI de un propietario de la organización. Ese token no estaba vinculado a una cuenta de servicio ni tenía alcance reducido. Con él, el atacante extrajo secretos de CI y obtuvo los tokens de dos mantenedores. El token del propietario se usó para desactivar la protección de ramas y modificar el flujo de trabajo, y los demás tokens robados se usaron para que la versión modificada superara la aprobación
- Aprobación de versiones (análisis de causa raíz)
- Normalmente una versión debía ser aprobada por una cuenta especial vinculada a un dispositivo físico en la oficina de la empresa. Esa misma semana esto se había relajado para que cualquier par de ingenieros pudiera activar y aprobar una versión, para dar soporte a versiones de corrección de errores más frecuentes
- Corrección de la primera explicación
- La primera publicación sospechaba que los tokens procedían de los registros de un despliegue interno de LiteLLM. El análisis dice que el primer token procedía de otro servicio
- Otras credenciales robadas
- También se robaron tokens de otros sistemas internos, y la actividad del atacante se centró sobre todo en claves de API de inferencia de origen (claves de proveedores de LLM). El 12 de octubre se extrajeron de varios repositorios privados secretos de prueba de CI poco sensibles y claves de proveedores con fondos mínimos; la empresa dice que no intervinieron en el camino hacia los artefactos envenenados. La empresa está revocando todos los tokens de todos los sistemas internos y plataformas de proveedores
- Respuesta de la empresa
- Retiró los artefactos de PyPI, Docker Hub y GHCR. Revocó los tokens implicados, redujo su organización de GitHub a un miembro no afectado, eliminó los vínculos de confianza de sus registros públicos con la organización y está revocando o rotando todos los tokens. El 24 de octubre (UTC) publicó 1.103.8, 1.104.6, 1.105.4 y 1.106.3 con una nueva clave de firma
- Cifras y uso indebido
- No divulgado
Qué se sabe y qué no
Este es el estado a 24 de octubre de 2026. Cuando haya novedades, se actualizará la columna de estado.
| Elemento | Qué dice el aviso | Estado |
|---|---|---|
| Versión afectada (PyPI) | litellm==1.107.0, los siete wheels | Confirmado (la empresa) |
| Imágenes y etiquetas afectadas | v1.107.0, latest, main-latest, main-stable en Docker Hub y GHCR | Confirmado (la empresa) |
| Ventana de tiempo | PyPI 11:39 a 13:23 UTC; Docker Hub 11:46 a 14:20 UTC; GHCR no disponible a más tardar a las 13:51 UTC | Confirmado (la empresa) |
| Malware en la versión | Roba credenciales y carga herramientas de ejecución remota de código | Confirmado (la empresa) |
| Credenciales en hosts afectados | Si el host tenía acceso saliente, asumir que los datos se enviaron | Posible (la empresa) |
| Versiones anteriores | Fuera de esta vulneración | No afectadas (la empresa) |
| Registro privado empresarial | No afectado | No afectado (la empresa) |
| Etiqueta de código fuente oficial en GitHub | No contiene los archivos maliciosos | No afectada (la empresa) |
| Cómo se obtuvieron los tokens | Una clave maestra no revocada, subida por error a un repositorio público, se usó para tomar el token del propietario almacenado en una plataforma interna de agentes (análisis de causa raíz del 23 de octubre) | Confirmado (la empresa) |
| Explicación de la primera publicación, "obtenidos de los registros" | Corregida en el análisis: el primer token procedía de otro servicio | Corregido (la empresa) |
| Segunda extracción del 12 de octubre | Secretos de prueba de CI y claves de proveedores con fondos mínimos de repositorios privados; no intervinieron en el camino hacia los artefactos envenenados | Confirmado (la empresa) |
| Versiones de corrección y clave de firma | 1.103.8, 1.104.6, 1.105.4 y 1.106.3 publicadas el 24 de octubre; imágenes de Docker y charts de Helm firmados con una nueva clave de cosign | Confirmado (la empresa) |
| Cambios para evitar que se repita | Se compartirán la semana siguiente | Previsto (la empresa) |
| Número de usuarios o entornos afectados | No consta en el aviso | No indicado |
| Uso indebido de los datos robados | No consta en el aviso | No indicado |
Cómo leerlo: aunque la ventana fue corta, decida según si instaló o inició la versión
La versión estuvo disponible en PyPI unas dos horas, pero las instalaciones sin versión fija en CI o las reconstrucciones automáticas pueden recogerla en ese tiempo. Este sitio no especula con cifras. Decida si está afectado según si instaló 1.107.0 o inició una etiqueta afectada durante la ventana.
El aviso y el análisis de la empresa nombran al investigador que encontró el problema, a una empresa de seguridad que investigó de forma independiente y a la herramienta para desarrolladores mencionada en la primera publicación. Conforme a la política de este sitio, solo se nombra a la organización que divulgó el incidente; las demás se describen por su función.
Qué puede ocurrir cuando una versión contiene malware
Lo siguiente es general y no significa que estas cosas ocurrieran en este caso. Lo que la empresa ha divulgado sobre este malware está en "Qué ocurrió" más arriba.
Un paquete de Python se ejecuta con los permisos de quien lo instala. En un servidor o contenedor, puede acceder a las variables de entorno y los archivos de ese host y a cualquier rol en la nube asociado a él. Una pasarela de LLM existe para guardar en un solo lugar las claves de varios proveedores de LLM, por lo que, cuando se compromete, las claves de todos los proveedores a los que se conecta quedan en riesgo a la vez.
Lo que lo distingue del typosquatting o de aprovechar la vulnerabilidad de una versión antigua es que el código malicioso llegó por el canal oficial, con el nombre y el número de versión oficiales. Incidentes del mismo tipo incluyen la vulneración de la cadena de suministro de Trivy, los incidentes de TanStack y Nx Console y el malware en Rank Math PRO, un plugin de WordPress.
Qué deben revisar los usuarios de LiteLLM: lecciones de los hechos divulgados
Esta sección no juzga la respuesta de la empresa. Selecciona puntos del aviso y del análisis de causa raíz sobre los que los usuarios pueden actuar para prepararse ante el próximo incidente.
Deje de usar referencias cuyo contenido cambia: fije versiones y use digests
Los entornos afectados fueron los que instalaron con pip sin versión fija, o usaron etiquetas como latest, main-latest y main-stable, cuyo contenido cambia. Los entornos que fijaron 1.106.2 y referenciaron las imágenes de Docker por digest no se vieron afectados, aunque se reconstruyeran durante la ventana.
Como primer paso, fije las dependencias usadas en producción y CI con un archivo de bloqueo que incluya hashes (pip install --require-hashes, o archivos de bloqueo de uv o Poetry). Un ajuste que evita las versiones publicadas muy recientemente (como exclude-newer de uv, que ignora todo lo publicado después de un momento dado) también ayuda frente a versiones que se retiran en cuestión de horas. El enfoque se trata en auditar dependencias con OSV-Scanner.
Separe las claves que da a la pasarela de LLM, asumiendo que tendrá que rotarlas
La base de datos del proxy guarda las claves de todos los proveedores que conecta. Cuando hay que rotarlas, como ahora, no saber qué clave pertenece a qué entorno obliga a elegir entre olvidar alguna o apagarlo todo.
Usar claves de proveedor distintas para desarrollo, pruebas y producción, y fijar límites de gasto y alertas en el lado del proveedor, reduce el alcance de la rotación y ayuda a detectar antes un uso indebido. Qué hacer cuando se filtra una clave se trata en una clave de API filtrada desde código escrito por IA.
Revoque una clave que expuso, incluso después de sobrescribir la confirmación
Según el análisis de causa raíz, el punto de partida fue una clave maestra subida por error a un repositorio público en mayo. La confirmación se sobrescribió rápidamente y se identificaron las claves expuestas que había que revocar, pero la clave maestra no se revocó y se usó unos cuatro meses y medio después. La empresa dice que el incidente ilustra con claridad el riesgo de no rotar una clave potencialmente expuesta.
Si sube un secreto a un repositorio público, revoque y sustituya la clave antes de preocuparse por el historial. Tras rotar, revise la lista de claves que reemplazó para asegurarse de que no falte ninguna (nota de este sitio). El problema se trata en credenciales filtradas que siguen siendo válidas.
No dé a las herramientas de automatización el token personal de un propietario
Según el análisis, el primer token robado estaba configurado en la plataforma de agentes para que pudiera abrir pull requests. No estaba vinculado a una cuenta de servicio ni tenía alcance reducido: era el token personal de GitHub CLI de un propietario de la organización. La empresa señala que los tokens de GitHub CLI se emiten tras la autenticación en dos pasos y no están sujetos a la reautenticación que GitHub pide antes de acciones sensibles.
Dé a los agentes y bots un token dedicado con alcance limitado solo a su tarea (una GitHub App o un token de acceso detallado), y mantenga los derechos de propietario separados de las cuentas usadas en el trabajo diario (nota de este sitio). Hacer que los secretos de CI estén disponibles solo para los flujos de trabajo y entornos que los necesitan también limita hasta dónde puede llegar un token robado (nota de este sitio). La protección de una cuenta de GitHub se trata en configurar la autenticación en dos pasos de GitHub.
Mantenga los registros y la interfaz de administración de la pasarela fuera de internet
Esto resultó no ser la causa, pero la primera publicación de la empresa señalaba que, en situaciones concretas, un asistente de programación con IA puede incrustar el token de GitHub CLI de un usuario en el cuerpo de una respuesta, y donde se registran los cuerpos de las respuestas, esos tokens pueden aparecer en los registros de LiteLLM.
Para una pasarela que ejecuta usted mismo, compruebe tres cosas: que la interfaz de administración y la API no sean accesibles directamente desde internet, que se revisen los ajustes de registro que conservan los cuerpos de las respuestas y, si los conserva, que el periodo de retención sea corto. La protección de una cuenta de GitHub se trata en configurar la autenticación en dos pasos de GitHub.
Fuentes (registro público)
Los hechos de este artículo proceden de la información pública siguiente. No se reproducen el contenido del malware, las direcciones con las que contacta ni valores concretos de indicadores.
- BerriAI (LiteLLM), "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised" (publicado el 21 de octubre de 2026, actualizado a las 20:30 UTC de ese día) — docs.litellm.ai
- BerriAI (LiteLLM), "The attack chain behind the v1.107.0 LiteLLM release" (análisis de causa raíz, publicado el 23 de octubre de 2026) — docs.litellm.ai
- Incidencia n.º 47826 de GitHub de BerriAI/litellm (el informe del investigador externo y las actualizaciones de estado de la empresa, comprobadas hasta la actualización de las 21:15 UTC del 23 de octubre) — github.com
- La página del proyecto litellm en PyPI (comprobada a las 11:00 UTC del 24 de octubre; la última versión es 1.106.3 y 1.107.0 no figura) — pypi.org
- Versiones de BerriAI/litellm en GitHub (v1.103.8, v1.104.6, v1.105.4 y v1.106.3, publicadas el 24 de octubre de 2026: cambio de la clave de firma y eliminación de la CA raíz de eMudhra) — github.com
Historial de actualizaciones
2026-10-24 (11:00 UTC): Se reflejó la publicación por la empresa de 1.103.8, 1.104.6, 1.105.4 y 1.106.3 el 24 de octubre (UTC), en sustitución de la afirmación de que la última versión de PyPI seguía siendo 1.106.2. Se añadió al paso 3 y a las preguntas frecuentes que las imágenes de Docker y los charts de Helm de estas versiones se firman con una nueva clave (la clave anterior ya no verifica), y la eliminación de la CA raíz de eMudhra. Se añadió la segunda extracción del 12 de octubre del análisis de causa raíz (no intervino en el camino hacia los artefactos envenenados, según la empresa).
2026-10-24: Se reflejó el análisis de causa raíz que la empresa publicó el 23 de octubre. Se reescribió cómo se obtuvieron los tokens, de la hipótesis de la primera publicación (registros de un despliegue interno de LiteLLM) a: una clave maestra subida por error a un repositorio público y nunca revocada, luego el token del propietario almacenado en una plataforma interna de agentes, luego secretos de CI. Se actualizaron la cronología, las preguntas frecuentes, la tabla y la sección para usuarios. Las informaciones del 22 y 23 de octubre describían la hipótesis inicial (tokens filtrados mediante registros de herramientas de IA o de la pasarela), que la empresa ha corregido desde entonces. Lo que los usuarios deben hacer no cambia. No se incluyen valores de indicadores (direcciones IP, nombres, commits).
2026-10-22 (13:30 JST): Se añadió la actualización de GitHub de las 02:19 UTC del 22 de octubre (sin novedades relevantes; actualizaciones solo ante novedades significativas). El aviso sigue siendo la versión de las 20:30 UTC. Se aclararon las imágenes afectadas en GHCR y la redacción de la comprobación de uso indebido.
2026-10-22: Primera versión, basada en el aviso de BerriAI actualizado a las 20:30 UTC del 21 de octubre y en la actualización de GitHub de las 23:37 UTC de ese día. Se actualizará cuando se publiquen la vía de intrusión o las cifras.
Siga leyendo
- Relacionado: Variables de entorno de Railway posiblemente expuestas (octubre de 2026)
- Incidentes del mismo tipo: Qué hacer si usa Trivy en CI tras la vulneración de la cadena de suministro / La cadena de TanStack, Nx Console y GitHub
- Orden de revocación de tokens robados: Defensa contra los gusanos de la cadena de suministro de npm
- Dónde viven los secretos: Qué hace riesgosos los archivos .env y las claves de API / Credenciales filtradas que siguen siendo válidas
- Términos: Qué es una puerta trasera / Qué es el malware
- Otros incidentes de 2026: Filtraciones de datos y ciberataques de 2026