Faille Pillow critique : une image EPS piégée exécute du code

Une faille Pillow, référencée CVE-2026-112900, permet d'exécuter des commandes système via le nom d'un fichier EPS.
Une faille Pillow vient d’être révélée dans la bibliothèque d’images la plus utilisée de l’écosystème Python. Référencée CVE-2026-112900, elle permet d’exécuter des commandes du système d’exploitation sur un serveur. En effet, l’attaquant n’a qu’à choisir avec soin le nom du fichier que Pillow doit ouvrir. Les développeurs qui traitent des images envoyées par des tiers doivent donc s’y intéresser rapidement.
Une faille Pillow critique dans la gestion des images EPS
Pillow est un composant omniprésent. Les sites web, les outils d’automatisation et les services de traitement d’images l’utilisent. Ils s’en servent pour ouvrir, convertir ou redimensionner des fichiers. Ainsi, sa popularité explique l’attention portée à cette vulnérabilité.
Le problème concerne le format EPS (Encapsulated PostScript). Pillow ne sait pas dessiner seul ce type d’image. Il confie donc cette tâche à Ghostscript. Ce programme distinct transforme le contenu en pixels.
Or, la bibliothèque transmet à Ghostscript le nom du fichier sans le vérifier au préalable. C’est précisément cette absence de contrôle qui ouvre la porte à l’attaque.
Un nom de fichier qui devient une commande
Le mécanisme repose sur une confiance excessive. En effet, Pillow lance Ghostscript comme un processus externe. Il lui fournit le chemin du fichier à traiter. Si ce nom contient des éléments spécialement construits, il peut modifier ce que le système exécute réellement.
Autrement dit, la donnée ne reste pas une simple donnée. Elle est interprétée comme une instruction. Il s’agit d’un schéma classique d’injection de commandes. Ce schéma touche souvent les applications faisant appel à des programmes tiers.
Ce type de défaut est particulièrement dangereux pour deux raisons :
- l’attaquant n’a pas besoin de compte privilégié pour tenter l’exploitation ;
- le code s’exécute avec les droits du processus Python qui utilise Pillow.
Par conséquent, un service tournant avec des droits étendus offre un terrain bien plus favorable à l’attaquant. Il pourrait lire des fichiers, récupérer des secrets ou se déplacer vers d’autres machines.
Des serveurs web particulièrement exposés
Le risque se concentre sur les applications qui acceptent des fichiers venant de l’extérieur. Pensez par exemple aux plateformes de partage d’images. Pensez aussi aux outils de génération de miniatures ou aux services de conversion en ligne. Dans ces cas, l’utilisateur influence directement le nom ou le contenu du fichier ouvert.
En revanche, une application qui ne manipule que des images internes de confiance présente un risque plus faible. Toutefois, il vaut mieux ne pas se fier à cette seule distinction. Les chaînes de traitement évoluent. Un fichier interne peut un jour provenir d’une source moins sûre.
Par ailleurs, la présence de Ghostscript sur la machine joue un rôle central. Pillow s’appuie sur ce programme pour lire les EPS. Les environnements où il est installé méritent un examen immédiat. C’est notamment le cas des images de conteneurs préparées à la hâte.
Les informations disponibles à ce stade ne détaillent ni les versions corrigées ni un éventuel code d’exploitation public. Il faut donc suivre de près les annonces des mainteneurs du projet. Ce sont eux qui préciseront les versions concernées et le correctif à appliquer.
Que faire face à la faille Pillow ?
D’abord, identifiez les projets qui utilisent Pillow. Inspectez les fichiers de dépendances, les images de conteneurs et les environnements virtuels. Beaucoup d’équipes oublient les dépendances indirectes. Pourtant, elles embarquent la bibliothèque.
Ensuite, installez la mise à jour de Pillow dès qu’elle est publiée. Ce correctif reste la seule solution complète. En attendant, plusieurs mesures réduisent l’exposition :
- limiter les formats acceptés, par exemple avec le paramètre
formatsde la fonctionImage.open, afin d’exclure l’EPS ; - refuser les fichiers EPS dans les formulaires de téléversement si ce format est inutile ;
- générer vous-même les noms de fichiers côté serveur, plutôt que de reprendre ceux fournis par l’utilisateur ;
- retirer Ghostscript des machines qui n’en ont pas besoin ;
- exécuter le traitement d’images dans un conteneur isolé, avec des droits minimaux.
Enfin, surveillez les journaux. Des processus inattendus lancés par votre application Python, ou des noms de fichiers étranges, doivent éveiller les soupçons.
Ce qu’il faut retenir
- La vulnérabilité porte l’identifiant CVE-2026-112900 et touche Pillow, la bibliothèque d’images la plus répandue en Python.
- Elle provient de la gestion des images EPS, qui passe le nom du fichier à Ghostscript sans le contrôler.
- Elle permet d’exécuter des commandes du système d’exploitation sur le serveur.
- Les services qui traitent des fichiers fournis par des tiers sont les plus menacés.
- Mettez à jour dès que possible, et bloquez le format EPS si vous n’en avez pas l’usage.
Source : Critical Flaw in Python’s Popular Pillow Image Library Allows Code Execution via a Crafted Image