Ataques a la Cadena de Suministro de PyPI: Los Casos de LiteLLM y Telnyx con Recomendaciones Prácticas
Los atacantes comprometieron los paquetes litellm y telnyx filtrando un token de API de la dependencia Trivy. El 19 de marzo de 2026, se publicaron versiones maliciosas: litellm 1.82.7 y 1.82.8, telnyx 4.87.0 y 4.87.2. El código se activa al importar los módulos, escanea el entorno en busca de secretos y exfiltra datos a servidores remotos.
La carga maliciosa en litellm recopila claves SSH, credenciales de Git/Docker, archivos .env, tokens de K8s, contraseñas de bases de datos, configuraciones LDAP, historial de shell y claves criptográficas. Intenta extraer tokens de la nube de servidores de metadatos y AWS Secrets Manager. Los datos se envían a models.litellm.cloud. Para persistencia, crea un servicio SystemD llamado "System Telemetry Service" o un pod de K8s que carga instrucciones desde checkmarx.zone.
En telnyx, el código malicioso en _client.py carga etapas desde archivos WAV alojados en 8.42.209.203. En Windows, coloca msbuild.exe en la carpeta de Inicio para lanzamiento automático; en otros sistemas operativos, usa un script de Python. La versión 4.87.1 contenía un error tipográfico que bloqueaba la ejecución. La comunicación está vinculada a TeamPCP mediante una clave de cifrado.
Los desarrolladores respondieron rotando tokens, eliminando versiones e implementando editores de confianza en PyPI.
Características de los Ataques a Paquetes OSS Populares
A diferencia de los ataques típicos de PyPI (como typosquatting o paquetes nuevos), aquí se inyectó código malicioso en proyectos existentes de alto tráfico. La cadena: comprometer repositorios → robar tokens de PyPI/GitHub → publicar malware → recopilar credenciales de máquinas de desarrollo → compromisos repetidos.
LiteLLM se descargó más de 119 mil veces durante el ataque. Aproximadamente 40-50% de las instalaciones fueron sin especificar versión (la más reciente), unas 1700 instalaciones por minuto. Tiempos de respuesta de PyPI:
- LiteLLM: desde la publicación hasta la cuarentena — 2 horas 32 minutos (13 reportes de usuarios).
- Telnyx: 3 horas 42 minutos (cuarentena automática por usuarios de confianza).
Medidas de PyPI Contra Malware
Aproximadamente 700-800 proyectos nuevos se añaden diariamente. PyPI depende de la comunidad para escaneo y reportes mediante "Reportar como malicioso". Esta función, introducida en 2024, acelera la cuarentena. Los editores de confianza permiten respuestas automatizadas.
Recomendaciones: Período de Enfriamiento de Dependencias
Retrasar la instalación de nuevas versiones proporciona tiempo para la detección de malware. Formato: RFC 3339 (P3D = 3 días).
- uv: globalmente en ~/.config/uv/uv.toml o pyproject.toml:
[tool.uv]
exclude-newer = "P3D"
- pip v26.1+: en pip.conf:
[install]
uploaded-prior-to = P3D
- pip 26.0 (fecha absoluta):
python -m pip install --uploaded-prior-to=$(date -d '-3days' -Idate) package
Solución alternativa para parches de seguridad: --uploaded-prior-to=P0D o Dependabot/Renovate (que ignoran retrasos).
Bloqueo de Dependencias para Reproducibilidad
Los archivos de bloqueo con hashes evitan la sustitución de código durante la reinstalación.
| Herramienta | Comando | Formato |
|------------|---------|--------|
| uv | uv lock | uv.lock |
| pip-tools | pip-compile --generate-hashes | requirements.txt |
| pipenv | pipenv lock | Pipfile.lock |
pip freeze es insuficiente — carece de hashes. Se espera pip lock (pylock.toml).
Protección de Proyectos OSS
- Implemente editores de confianza en PyPI.
- Use 2FA + claves de hardware para PyPI/GitHub.
- Restrinja permisos de tokens (alcances).
- Monitoree publicaciones mediante webhooks.
- Escanee repositorios con Trivy/Grype.
Para máquinas de desarrollo:
- Aisle entornos comprometidos.
- Rote todas las credenciales.
- Verifique persistencia (SystemD, pods de K8s, Inicio).
- Analice tráfico/registros.
Conclusiones Clave
- Los ataques explotan paquetes OSS reales; verifique nuevas versiones.
- Un período de enfriamiento P3D + archivos de bloqueo = protección básica.
- Más de 119 mil instalaciones de LiteLLM antes de la cuarentena; la última versión es riesgosa.
- La exfiltración incluye metadatos de la nube y Secrets Manager.
- Los editores de confianza y la comunidad aceleran la respuesta de PyPI.
— Editorial Team
Aún no hay comentarios.