Una versión comprometida de LiteLLM 1.107.0 en PyPI instala un robador de credenciales y una puerta trasera de ejecución remota de código. Las siete wheels de la versión, que cubren Linux, macOS y Windows, instalan tres archivos en site-packages. Dos de ellos se ejecutan cada vez que se inicia cualquier proceso de Python en el host, incluso uno que nunca importa litellm. El código fuente de GitHub upstream no contiene estos archivos, y PyPI ya ha retirado la versión. Las versiones 1.106.2, 1.107.0rc1 y 1.107.0rc2 están limpias, al igual que los paquetes complementarios litellm-proxy-extras==0.4.110 y litellm-enterprise==0.1.78.
El robador, cook.py, recopila claves SSH, credenciales de la nube, secretos de CI/CD, tokens de herramientas de IA, contraseñas de navegador y claves de proveedores de LLM almacenadas en la base de datos del proxy de LiteLLM. Cifra los datos y los envía a www.litellm[.]dev. Un segundo archivo, sitecustomize.py, inicia un daemon en segundo plano que se ejecuta cada hora. El daemon lee una dirección de servidor de un archivo de GitHub, vuelve a ejecutar el robador y descarga y ejecuta código desde ese servidor.
El implante entró mediante una sola línea añadida a la configuración de compilación de la distribución de código fuente 1.107.0. Esa línea copia una carpeta oculta en la wheel, y dicha carpeta no aparece en la distribución de código fuente. Además, la versión no coincide con su etiqueta, v1.107.0, y ninguna ejecución pública de GitHub Actions la compiló ni publicó. Safe Dep evalúa con confianza moderada a alta que el pipeline privado de publicación de Berri AI compiló las wheels a partir de un código fuente modificado por el atacante. Solo los registros del pipeline de la empresa pueden confirmar cómo se produjo el compromiso.
Fuente: Hacker News · Resumido por HeadlinesBriefing