
CVE-2026-23491 - InvoicePlane tem Path Traversal não autenticado no Guest Controller
| Campo | Detalhes |
|---|
| ID do CVE | CVE-2026-23491 |
| Gravidade | CRITICAL |
| Aviso | Ver Aviso |
| Descoberto por | Lukasz Rybak |
Existe uma vulnerabilidade de path traversal no método get_file do controller Get do módulo Guest no InvoicePlane v1.6.3. A vulnerabilidade permite que atacantes não autenticados leiam arquivos arbitrários no servidor manipulando o nome do arquivo de entrada. Isso leva à divulgação de informações sensíveis, incluindo arquivos de configuração com credenciais de banco de dados.
A vulnerabilidade está localizada no arquivo application/modules/guest/controllers/Get.php, especificamente dentro da função get_file.
A função aceita um parâmetro $filename diretamente da URL. Ela executa urldecode($filename), mas não sanitiza a entrada para sequências de travessia de diretórios (ex.: ../). O nome de arquivo "sanitizado" é então concatenado com um diretório base ($this->targetPath, que aponta para uploads/customer_files/) e passado para a função readfile().
Trecho do Código Vulnerável:
public function get_file($filename): void
{
$filename = urldecode($filename);
if ( ! file_exists($this->targetPath . $filename)) {
$ref = isset($_SERVER['HTTP_REFERER']) ? ', Referer:' . $_SERVER['HTTP_REFERER'] : '';
$this->respond_message(404, 'upload_error_file_not_found', $this->targetPath . $filename . $ref);
}
// ... headers setting content type and disposition ...
readfile($this->targetPath . $filename);
}
Como $filename é controlado pelo usuário e não verificado, um atacante pode fornecer uma string como ../../ipconfig.php para escapar do diretório pretendido.
O seguinte comando cURL demonstra a leitura do arquivo ipconfig.php (que reside dois diretórios acima do diretório padrão uploads/customer_files/):
curl http://localhost/index.php/guest/get/get_file/..%2f..%2fipconfig.php

Saída Esperada:
O servidor responde com o conteúdo de ipconfig.php, que inclui variáveis de ambiente sensíveis como DB_PASSWORD e ENCRYPTION_KEY.
Atacantes podem ler a configuração do aplicativo, o código-fonte e potencialmente outros arquivos do sistema legíveis pelo usuário do servidor web.
Este CVE foi divulgado de forma responsável, seguindo práticas coordenadas de divulgação de vulnerabilidades. As informações aqui fornecidas têm fins exclusivamente educacionais e defensivos.