CVE-2026-45034
PhpSpreadsheet: bypass de File::prohibitWrappers
- Publicado
- 22 de jun. de 2026
- Atualizado
- 23 de jun. de 2026
- Atribuindo CNA
- GitHub_M
- Evidência observada
- 14 de ago. de 2026
CVSS primário
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:XBaixo · próximos 30 dias
- Percentil
- 39,2%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
# PhpSpreadsheet PhpSpreadsheet é uma biblioteca pura em PHP para ler e escrever arquivos de planilhas. Antes da versão 1.30.5, a CVE-2026-34084 foi corrigida pelo helper `File::prohibitWrappers`. O helper chama `parse_url($filename, PHP_URL_SCHEME)` e então verifica `is_string($scheme) && strlen($scheme) > 1` para rejeitar stream wrappers como `phar://`, `php://`, `data://` ou `expect://`. A verificação não é equivalente a "o caminho contém um wrapper". Quando a entrada tem a forma `phar:///path/file.phar/inner` com três ou mais barras após o scheme, `parse_url` retorna `boolean false` em vez de retornar a string do scheme. O ramo `is_string($scheme)` é, portanto, ignorado, o helper retorna sem lançar exceção e o chamador prossegue. A camada de stream do PHP, no entanto, ainda trata `phar:///...` como um wrapper phar válido e abre o arquivo phar subjacente. O resultado é que `IOFactory::load($attackerPath)` contorna a correção e ainda acessa o wrapper phar. No PHP 7.x, simplesmente alcançar o wrapper phar via `is_file` é suficiente para o PHP desserializar automaticamente os metadados do phar, o que por sua vez invoca os métodos mágicos `__wakeup` e `__destruct` de um objeto controlado pelo atacante e concede RCE completo. No PHP 8.x, a desserialização automática de metadados para operações simples de arquivo foi removida, então a cadeia na camada do PhpSpreadsheet se reduz a uma primitiva de leitura de arquivo via wrapper phar, e a RCE só reaparece se o consumidor downstream algum dia chamar `Phar::getMetadata`. Esta vulnerabilidade é corrigida na versão 1.30.5.
Fontes
1Exploit de PoC para a vulnerabilidade de desserialização phar:// do PHPSpreadsheet, contornando o prohibitWrappers para obter execução remota de código em aplicações PHP vulneráveis.
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.