Des failles critiques dans Pillow permettent l'exécution de code via des images conçues à cet effet
Les versions de Pillow antérieures à la 13.0.0 contiennent des vulnérabilités critiques permettant l'exécution de code à distance via les noms de fichiers EPS et le traitement JPEG.
Traduit automatiquement depuis l’original en anglais.
Une vulnérabilité de sécurité critique dans Pillow, la bibliothèque dominante de traitement d'images pour Python, permet aux attaquants d'exécuter des commandes système arbitraires sur les serveurs affectés. La faille, identifiée sous la référence CVE-2026-112900, a été corrigée dans la version 13.0.0 publiée le 16 octobre 2026, affectant les installations depuis la version 2.6.0 jusqu'à la 12.3.0.
Ce qui s'est passé
La principale vulnérabilité concerne la manière dont Pillow traite les fichiers Encapsulated PostScript (EPS). Lors de l'ouverture d'une image EPS, Pillow transmet directement le nom du fichier à Ghostscript, un programme distinct utilisé pour le rendu, sans assainir l'entrée au préalable. Un attaquant peut concevoir un nom de fichier malveillant que Ghostscript interprète comme des instructions plutôt que comme un chemin de fichier. Cela permet à l'attaquant de diriger Ghostscript vers un fichier secondaire contenant des commandes exécutables, prenant ainsi le contrôle du processus serveur.
Ce problème est particulièrement dangereux car le déclencheur est le nom du fichier lui-même, et non le contenu de l'image. Comme indiqué dans l'avis de sécurité, « la faille est déclenchée par le nom du fichier, et non par quoi que ce soit dans le document PostScript ». Cela signifie qu'un fichier EPS bénin peut causer des dommages si son nom est manipulé par un attaquant. L'exploitation nécessite que le serveur cible ait Ghostscript installé et que l'application accepte des noms de fichiers contrôlés par l'utilisateur lors du téléchargement ou du traitement.
En plus de la faille EPS, la version 13.0.0 corrige deux autres problèmes critiques. L'un implique un débordement mémoire dans le décodage JPEG, spécifiquement au sein du format FlashPix, pouvant mener à l'exécution de code si le package optionnel olefile est présent. Un autre bug ancien, présent depuis 2013, provoque un dépassement de tampon lors de la sauvegarde d'images TIFF compressées dans des tampons mémoire tels que io.BytesIO, un schéma courant dans les services web qui réencodent les téléchargements.
Détails clés
- Versions affectées : Pillow 2.6.0 à 12.3.0 sont vulnérables ; la version 13.0.0 contient les correctifs.
- Vecteur principal : CVE-2026-112900 permet l'exécution de code via des noms de fichiers EPS conçus à cet effet transmis à Ghostscript.
- Vecteurs secondaires : Des débordements de tampon critiques existent dans la génération de miniatures JPEG et les opérations de sauvegarde TIFF en mémoire.
- Découverte : La faille JPEG a été identifiée par Anthropic utilisant Claude pour l'analyse de sécurité, puis validée par Ada Logics.
- Gravité : Les fiches GitHub CVE notent les failles EPS, TIFF et JPEG à 9,2 sur 10, bien que les mainteneurs classent le problème EPS comme modéré en raison des exigences de contrôle du nom de fichier.
- Adoption : OX Security estime que Pillow est téléchargé environ 436 millions de fois par mois, indiquant une exposition généralisée.
Contexte
Pillow est un fork de la Python Imaging Library (PIL) et sert de standard de facto pour la manipulation d'images dans les écosystèmes Python. C'est une dépendance pour d'innombrables frameworks web, pipelines de traitement de documents et outils d'apprentissage automatique. En raison de son omniprésence, les vulnérabilités dans Pillow ont un large rayon d'action potentiel, pouvant impacter tout, des simples formulaires de téléchargement d'avatars aux systèmes complexes de gestion documentaire.
Ghostscript est un interpréteur pour le langage PostScript et les fichiers PDF. De nombreuses distributions Linux l'incluent par défaut, et les applications Python s'appuient souvent dessus pour gérer les formats d'images vectorielles comme EPS. L'interaction entre Pillow et Ghostscript crée un pont où une mauvaise gestion des entrées dans un composant peut mener à une injection de commande dans l'autre, contournant les contrôles de sécurité typiques au niveau de l'application.
Pourquoi c'est important
Pour les équipes exploitant des logiciels auto-hébergés, cette vulnérabilité met en lumière les risques inhérents à la dépendance envers des chaînes de dépendances complexes. Si votre application accepte les téléchargements d'images par les utilisateurs, tels que les photos de profil, les documents scannés ou les ressources de conception, elle utilise probablement Pillow. Une instance non patchée pourrait permettre à un attaquant d'obtenir un accès shell à votre serveur simplement en téléchargeant un fichier avec un nom ou une structure spécifique.
L'impact va au-delà de l'exécution immédiate de code. La vulnérabilité TIFF, qui existe depuis plus d'une décennie, démontre comment le code hérité peut persister dans les infrastructures critiques. Les services qui traitent les images en mémoire pour des raisons de performance, tels que la génération d'aperçus ou la conversion de formats à la volée, sont spécifiquement à risque. Cela affecte de nombreuses applications web modernes qui évitent d'écrire des fichiers temporaires sur le disque.
De plus, la méthode de découverte signale un changement dans la façon dont les vulnérabilités sont trouvées. Avec des agents IA qui auditent désormais activement le code open source, nous pourrions assister à une augmentation des failles signalées dans les bibliothèques matures. Les équipes doivent se préparer à des cycles de correctifs plus rapides et à des mises à jour de sécurité plus fréquentes dans leurs dépendances principales.
Que pouvez-vous faire
- Mettez à jour immédiatement : Mettez à jour Pillow vers la version 13.0.0 ou ultérieure en utilisant pip install -U "Pillow>=13.0.0".
- Vérifiez la version Python : Notez que Pillow 13 abandonne le support de Python 3.10, vous devez donc passer à Python 3.11 ou plus récent si vous êtes encore sur la 3.10.
- Reconstruisez les conteneurs : Si vous utilisez Docker ou d'autres outils de conteneurisation, reconstruisez vos images pour garantir que la nouvelle version est intégrée, car les anciennes couches peuvent conserver la bibliothèque vulnérable.
- Restreignez Ghostscript : Si vous ne pouvez pas mettre à jour immédiatement, supprimez le binaire gs des hôtes qui traitent les téléchargements non fiables pour atténuer la vulnérabilité EPS.
- Assainissez les noms de fichiers : Assurez-vous que tout fichier passé à Image.open() ne contient pas de données contrôlées par l'utilisateur dans son chemin ou son nom.
- Évitez les opérations risquées : Évitez d'utiliser draft() ou thumbnail() sur des JPEG non fiables, et évitez de sauvegarder des TIFF compressés dans des tampons mémoire tant que le correctif n'est pas appliqué.



