CVE-2026-45034
PhpSpreadsheet: bypass di File::prohibitWrappers
- Pubblicato
- 22 giu 2026
- Aggiornato
- 23 giu 2026
- Assegnazione CNA
- GitHub_M
- Evidenza osservata
- 14 ago 2026
CVSS primario
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:XBasso · prossimi 30 giorni
- Percentile
- 39,2%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
# PhpSpreadsheet PhpSpreadsheet è una libreria PHP pura per leggere e scrivere file di fogli di calcolo. Prima della versione 1.30.5, la CVE-2026-34084 è stata corretta tramite l'helper `File::prohibitWrappers`. L'helper chiama `parse_url($filename, PHP_URL_SCHEME)` e poi verifica `is_string($scheme) && strlen($scheme) > 1` per rifiutare stream wrapper come `phar://`, `php://`, `data://` o `expect://`. Il controllo non è equivalente a "il percorso contiene un wrapper". Quando l'input ha la forma `phar:///path/file.phar/inner` con tre o più slash dopo lo schema, `parse_url` restituisce `boolean false` invece di restituire la stringa dello schema. Il ramo `is_string($scheme)` viene quindi saltato, l'helper restituisce senza generare un'eccezione e il chiamante prosegue. Tuttavia, il livello stream di PHP tratta ancora `phar:///...` come un wrapper phar valido e apre il file phar sottostante. Il risultato è che `IOFactory::load($attackerPath)` aggira la patch e tocca comunque il wrapper phar. Su PHP 7.x, raggiungere semplicemente il wrapper phar tramite `is_file` è sufficiente affinché PHP deserializzi automaticamente i metadati phar, che a loro volta invocano i metodi magici `__wakeup` e `__destruct` di un oggetto controllato dall'attaccante e consentono la piena RCE. Su PHP 8.x, la deserializzazione automatica dei metadati per le operazioni su file semplici è stata rimossa, quindi la catena a livello di PhpSpreadsheet si riduce a una primitiva di lettura di file tramite wrapper phar, e la RCE riemerge solo se il consumatore a valle chiama mai `Phar::getMetadata`. Questa vulnerabilità è corretta nella versione 1.30.5.
Fonti
1Exploit PoC per la vulnerabilità di deserializzazione phar:// di PHPSpreadsheet, che aggira prohibitWrappers per ottenere l'esecuzione remota di codice su applicazioni PHP vulnerabili.
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.