Les développeurs de la bibliothèque Python LiteLLM, qui connaît 95 millions de téléchargements par mois et 3,5 millions au cours des dernières 24 heures, ont annoncé une compromission du projet. Les attaquants ont réussi à intercepter les identifiants de l'assistant et à publier deux versions malveillantes — 1.82.7 et 1.82.8 — contenant du code pour voler des clés et des mots de passe des systèmes des utilisateurs. Actuellement, les versions malveillantes ont été supprimées de PyPI et le projet est temporairement suspendu en attendant l'issue de l'enquête.
Le jeton d'accès au compte LiteLLM dans PyPI est tombé entre les mains des attaquants en raison de l'utilisation dans le système d'intégration continue du scanner de sécurité des dépendances trivvy. Auparavant, à la fin février, les attaquants avaient pu accéder à l'infrastructure du projet Trivy en exploitant une vulnérabilité dans le gestionnaire pull_request_target, exécuté dans le système d'intégration continue de Trivy. Après la compromission, les attaquants ont publié des versions malveillantes de Trivy 0.69-0.69, ont remplacé le gestionnaire GitHub Action trivy-action et ont mis en ligne une image Docker modifiée avec Trivy.
Le 24 mars à 11h30 (MSK), les identifiants interceptés de l'assistant LiteLLM (krrishdholakia) ont été utilisés pour publier directement les versions malveillantes LiteLLM 1.82.7 et 1.82.8 sur PyPI, contournant le CI/CD officiel de GitHub. Le dépôt du projet sur GitHub n'a pas été affecté — l'activité malveillante n'a été observée que sur PyPI. Dans la version LiteLLM 1.82.7, le code malveillant a été intégré dans le fichier litellm/proxy/proxy_server.py et s'est activé lors de l'importation de litellm.proxy. Dans la version 1.82.8, le fichier site-packages/litellm_init.pth a été inclus, et un gestionnaire a été ajouté dans le fichier proxy_server.py, emballé au format base64 et activé à chaque lancement.
Le code malveillant ajouté effectuait une recherche et envoyait des données sensibles. Les clés SSH et SSL/TLS trouvées dans le système, le contenu des variables d'environnement, les identifiants AWS, GCP, Azure et K8s, les clés de portefeuilles cryptographiques, les mots de passe de bases de données, l'historique des opérations dans l'interpréteur de commandes, ainsi que les fichiers de configuration de Git, CI/CD, gestionnaires de paquets et Docker étaient envoyés. Les données détectées étaient chiffrées à l'aide des algorithmes AES-256-CBC + RSA-4096 et envoyées par requête HTTP POST au site « https://models.litellm.cloud/ » (domaine litellm.cloud a été enregistré quelques heures avant la publication des versions malveillantes).
Il est recommandé aux utilisateurs de LiteLLM de vérifier l'absence du fichier litellm_init.pth dans le répertoire site-packages, de mettre à jour toutes les clés et les identifiants en cas d'installation de la version 1.82.7 ou 1.82.8, de verrouiller des versions spécifiques de LiteLLM dans les paramètres de chargement des dépendances et de comparer les versions utilisées de LiteLLM avec le code des versions sur GitHub.
Source : opennet.ru
