Mes lectures 0

Mes lectures

Guides

Attaque supply chain sur LiteLLM : comment se protéger des paquets Python malveillants en IA

En mars 2026, LiteLLM a subi une attaque supply chain majeure avec deux versions malveillantes. Découvrez comment sécuriser vos projets Python IA et identifier les risques rapidement.

litellm supply chain guide

Points clés

Ce que vous devez retenir :
  • LiteLLM 1.82.7 et 1.82.8 (24 mars 2026) contenaient du code malveillant
  • L’attaque visait à voler des clés API et données de configuration
  • Verrouillez vite vos dépendances Python avec des versions exactes
  • Scannez vos environnements avec pip-audit et safety
  • Configurez des alertes pip pour les mises à jour suspectes

Chapô : Le 24 mars 2026, deux versions malveillantes de LiteLLM ont été découvertes sur PyPI. Ce proxy Python utilisé par des millions de devs a été compromis via une attaque supply chain. Nous vous montrons comment identifier l’infection, sécuriser votre code et protéger vos projets IA contre ces menaces émergentes.

Qu’est-ce qui s’est passé avec LiteLLM en mars 2026 ?

LiteLLM est un outil proxy puissant utilisé par les développeurs IA du monde entier pour standardiser les appels aux grandes familles de modèles : OpenAI, Claude, Cohere, Hugging Face, Ollama, etc. Au lieu de jongler avec des dizaines de SDK différents, vous écrivez une seule requête et LiteLLM la traduit pour n’importe quelle plateforme. C’est simple, c’est efficace, et c’est justement pour ça qu’il est devenu un maillon critique dans la chaîne de dépendances de milliers de projets.

Le 24 mars 2026, deux versions malveillantes ont été publiées sur PyPI (le dépôt officiel Python) : LiteLLM 1.82.7 et 1.82.8. Un attaquant a réussi à compromettre les droits de publication sur le paquet, probablement via une clé API volée ou un compte développeur piraté. Les deux versions contenaient un code injecté qui tentait de :

  • Voler vos clés API (OpenAI, Claude, Anthropic, etc.)
  • Exfiltrer les fichiers de configuration contenant vos données sensibles
  • Envoyer les informations à un serveur de commande et contrôle
  • Potentiellement installer d’autres charges malveillantes en arrière-plan

Heureusement, la communauté open source et l’équipe PyPI ont réagi vite : les paquets malveillants ont été retirés en moins de quelques heures après la découverte. Mais pendant ce temps, des développeurs qui ont lancé pip install litellm ou pip install -U litellm ont pu être infectés sans le savoir.

Pourquoi les attaques supply chain visent l’écosystème IA ?

Les attaques supply chain ne sont pas nouvelles, mais elles explosent en 2026. Voici pourquoi :

  • Croissance exponentielle des outils open source IA : LangChain, LiteLLM, Hugging Face transformers, Ollama… Des centaines de paquets deviennent des dépendances transversales que personne ne peut ignorer.
  • Manque de ressources et de vérification : Beaucoup de ces projets sont maintenus par des équipes toutes petites ou par des bénévoles. La vérification des contributeurs et l’audit de sécurité sont souvent limités.
  • Les clés API IA valent cher : Une clé OpenAI ou Claude compromise peut coûter des milliers d’euros en appels API frauduleux en quelques heures.
  • Chaîne de confiance brisée : Si un paquet populaire est infecté, tous ses dépendants le sont aussi, en cascade. C’est un multiplicateur d’effet idéal pour les attaquants.
  • Installation automatique et mise à jour silencieuse : Beaucoup de devs utilisent pip install package sans épingler une version exacte, ce qui veut dire qu’une nouvelle version malveillante s’installe automatiquement.
  • Cette attaque est un signal d’alarme : la sécurité supply chain doit devenir une priorité absolue pour vous si vous construisez avec l’IA.

    Étape 1 : Vérifier si vous avez été touché

    La première chose à faire, c’est de déterminer si LiteLLM 1.82.7 ou 1.82.8 se trouve dans vos environnements actuels. Voici comment procéder :

    Commande 1 : Lister votre version installée

    Ouvrez un terminal dans chaque projet Python qui utilise LiteLLM (ou vos environnements virtuels) et lancez :

    pip list | grep litellm

    Si vous voyez litellm 1.82.7 ou litellm 1.82.8, vous êtes potentiellement infecté. Notez bien la version exacte.

    Commande 2 : Vérifier l’historique des installations

    Regardez quand la version a été installée :

    pip show litellm

    Cette commande affiche des métadonnées. Si l’installation date du 24 mars 2026 ou peu après, c’est un indicateur fort d’infection. Demandez-vous : « As-je installé ou mis à jour LiteLLM ce jour-là ? »

    Commande 3 : Inspecter les fichiers suspects

    Sur Linux/macOS, localisez le dossier d’installation et inspectez son contenu :

    python -c "import litellm; print(litellm.__path__)"

    Puis examinez les fichiers .py pour chercher du code suspect : appels à `urllib`, ouverture de fichiers sensibles, connexions réseau non documentées. Le code malveillant était obfusqué mais contient souvent des patterns distinctifs.

    Étape 2 : Nettoyer et réinstaller

    Si vous avez détecté LiteLLM 1.82.7 ou 1.82.8, il faut agir maintenant :

    Suppression complète

    pip uninstall litellm -y
    pip cache purge

    Réinstallation d’une version sûre

    Installez la dernière version patché (1.82.9 ou supérieur, selon le moment où vous lisez cet article) :

    pip install litellm==1.82.9

    Remplacez 1.82.9 par la version actuelle recommandée. Consultez la page officielle LiteLLM GitHub pour la version sûre confirmée.

    Regénération immédiate des clés API

    C’est crucial : si votre code a été infecté pendant quelques heures, vos clés API ont pu être compromises. Révoquez-les et générez-en des nouvelles :

  • OpenAI : Allez sur platform.openai.com → API keys, supprimez les anciennes, créez de nouvelles clés
  • Anthropic (Claude) : console.anthropic.com → API keys, même processus
  • Tous les autres fournisseurs : Faites de même pour chaque service API que vous utilisiez
  • Étape 3 : Sécurisez votre écosystème Python avec des dépendances épinglées

    La raison pour laquelle cette attaque a pu se propager aussi vite, c’est que les gens installent les dépendances avec des versions flexibles. Ne faites pas cette erreur.

    Fichier requirements.txt : utilisez des versions exactes

    Créez ou mettez à jour votre fichier requirements.txt avec des versions précises :

    litellm==1.82.9
    openai==1.52.0
    anthropic==0.25.8
    langchain==0.1.14
    requests==2.31.0

    Utilisez == (égalité exacte), pas ~= ou >=. Oui, vous devrez tester manuellement les mises à jour, mais c’est le prix de la sécurité.

    Fichier pyproject.toml : même approche

    Si vous utilisez pyproject.toml (moderne, recommandé) :

    [project]
    dependencies = [
        "litellm==1.82.9",
        "openai==1.52.0",
        "anthropic==0.25.8",
    ]

    Commandes CI/CD : verrouillez aussi en production

    Dans vos pipelines GitHub Actions, GitLab CI, etc., utilisez toujours pip install -r requirements.txt ou pip install --no-deps pour garantir que les dépendances ne se mettent pas à jour surprise.

    Étape 4 : Scannez vos dépendances avec les outils de sécurité

    Maintenant que vous avez nettoyé, mettez en place un système de surveillance automatique :

    pip-audit : détecte les vulnérabilités connues

    Installez et utilisez pip-audit :

    pip install pip-audit
    pip-audit

    Cet outil compare vos dépendances actuelles contre une base de données CVE (Common Vulnerabilities and Exposures). Il vous avertira si vous avez une version vulnérable installée.

    safety : autre outil d’audit

    pip install safety
    safety check

    Safety fonctionne de façon similaire et peut avoir une base de données légèrement différente. Utilisez-le en complément.

    Intégration dans votre CI/CD

    Ajoutez ces commandes à votre workflow GitHub Actions ou GitLab CI pour que les scans s’exécutent à chaque push :

    - name: Scan for vulnerabilities
      run: |
        pip install pip-audit
        pip-audit --strict

    Le flag --strict fait échouer le build si une vulnérabilité est trouvée.

    Étape 5 : Configurez des alertes et une veille de sécurité

    Le contrôle c’est bien, mais la prévention c’est mieux. Mettez en place une veille proactive :

    Suive les annonces de sécurité PyPI

  • S’abonner au PyPI Security Advisory (disponible sur PyPI.org)
  • Surveiller les GitHub Security Advisories des projets que vous utilisez (LiteLLM, LangChain, etc.)
  • Rejoindre les Slack/Discord communautaires des projets IA pour des alertes en temps réel
  • Dépôt Dependabot sur GitHub

    Si vous hébergez votre code sur GitHub, activez Dependabot pour recevoir des PRs automatiques quand une mise à jour de sécurité existe :

  • Allez sur Settings → Code security and analysis → Dependabot
  • Activez « Dependabot alerts » et « Dependabot security updates »
  • Vous recevrez des PRs automatiques pour patcher les vulnérabilités
  • Alertes personnalisées

    Configurez Google Alerts ou des outils comme IFTTT pour monitorer certains mots-clés :

  • « LiteLLM vulnerability »
  • « PyPI security »
  • « Python supply chain attack »
  • Astuces pro pour renforcer votre posture de sécurité

    Au-delà du nettoyage immédiat, voici ce que les devs IA chevronné font :

  • Environnements isolés : Utilisez des conteneurs Docker ou des machines virtuelles isolées pour tester des paquets suspects avant de les lancer en production
  • Audit du code source : Pour les dépendances critiques comme LiteLLM, clonez le repo GitHub, lisez le code de la version que vous allez utiliser, puis verrouillez-la à jamais
  • Permissionnage minimal : Lancez vos applications Python avec les droits utilisateur minimaux possibles (pas en root/admin)
  • Monitoring des logs : Mettez en place des logs détaillés pour detecter les appels API réseau étranges ou les exfiltrations de données
  • Tests réguliers : Faites des audits de sécurité bimestriel ou trimestriel sur vos dépendances complètes
  • Sauvegardes de fichier de configuration : Sauvegardez régulièrement vos fichiers de config (API keys, secrets) dans un endroit chiffré à part, pour pouvoir les régénérer rapidement en cas de compromission
  • Erreurs courantes à éviter

  • Ne pas toucher, c’est un problème « pas chez moi » : Même si le paquet malveillant a été retiré rapidement, il a pu être installé. Vérifiez vraiment.
  • Garder les anciennes clés API : Si vous suspectez une infection, régénérez vos clés. C’est mieux d’être prudent que d’avoir des appels API frauduleux.
  • Utiliser des wildcard versions (*) : pip install "litellm>=1.82" c’est dangereux. Épinglez les versions exactes.
  • Oublier les dépendances transitives : LiteLLM dépend peut-être d’autres paquets. Si ceux-ci sont contaminés, vous n’êtes pas sauvé en nettoyant juste LiteLLM.
  • Ignorer les logs de pip : Gardez trace de ce que vous installez et mettez à jour, pour pouvoir recréer l’historique en cas d’incident.
  • Penser que « mon projet est petit » : Les attaquants scannent tous les projets. Taille n’est pas un bouclier de sécurité.
  • Résumé en 5 points

  • Vérifiez si vous avez LiteLLM 1.82.7 ou 1.82.8 avec pip list | grep litellm
  • Si oui, désinstallez, nettoyez le cache, et réinstallez une version sûre
  • Régénérez immédiatement vos clés API (OpenAI, Claude, etc.)
  • Épinglez toutes vos dépendances à des versions exactes dans requirements.txt
  • Mettez en place pip-audit, Dependabot, et une veille de sécurité continu
  • FAQ : Les questions que vous vous posez

    Est-ce que je dois paniquer si j’ai utilisé une version malveillante ?

    Non, mais oui. La bonne nouvelle : l’attaque a été découverte et neutralisée vite. La mauvaise : si vous avez exécuté du code avec ces versions, vos clés API ont pu être compromises. Faites les trois choses suivantes immédiatement : (1) nettoyez l’installation, (2) régénérez les clés API, (3) vérifiez vos logs pour détecter les appels API suspects. Si tout est propre, vous êtes bon. Si vous voyez des appels frauduleux, contactez immédiatement les fournisseurs (OpenAI, Anthropic, etc.) et signalez la fraude.

    Peut-il y avoir d’autres paquets IA infectés en ce moment ?

    Probablement. LiteLLM n’est pas un cas isolé. Des attaques supply chain vont continuer à se produire. La meilleure défense c’est une bonne hygiène : épinglez vos versions, scannez régulièrement avec pip-audit et safety, et restez vigilant. Lire les changelogs des projets que vous utilisez est aussi une bonne pratique.

    Dois-je auditer tout mon code pour du code malveillant injecté ?

    En théorie, oui. En pratique, si vous avez exécuté LiteLLM infecté, le malware avait accès à vos fichiers de configuration et vos variables d’environnement. Plutôt que de chercher l’aiguille dans la botte de foin, concentrez-vous sur : (1) regénérer les clés, (2) nettoyer votre environnement, (3) redéployer une version propre. Si vous voulez être extra prudent, lancez un scan antivirus/antimalware sur la machine en question.

    Combien de time j’ai pour nettoyer avant qu’il ne soit trop tard ?

    L’attaque remonte au 24 mars 2026, mais des dégâts peuvent survenir des semaines ou mois après (les clés peuvent être utilisées progressivement). Faites-le dès aujourd’hui. Plus vous attendez, plus le risque augmente. Une heure c’est le timing idéal pour (1) déterminer si vous êtes affecté, (2) nettoyer, (3) régénérer les clés. Deux heures max si vous devez coordonner avec d’autres ou tester en prod.

    Pour aller plus loin

    La sécurité supply chain en Python est un domaine qui émerge. Quelques ressources pour rester à jour :

  • PyPI Security Advisories : pypi.org/help#security
  • OWASP Dependency-Check : Outil pour auditer les dépendances (alternative à pip-audit)
  • Bandit : Scanner de sécurité statique pour du code Python
  • LiteLLM GitHub Security : Suivez les releases et les patches offciels
  • Python Security Summit 2026 : Conférences et ressources sur la sécurité Python/IA
  • Le monde de l’IA se construit vite, mais la sécurité doit rester une fondation solide. Prenez le temps de sécuriser votre écosystème aujourd’hui, vous éviterez des crises demain.

    Avatar photo
    Transparence

    Rédigé avec l'assistance d'outils d'IA générative à partir de sources primaires identifiées, puis vérifié et validé par Mohamed Meguedmi, fondateur et directeur éditorial de La Gazette IA. Charte éditoriale · Tous ses articles