CVE-2026-45034
PhpSpreadsheet : contournement de File::prohibitWrappers
- Publié
- 22 juin 2026
- Mise à jour
- 23 juin 2026
- Attribution de CNA
- GitHub_M
- Preuve observée
- 14 août 2026
CVSS primaire
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XFaible · 30 prochains jours
- Percentile
- 39,2 %
- Date du modèle
- 21 sept. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
# PhpSpreadsheet — Contournement de la validation des wrappers (CVE-2026-34084) PhpSpreadsheet est une bibliothèque PHP pure permettant de lire et d'écrire des fichiers de feuilles de calcul. Avant la version 1.30.5, la CVE-2026-34084 a été corrigée par le helper `File::prohibitWrappers`. Ce helper appelle `parse_url($filename, PHP_URL_SCHEME)` puis vérifie `is_string($scheme) && strlen($scheme) > 1` afin de rejeter les wrappers de flux tels que `phar://`, `php://`, `data://` ou `expect://`. Cette vérification n'est pas équivalente à « le chemin contient-il un wrapper ». Lorsque l'entrée a la forme `phar:///path/file.phar/inner` avec trois barres obliques ou plus après le schéma, `parse_url` renvoie `false` au lieu de renvoyer la chaîne du schéma. La branche `is_string($scheme)` est donc ignorée, le helper retourne sans lever d'exception, et l'appelant poursuit son exécution. La couche de flux de PHP, quant à elle, traite toujours `phar:///...` comme un wrapper phar valide et ouvre le fichier phar sous-jacent. Il en résulte que `IOFactory::load($attackerPath)` contourne le correctif et touche toujours le wrapper phar. Sur PHP 7.x, le simple fait d'atteindre le wrapper phar via `is_file` suffit pour que PHP désérialise automatiquement les métadonnées phar, ce qui invoque à son tour les méthodes magiques `__wakeup` et `__destruct` d'un objet contrôlé par l'attaquant et permet une exécution de code à distance (RCE) complète. Sur PHP 8.x, la désérialisation automatique des métadonnées pour les opérations de fichiers simples a été supprimée, de sorte que la chaîne d'exploitation au niveau de PhpSpreadsheet se réduit à une primitive de lecture de fichier via le wrapper phar, et la RCE ne réapparaît que si le consommateur en aval appelle un jour `Phar::getMetadata`. Cette vulnérabilité est corrigée dans la version 1.30.5.
Sources
1Exploit PoC pour la vulnérabilité de désérialisation phar:// de PHPSpreadsheet, contournant prohibitWrappers pour parvenir à une exécution de code à distance sur des applications PHP vulnérables.
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.