CVE-2026-48095 : Le GitHub Security Lab met en évidence un débordement de mémoire dans le gestionnaire NTFS de 7-Zip, permettant l’exécution de code arbitraire via n’importe quelle extension de fichier

Le chercheur du GitHub Security Lab, Jaroslav Lobačevski, a publié le 22 mai un avis concernant la vulnérabilité CVE-2026-48095 (GHSL-2026-140). Il s’agit d’un débordement de mémoire dans le gestionnaire d’archives NTFS de 7-Zip, susceptible de permettre l’exécution de code arbitraire. La cause racine réside dans un comportement indéfini de la fonction GetCuSize(), qui calcule la taille d’un tampon pour les flux compressés NTFS via un décalage binaire à 32 bits. Lorsqu’une image NTFS manipulée par un attaquant définit ClusterSizeLog = 28 et CompressionUnit = 4, ce décalage atteint 32 — ce qui constitue un comportement indéfini en C++. Sur les architectures x86 et x64, le masquage matériel du nombre de décalages fait en sorte que l’expression renvoie la valeur 1 ; ainsi, _inBuf est alloué avec une taille d’un seul octet. Le appel suivant à ReadStream_FALSE écrit alors jusqu’à 256 Mo de données contrôlées par l’attaquant dans ce minuscule tampon. Une analyse au débogueur montre que l’objet de flux (CInStream) se situe à seulement 304 octets après _inBuf sur le tas : les premiers 64 Ko d’écriture écrasent son pointeur de table virtuelle, et les itérations ultérieures redirigent l’exécution via cette table corrompue — un classique « hijacking » de table virtuelle permettant d’exécuter du code. Cette vulnérabilité obtient un score CVSS 3.1 de 8,8 (niveau Élevé) : aucune authentification ni privilèges ne sont requis, et il suffit d’une seule interaction utilisateur (ouvrir le fichier).

Un détail particulièrement significatif quant à la surface d’attaque : 7-Zip utilise une détection basée sur des signatures ; ainsi, une image NTFS truquée portant la séquence de 8 octets "NTFS " à l’offset 3 sera dirigée vers le gestionnaire NTFS quelle que soit l’extension du fichier. Un fichier malveillant transmis sous forme de .7z, .zip, .rar ou même sans extension déclenchera le même parcours d’exécution. Toutes les versions de 7-Zip jusqu’à la 26.00 sont touchées, tant en version 32 bits qu’en version 64 bits ; sur les systèmes 64 bits disposant de moins de 16 Go de mémoire vive libre, l’allocation de _outBuf (d’une taille de 8 Go) risque d’échouer, limitant ainsi l’impact à un plantage. Lobačevski a signalé le problème en privé le 24 avril ; Igor Pavlov a publié un correctif dans la version 26.01 trois jours plus tard, le 27 avril. Les utilisateurs encore sur la version 26.00 ou antérieure doivent mettre à jour immédiatement.

GitHub Security Lab | SOC Prime