CVE-2026-45034
PhpSpreadsheet: File::prohibitWrappers-Bypass
- Veröffentlicht
- 22.06.2026
- Aktualisiert
- 23.06.2026
- CNA zuweisen
- GitHub_M
- Beweise beobachtet
- 14.08.2026
Primäres CVSS
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:XNiedrig · nächste 30 Tage
- Perzentil
- 39,2 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
PhpSpreadsheet ist eine reine PHP-Bibliothek zum Lesen und Schreiben von Tabellenkalkulationsdateien. Vor Version 1.30.5 wurde CVE-2026-34084 durch den Helfer `File::prohibitWrappers` gepatcht. Der Helfer ruft `parse_url($filename, PHP_URL_SCHEME)` auf und prüft dann `is_string($scheme) && strlen($scheme) > 1`, um Stream-Wrapper wie `phar://`, `php://`, `data://` oder `expect://` abzulehnen. Die Prüfung ist nicht äquivalent zu „enthält der Pfad einen Wrapper“. Wenn die Eingabe die Form `phar:///path/file.phar/inner` mit drei oder mehr Schrägstrichen nach dem Schema hat, gibt `parse_url` den booleschen Wert `false` zurück, anstatt den Schema-String zurückzugeben. Der Zweig `is_string($scheme)` wird daher übersprungen, der Helfer gibt zurück, ohne eine Ausnahme auszulösen, und der Aufrufer fährt fort. Die Stream-Ebene von PHP behandelt `phar:///...` jedoch weiterhin als gültigen phar-Wrapper und öffnet die zugrunde liegende phar-Datei. Das Ergebnis ist, dass `IOFactory::load($attackerPath)` am Patch vorbeigeht und dennoch den phar-Wrapper berührt. Auf PHP 7.x reicht es bereits aus, den phar-Wrapper über `is_file` zu erreichen, damit PHP die phar-Metadaten automatisch deserialisiert, was wiederum die magischen Methoden `__wakeup` und `__destruct` eines vom Angreifer kontrollierten Objekts aufruft und vollständige RCE ermöglicht. Auf PHP 8.x wurde die automatische Metadaten-Deserialisierung für einfache Dateioperationen entfernt, sodass sich die Kette auf der PhpSpreadsheet-Ebene auf eine phar-Wrapper-Dateileseprimitive reduziert und RCE nur dann wieder auftaucht, wenn der nachgelagerte Verbraucher jemals `Phar::getMetadata` aufruft. Diese Schwachstelle ist in Version 1.30.5 behoben.
Quellen
1PoC-Exploit für die phar://-Deserialisierungsschwachstelle in PHPSpreadsheet, der prohibitWrappers umgeht, um Remote Code Execution auf verwundbaren PHP-Anwendungen zu erreichen.
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.