libpng - CVE-2026-33416
Date de publication :
Il s'agit d'une vulnérabilité de type use-after-free dans les fonctions png_set_tRNS et png_set_PLTE de libpng.
libpng est la bibliothèque de référence pour la lecture, la création et la manipulation de fichiers PNG. Elle est intégrée en tant que dépendance système dans la quasi-totalité des systèmes d'exploitation, navigateurs, frameworks applicatifs, outils de traitement d'images et pipelines serveur de traitement d'images.
Ces fonctions créent un alias de pointeur entre png_struct et png_info sur un même buffer heap, alors que ces structures ont des cycles de vie indépendants. L'appel à png_free_data libère le buffer via info_ptr tout en laissant png_ptr en état dangling. Les fonctions de transformation de lignes déréférencent ensuite ce pointeur libéré. Avec PNG_READ_INVERT_ALPHA, des valeurs contrôlées par l'attaquant sont écrites en mémoire libérée. Le fichier PNG forgé est 100% conforme à la spécification et passe tous les validateurs.
Elle permet une lecture de mémoire heap, une corruption mémoire et une exécution de code arbitraire.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Non
• Exécution de code arbitraire (à distance)
• Atteinte à la confidentialité des données
Exploitation
CWE-416 : Use After Free
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Élevée
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Oui
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Non
Preuve de concept
Une preuve de concept est disponible en sources ouvertes.
Systèmes ou composants affectés
libpng versions 1.2.1 jusqu'à 1.6.55 (toutes branches antérieures, y compris les branches 1.0.x, 1.2.x, 1.4.x, 1.5.x en fin de support)
Solutions ou recommandations
• libpng versions 1.8.0 (branche trunk) et supérieures.