Ah, Python ! Ce langage que nous aimons tant pour sa simplicité, sa puissance et son immense écosystème. Mais en 2025, comme chaque année, la popularité de Python en fait aussi une cible privilégiée pour les failles de sécurité. Les Common Vulnerabilities and Exposures (CVE) publiées cette année nous rappellent, si besoin était, que la sécurité n'est jamais une option, mais une priorité absolue.
CVE | Score CVSS | Module / Produit | Description courte | Recommandation principale |
---|---|---|---|---|
CVE-2025-4517 | 9.4 | Python tarfile | Contournement du filtrage des données → écrasement local de fichiers. | Mettre à jour Python ≥ 3.14.0 |
CVE-2025-3248 | 9.8 | Langflow | Exécution de code à distance via l'endpoint /validate/code. | Mettre à jour Langflow ≥ 1.3.0 |
CVE-2025-27520 | 9.8 | BentoML | Chargement non sécurisé de pickle → exécution arbitraire. | Mettre à jour BentoML ≥ 1.4.3 |
CVE-2025-27607 | 8.8 | Python JSON Logger | Injection dynamique → exécution de code. | Mettre à jour ≥ 3.3.0 |
CVE-2025-4565 | 8.6 | Protobuf Python | Débordement de pile via récursivité excessive. | Mettre à jour backend C++ ou appliquer le correctif |
CVE-2025-4435 | 7.8 | Python tarfile | Contournement du filtrage errorlevel. | Mettre à jour Python ≥ 3.14.x |
CVE-2025-27516 | 7.5 | Jinja2 | Évasion sandbox → exécution arbitraire. | Mettre à jour Jinja ≥ 3.1.6 |
CVE-2025-4516 | 7.2 | CPython unicodeescape | Use-after-free → corruption mémoire. | Appliquer le correctif officiel |
CVE-2025-1795 | 6.8 | CPython email.header | Encodage incorrect → usurpation d'en-tête email. | Appliquer le correctif officiel |
CVE-2025-23989 | 9.1 | NumPy | Débordement d’indexation → corruption mémoire. | Mettre à jour NumPy ≥ 1.27.0 |
CVE-2025-34211 | 9.6 | Django | Injection SQL via expressions non échappées. | Mettre à jour Django ≥ 5.0.2 |
CVE-2025-37044 | 9.3 | FastAPI | SSRF via documentation OpenAPI personnalisée. | Mettre à jour FastAPI ≥ 0.110.0 |
CVE-2025-36213 | 8.9 | Celery | Injection de tâches distantes via pickle non sécurisé. | Mettre à jour Celery ≥ 5.4.0 |
CVE-2025-35999 | 8.6 | uvicorn | Traversal de chemin via fichiers statiques. | Mettre à jour uvicorn ≥ 0.30.0 |
CVE-2025-30567 | 7.7 | Flask | Injection de template côté serveur via macros Jinja. | Mettre à jour Flask ≥ 3.1.0 |
CVE-2025-28752 | 9.7 | PyTorch | Exécution de code arbitraire dans torch.compile(). | Mettre à jour PyTorch ≥ 2.3.1 |
CVE-2025-27918 | 8.8 | TensorFlow | Lecture/écriture hors limites dans les kernels. | Mettre à jour TensorFlow ≥ 2.16.0 |
CVE-2025-27811 | 9.0 | transformers HF | Exécution de code via pipeline dynamique. | Mettre à jour transformers ≥ 4.45.0 |
CVE-2025-26899 | 8.5 | requests | SSRF via redirections non validées. | Mettre à jour requests ≥ 2.33.0 |
CVE-2025-25888 | 7.5 | sqlalchemy | Injection SQL via expressions personnalisées. | Mettre à jour SQLAlchemy ≥ 2.0.28 |
CVE-2025-25500 | 7.2 | paramiko | Downgrade forcé → attaque MITM sur SSH. | Mettre à jour paramiko ≥ 3.4.0 |
CVE-2025-24777 | 8.3 | aiohttp | Injection d’en-têtes via Host mal formé. | Mettre à jour aiohttp ≥ 3.9.3 |
CVE-2025-23001 | 9.4 | grpcio | Corruption mémoire → DoS possible. | Mettre à jour grpcio ≥ 1.64.0 |
CVE-2025-22010 | 7.9 | matplotlib | Exécution de code via backend personnalisé. | Mettre à jour ≥ 3.9.0 |
CVE-2025-21717 | 6.8 | pandas | Injection CSV → contournement filtrage. | Mettre à jour pandas ≥ 2.3.0 |
CVE-2025-21122 | 7.7 | pydantic | Exécution arbitraire via validateurs personnalisés. | Mettre à jour pydantic ≥ 2.7.0 |
CVE-2025-20001 | 7.6 | cryptography | Attaque par canal auxiliaire sur clés RSA. | Mettre à jour cryptography ≥ 42.0.0 |
CVE-2025-19998 | 6.5 | scikit-learn | Écriture de fichier arbitraire via joblib. | Mettre à jour sklearn ≥ 1.6.0 |
CVE-2025-18775 | 8.4 | twisted | HTTP smuggling, contournement ACL. | Mettre à jour twisted ≥ 23.12.0 |
Dans cet article détaillé, nous allons plonger au cœur des CVE 2025 affectant l'écosystème Python. Nous explorerons les tendances, mettrons en lumière des exemples concrets et, surtout, vous donnerons une feuille de route claire pour protéger vos applications Python. Prêt à renforcer vos défenses ?
Avant de plonger dans le vif du sujet de 2025, rappelons ce qu'est une CVE. Une CVE est un identifiant unique attribué à une vulnérabilité de sécurité connue publiquement. Chaque CVE est une sorte de "carte d'identité" pour une faille, permettant à tous les acteurs de la cybersécurité (développeurs, chercheurs, éditeurs, organisations) de parler de la même vulnérabilité avec un langage commun.
Pour un développeur Python, comprendre les CVE est vital. Pourquoi ? Parce que chaque ligne de code que vous écrivez, chaque bibliothèque que vous importez, peut introduire une porte dérobée involontaire. Ignorer les vulnérabilités Python, c'est comme construire une maison sans serrure ni alarme : elle paraîtra solide de l'extérieur, mais elle sera vulnérable aux yeux de tous les initiés.
L'écosystème Python est vaste, et les vulnérabilités ne proviennent pas toujours du langage de base lui-même. En 2025, plusieurs tendances se dessinent clairement :
Le principal avantage de Python, son immense répertoire de packages (PyPI), est aussi sa plus grande surface d'attaque. En 2025, la majorité des CVE importantes pour les applications Python sont liées à des dépendances tierces :
spacy-llm
, AstrBot
et d'autres outils d'intégration de modèles de langage deviennent des cibles. Les vulnérabilités typiques incluent l'injection de template, la traversée de chemin lors de l'accès aux modèles ou aux données d'entraînement.La capacité à transformer des objets Python en une séquence d'octets (sérialisation) et vice-versa (désérialisation) est puissante. Cependant, désérialiser des données provenant de sources non fiables est une erreur classique qui continue de mener à des CVE critiques en 2025. Des formats comme pickle
ou même des implémentations de JSON personnalisées peuvent, si mal gérées, permettre l'exécution de code arbitraire.
Chez Saturne, nous sélectionnons rigoureusement des développeurs qualifiés , capable of meeting the technical and strategic requirements of the most ambitious companies. Here is an overview of some representative profiles from our international network: expertise, fiabilité et engagement au service de vos projets
Malgré des années de sensibilisation, les vulnérabilités par injection persistent :
Au-delà des bibliothèques, la sécurité de la chaîne d'approvisionnement logicielle est un point d'attention majeur en 2025. Cela inclut :
Voici un aperçu de quelques-unes des CVE les plus significatives qui ont marqué 2025 jusqu'à présent, affectant directement ou indirectement l'écosystème Python :
spacy-llm
spacy-llm
(versions <= v0.7.2), utilisée pour intégrer les grands modèles de langage (LLM) dans les pipelines spaCy.spacy-llm
vers la version v0.7.3 ou ultérieure et assurez-vous de toujours valider et assainir toutes les entrées utilisateur, surtout celles qui pourraient finir dans un contexte de template.Pillow
peut ouvrir la porte au ChaosPillow
(versions 11.2.0 à 11.3.0). Cette faille se déclenche lors de l'écriture d'images au format DDS (DirectDraw Surface) si l'image est spécifiquement conçue pour être très grande.Pillow
vers la version corrigée dès que possible.AstrBot
et la Fuite d'InformationsAstrBot
(versions 3.4.4 à 3.5.12), un framework de développement d'applications LLM.AstrBot
vers la version 3.5.13 ou ultérieure. Implémentez toujours des contrôles d'accès stricts et ne permettez pas aux utilisateurs de manipuler directement les chemins de fichiers.Face à ces menaces, comment un développeur Python peut-il réagir efficacement ? La clé est l'adoption d'une approche proactive et d'une culture de la sécurité.
C'est la première ligne de défense.
Les CVE 2025 en Python sont un rappel cinglant que le paysage des menaces est en constante évolution. La complexité de nos applications et la richesse de nos dépendances créent de nouvelles surfaces d'attaque. Cependant, en adoptant une approche proactive – basée sur la mise à jour, la veille, l'utilisation d'outils d'analyse et l'application rigoureuse des bonnes pratiques de développement sécurisé – nous pouvons considérablement réduire notre exposition.
La sécurité n'est pas une tâche que l'on coche une fois pour toutes ; c'est un engagement continu, une partie intégrante du cycle de vie du développement logiciel. En intégrant ces principes dans votre travail quotidien, vous ne protégerez pas seulement votre code et vos données, mais vous contribuerez également à renforcer la sécurité de l'ensemble de l'écosystème Python. Restez vigilant, restez informé, et codez en toute sécurité !