PHP2Shell, Node2Shell, Pillow, LiteLLM : comment les failles d'octobre 2026 touchent vos agents IA
> En bref : Octobre 2026 a apporté des failles critiques dans PHP, Node.js, Pillow et la chaîne de publication de LiteLLM. Prises une par une, ce sont des failles d'infrastructure. Dans une architecture d'agents, elles deviennent atteignables par une simple injection de prompt : l'agent va chercher l'URL, ouvre le fichier ou appelle l'outil que l'attaquant a choisi. Voici les quatre chemins concrets, et ce qu'il faut vérifier.
1. L'outil « lire une page web » et Node2Shell
Un agent qui a un outil de navigation ou de fetch appelle des URL qu'il trouve dans ce qu'il lit : un ticket, un e-mail, un résultat de recherche. Si cet outil tourne sur Node.js et utilise fetch(), une réponse compressée en Brotli par un serveur hostile atteint directement le décodeur vulnérable (CVE-2026-111497).
Le scénario : une instruction cachée dans un document pousse l'agent à « vérifier » une URL. Le serveur répond avec un flux Brotli piégé. Le processus du serveur MCP ou du backend d'agent plante, fuit sa mémoire, ou exécute du code.
À vérifier : la version de Node.js de chaque serveur MCP et backend d'agent, et la liste des domaines que l'outil de fetch peut atteindre.
2. Les pièces jointes et Pillow
Un agent qui génère des aperçus, lit des images ou extrait du texte de documents utilise souvent Pillow. Avec CVE-2026-112900, c'est le nom du fichier qui porte l'attaque, pas son contenu. Si l'agent enregistre une pièce jointe avec le nom fourni par l'expéditeur, l'attaquant contrôle un argument passé à Ghostscript.
À vérifier : la version de Pillow (13.0.0 minimum), la présence de Ghostscript dans l'image, et le renommage systématique des fichiers reçus.
3. Les archives et tarfile
Les agents qui ingèrent des dépôts, des exports ou des jeux de documents décompressent des archives. Les failles corrigées dans les filtres d'extraction de tarfile et dans la décompression zipfile de CPython permettent d'écrire hors du dossier prévu ou de saturer la mémoire. Une archive déposée par un utilisateur suffit.
À vérifier : la version de CPython de l'environnement d'exécution de l'agent, et l'isolement du répertoire où il extrait les fichiers.
4. Les outils backend en PHP
L'agent appelle des outils : un CRM, une boutique, un intranet. Beaucoup tournent en PHP. Avec PHP2Shell, un attaquant qui compromet ce backend contrôle aussi les réponses que l'outil renvoie à l'agent. L'agent lit alors des données fabriquées et agit dessus. C'est une injection indirecte qui passe par l'infrastructure.
À vérifier : les versions de PHP derrière chaque outil appelé par l'agent, et la désactivation de session.upload_progress en attendant le patch.
5. La passerelle de modèles : LiteLLM
La compromission de LiteLLM 1.107.0 rappelle que la passerelle concentre les clés de tous les modèles. Un voleur installé dans l'environnement de l'agent récupère ces clés, et l'attaquant consomme les modèles au nom de l'entreprise.
À vérifier : versions épinglées, absence de latest en production, rotation des clés et alertes de facturation.
Ce que ces failles ont en commun
Aucune ne s'attaque au modèle. Toutes utilisent le fait qu'un agent agit sur des entrées qu'il ne contrôle pas : une URL, un nom de fichier, une archive, une réponse d'outil. Une injection de prompt donne à l'attaquant le choix de ces entrées. Le correctif d'infrastructure ferme la faille, mais la question de fond reste : qu'est-ce que votre agent peut aller chercher, ouvrir ou décompresser, et sur instruction de qui ?
La checklist de la semaine
Vous éditez un logiciel ? CleanIssue réalise des audits de sécurité pour votre produit en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.
Articles liés
Trois analyses proches pour continuer la lecture sur la meme surface de risque.
Agents IA et function calling : pourquoi c'est la nouvelle surface d'attaque
Les agents IA qui appellent des outils (API, bases de données, systèmes de fichiers) via function calling ouvrent des vulnérabilités critiques. Analyse et défenses.
Sécurité MCP : que vérifier quand votre IA parle à votre base de données
Le Model Context Protocol (MCP) connecte les LLM à vos outils internes. Points d'audit critiques pour sécuriser ces connexions.
LiteLLM 1.107.0 piégé sur PyPI et Docker : un voleur de clés cloud et IA dans la passerelle de vos agents
Le 21 octobre, le pipeline de publication de LiteLLM a été compromis via des jetons GitHub volés. La version 1.107.0 volait identifiants cloud, clés SSH et fichiers d'authentification de Claude, Codex, Gemini et Cursor. Dernière version saine : 1.106.2.
Sources
- Rapid7 — CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP
- Node.js — October 2026 Security Releases
- Rescana — Node2Shell: Node.js Brotli Flaw CVE-2026-111497
- Safeguard — Pillow 13.0.0 Security Release: CVE-2026-112900 and CVE-2026-112398
- Help Net Security — LiteLLM hit by second supply chain attack this year
Services associés
Si ce sujet reflète un risque concret sur votre stack, voici les audits CleanIssue les plus pertinents.
Red Team Agent Express
Savoir rapidement ce qu'un inconnu peut faire faire à votre agent. Rapport en 5 jours.
Red Team sur mesure
Plusieurs agents, des serveurs MCP ou des agents livrés par une agence : sur devis.
Le Shield
Le logiciel qui bloquera les actions non autorisées. En développement, accès anticipé pour les premiers clients.