Existe uma condição de percurso de percurso autenticada na funcionalidade de exportação do PDF, especificamente dentro da lógica de resolução de imagens do PDF. O problema pode permitir que um editor de FAQ privilegiado faça com que o aplicativo tente ler arquivos fora do diretório de conteúdo pretendido durante a geração de PDF. ## Componente afetado. **Archivo:** `src/phpMyFAQ/Export/Pdf/Wrapper.php` **Função:** `ConcatenatePaths()`. A lógica de resolução de caminhos depende da localização da substância `"conteúdo"` dentro de um caminho controlado pelo usuário: ```php $pos = strpos($trimmedFile, 'content'); $relativePath = substr($trimmedFile, (int) $pos); ``. Se `"conteúdo"` não estiver presente, `strpos()` retorna `false`, que se torna ` 0 ` quando lançado para um inteiro.
Como resultado, o caminho controlado pelo atacante inteiro é preservado. ``` php $trimmedFile = "../.././etc/passwd"; $pos = false; $relativePath = "../.././etc/passwd"; ```. O caminho resultante é processado mais tarde por: ``` php file_get_ contents($resolvedPath); ```. sem canonização ou verificação de contenção do diretório raiz. ## Fluxo de dados observado. ```texto FAQ Content -> PDF Export -> WriteHTML() -> Wrapper::Image() -> concatenatePaths() -> file_get_content() `` Com base na revisão de código, um usuário com privilégios de edição de FAQ pode armazenar HTML contendo caminhos de imagem criados que são processados durante a geração de PDF.
As potenciais consequências podem incluir. - Caminho atravessando fora do diretório de conteúdo pretendido - Tentativas de leitura de arquivos locais durante a exportação de PDF - Possível divulgação de arquivos legíveis dependendo do tipo de arquivo, comportamento de desinfectação e restrições de renderização de PDF Este problema foi inicialmente detectado por uma ferramenta SAST desenvolvida internamente durante a análise do código fonte do phpMyFAQ. O achado foi então investigado manualmente e validado através da revisão de código. Enquanto a saída original do scanner classificou o problema como um padrão genérico de inclusão de arquivos através do caminho/local, a análise manual identificou a causa raiz específica na lógica de resolução do caminho de `concatenatePaths()'.
Cenário de exploração potencial. O seguinte cenário é baseado na revisão de código e pretende ilustrar o impacto potencial: 1. Um usuário com privilégios de edição de FAQ cria ou modifica um item de FAQ. 2. O conteúdo FAQ contém uma tag de imagem HTML com um caminho relativo criado que não inclui a referência de diretório `content' esperada. 3. O conteúdo HTML é armazenado e posteriormente processado pela funcionalidade de exportação do PDF.
4. Quando um usuário solicita a versão PDF da FAQ, o aplicativo invoca `WriteHTML()`, que eventualmente atinge `Wrapper::Image()`. 5. `concatenatePaths()` constrói um caminho do sistema de arquivos sem a validação da canonização ou contenção do diretório. 6. O caminho resultante atinge `file_get_content()`, fazendo com que o aplicativo tente ler um arquivo fora do diretório de conteúdo pretendido. 7. Dependendo do comportamento de saneamento, permissões de arquivos, validação de imagens e comportamento de renderização em PDF, o conteúdo do arquivo alvo pode ser potencialmente exposto ao consumidor de PDF.
Com base na minha análise atual, a exploração exigiria um usuário capaz de editar conteúdo de FAQ e, portanto, não é considerado um vetor de ataque anônimo ou não autêntico. ## Sugerença de Remediação. Considere a substituição da ancoragem do caminho baseada em substring por: - canonização `realpath()` - verificações de contenção de diretórios raiz estritas - Permitmentlisting explícito de locais de imagens permitidos Registro de aconselhamento: GHSA- 88 g 4 - 74 f 3 - 63 x 9. Não há nenhum identificador adicional listado.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 25 T 17: 28: 56.000 Z e lista a sua última modificação como 2026 - 08 - 25 T 17: 28: 56.000 Z. Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N. Software afetado e informações de versão: Pacote Packagist thorsten/phpmyfaq — ECOSISTEM: introduzido 4.0.0 -alfa, consertado 4.1.5. Pacote Packagist phpmyfaq/ phpmyfaq — ECOSISTEM: introduzido 4.0.0 -alfa, consertado 4.1.5. Classificação e evidência: identificadores de fraqueza CWE- 22. O registro contém 4 suporte de referências nestes tipos: WEB, PACKAGE.