LiteLLM comprometido en un ataque a la cadena de suministro que distribuye un ladrón de credenciales y una puerta trasera

El popular paquete Python LiteLLM ha sido comprometido como parte de un ataque a la cadena de suministro de software que distribuyó un ladrón de credenciales y una puerta trasera, según los informes de SafeDep, Socket, StepSecurity y Upwind.

El compromiso afecta a LiteLLM 1.107.0, distribuido a través de ruedas PyPI e imágenes Docker. El paquete Python ha sido puesto en cuarentena en el Índice de Paquetes de Python (PyPI) y las imágenes Docker maliciosas han sido eliminadas.

Oliver Jensen, director de seguridad de LiteLLM, dijo que la investigación del incidente está en curso y que todavía se está trabajando para rastrear el vector de ataque original mediante el cual el actor de amenazas publicó la versión maliciosa.

Hemos identificado que las acciones maliciosas se llevaron a cabo a través de las cuentas de GitHub de tres ingenieros, al parecer mediante tokens OAuth de la CLI de GitHub robados. El actor de amenazas utilizó la cuenta de un usuario para activar la ejecución del proyecto-releaser y la de otro para aprobarla. Todos los tokens involucrados en este ataque han sido revocados.

Todavía no hemos identificado el mecanismo por el cual el actor de amenazas adquirió los tokens relevantes, por lo que aún no podemos afirmar que no haya más acceso a estas cuentas de GitHub. Como mitigación temporal, hemos eliminado a todos los usuarios excepto uno (no afectado) de nuestra organización de GitHub.

Por separado, LiteLLM dijo que ha actualizado los registros públicos para eliminar cualquier enlace de confianza a su organización de GitHub con el fin de evitar la publicación de paquetes maliciosos.

El análisis de la versión maliciosa muestra que está equipada para recopilar credenciales en la nube, claves privadas, datos de navegadores y archivos de autenticación para herramientas de desarrollo de IA. Las siguientes ruedas están afectadas:

  • litellm-1.107.0-cp310-abi3-macosx_10_12_x86_64.whl
  • litellm-1.107.0-cp310-abi3-macosx_11_0_arm64.whl
  • litellm-1.107.0-cp310-abi3-manylinux_2_28_aarch64.whl
  • litellm-1.107.0-cp310-abi3-manylinux_2_28_x86_64.whl
  • litellm-1.107.0-cp310-abi3-musllinux_1_2_aarch64.whl
  • litellm-1.107.0-cp310-abi3-musllinux_1_2_x86_64.whl
  • litellm-1.107.0-cp310-abi3-win_amd64.whl
  • litellm-1.107.0.tar.gz (sin archivos de carga útil, pero con el pyproject.toml manipulado)

La primera carga útil es un ladrón de credenciales que se autodenomina privcollect. La segunda carga útil bifurca un demonio en segundo plano que verifica un buzón de GitHub cada hora y ejecuta cualquier Python que el atacante proporcione.

El malware se ejecuta mediante Python incluso antes de que se importe LiteLLM a través de un archivo de ruta ('cook.pth'), que está diseñado para ejecutar código automáticamente cuando se inicia el intérprete. Cabe señalar que se observó el mismo comportamiento en el compromiso de LiteLLM que tuvo lugar como parte de los ataques a la cadena de suministro de TeamPCP a principios de marzo.

El archivo 'cook.pth' contiene una sola línea, 'import cook', que, a su vez, lanza la carga útil del recopilador de credenciales. Esto incluye la recolección de tokens en la nube, cuentas de desarrolladores y claves privadas, archivos JSON de credenciales de herramientas de IA, datos de navegadores asociados con Chromium y Firefox, y variables de entorno.

El malware también es capaz de atacar implementaciones de LiteLLM con el objetivo de extraer las credenciales guardadas del proxy y la configuración del modelo. Los datos recopilados se empaquetan en un archivo TAR comprimido con GZIP y se envían a 'litellm[.]dev/healthcheck' mediante una solicitud HTTP POST.

Además, el malware está diseñado para leer el contenido de un archivo de texto ('domain.txt') ubicado en un repositorio de GitHub ('github[.]com/letters9813'), verificar si contiene un dominio y, de ser así, ejecutar el mismo ladrón y finalmente ejecutar una solicitud HTTP GET contra '<domain>/codepy' y ejecutar la respuesta. El repositorio de GitHub actualmente devuelve un error 404.

Se recomienda a los usuarios que hayan descargado la versión maliciosa que revoquen y reemplacen las credenciales expuestas desde un entorno limpio y fijen la versión 1.106.2 por digest.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *