CPython : CERTFR-2026-AVI-0800 — trois CVE dont une évasion tarfile
Le CERT-FR répercute le palier CPython du 23 juin : un DoS tarfile, une évasion de répertoire (correctif incomplet de CVE-2025-4330) et une injection configparser.
Le CERT-FR a publié le 25 juin 2026 l'avis CERTFR-2026-AVI-0800 qui répercute le palier de sécurité CPython diffusé sur la liste python-announce-list le 23 juin. Trois CVE — un déni de service distant, une évasion de répertoire à l'extraction tar, et une injection dans configparser — touchent toutes les branches CPython jusqu'aux pré-3.16.0. Aucune des trois n'est exploitée publiquement en l'état, mais la deuxième est la deuxième tentative de correctif d'un bug déjà connu — l'embargo se ferme vite.
Versions concernées
L'avis CERTFR-2026-AVI-0800 cible les versions de CPython sans le dernier correctif de sécurité. Pour les opérateurs qui suivent la branche stable :
- CPython 3.x antérieures à 3.16.0 sont vulnérables à CVE-2026-11972 selon les bulletins amont.
- CPython 3.x antérieures à 3.15.0 sont vulnérables à CVE-2026-0864.
- CVE-2026-11940 est un correctif incomplet de CVE-2025-4330 — toute branche restée sur l'ancien correctif est exposée.
Les distributions Linux d'entreprise reprennent ces correctifs via leurs canaux habituels — Red Hat a publié RHSA-2026:19176 et RHSA-2026:19177 en parallèle.
CVE-2026-11972 — boucle infinie dans tarfile (mode streaming)
CVE-2026-11972 — sévérité haute, CVSS 4.0 à 8.2 — touche le module tarfile quand il est ouvert en mode flux (mode="r|"). Le module ne traite pas correctement la condition de fin de fichier ; une archive forgée pousse la boucle de parsing dans un état infini, ce qui sature CPU et mémoire du processus consommateur. CWE-252 : valeur de retour non vérifiée.
Le vecteur est réseau (attaque distante), complexité basse, sans pré-requis d'authentification ni d'interaction utilisateur. Tout service qui ingère des archives .tar non fiables — pipelines CI, traitement de pièces jointes, exporters de logs, miroirs de paquets — est dans le périmètre.
CVE-2026-11940 — évasion de répertoire dans tarfile.extractall()
CVE-2026-11940 — sévérité haute, CVSS 7.8 — contourne les filtres data et tar de tarfile.extractall() introduits par PEP 706 pour bloquer les évasions de répertoire. Une archive forgée où un hardlink pointe vers un symlink stocké plus profond dans l'archive trompe la validation : le filtre vérifie le symlink à son emplacement archivé, mais le recrée au chemin plus court du hardlink. Le lien relatif s'échappe alors hors du répertoire d'extraction et autorise une lecture ou écriture arbitraire de fichier.
C'est un correctif incomplet de CVE-2025-4330 — l'évasion historique du module fixée l'an dernier. Les opérateurs qui s'étaient arrêtés à ce correctif sont exposés. La PSF a refondu la logique du filtre pour traiter le couple hardlink/symlink.
CVE-2026-0864 — injection multi-ligne dans configparser
CVE-2026-0864 — sévérité moyenne, CVSS 3.x à 5.5, CWE-93 — permet une injection de configuration via une valeur multi-ligne forgée passée à configparser. Une chaîne contrôlée par l'attaquant peut s'étendre sur plusieurs lignes et redéfinir d'autres clés de la même section. L'impact dépend du consommateur : application qui relit ses propres fichiers, oui ; service qui lit des INI tiers (config de plugins, fichiers utilisateurs), oui aussi.
Que faire
- Mettre à jour CPython dès aujourd'hui sur les hôtes applicatifs. Pour les installations packagées, suivre RHSA-2026:19176 (Red Hat), les errata Debian/Ubuntu correspondants, ou la branche
3.xofficielle depuis python.org/downloads. - Inventorier les chemins de code qui ouvrent des archives
tarnon fiables : ingestion de logs, artifacts CI, conteneurs scannés, importeurs de paquets. CVE-2026-11972 frappe le mode streaming — vérifier si vos consommateurs passent enmode="r|"ou si l'archive est chargée intégralement. - Auditer les appels
tarfile.extractall(filter=…)dans la base de code. Sifilter="data"oufilter="tar"est utilisé en s'appuyant sur le correctif CVE-2025-4330, CVE-2026-11940 le rouvre. Tant que le palier n'est pas déployé, refuser les hardlinks (filter="fully_trusted"n'est PAS la réponse — c'est l'inverse). - Repérer les usages de
configparsersur des entrées non fiables : fichiers.iniuploadés, configuration de plugin venant d'un dépôt tiers, valeurs lues depuis un service externe. Si le contenu vient d'un attaquant possible, valider les retours à la ligne avant le passage àconfigparser. - Périmètre NIS2 / fournisseurs critiques : citer CERTFR-2026-AVI-0800 comme référence du délai de traitement et le bulletin amont du 23 juin pour la chronologie de divulgation.
Contexte
Le module tarfile est devenu un pôle récurrent de divulgation pour la PSF — c'est la troisième CVE majeure sur l'extracteur en moins de deux ans (CVE-2025-4330 l'an dernier, CVE-2025-8194 sur la boucle infinie tarfile en 2025, et CVE-2026-11972 aujourd'hui sur la même classe de défaut). Le filtre d'extraction introduit par PEP 706 reste opt-in sur les anciennes branches : les codes appelants qui n'ont pas explicitement migré vers filter="data" lisent toujours du tar à la mode pré-3.12.
Côté pratique : pour les opérateurs qui consomment des archives tar venues du dehors — registries npm/PyPI, pipelines de build, scanners de conteneurs, miroirs apt — la classe de défaut « extraction tarfile » mérite un audit dédié, pas seulement un patch. Le bulletin du 23 juin ne sera probablement pas le dernier.