
Divulgação detalhada de uma vulnerabilidade de XSS armazenado no VaahCMS através de manipulação insegura de upload de arquivos SVG, incluindo fluxo de exploração, endpoints afetados e estratégias de mitigação para pesquisadores de segurança.
Uma vulnerabilidade de Cross-Site Scripting (XSS) Armazenado foi identificada no vaahcms, especificamente na interação entre a lógica de upload de arquivos em MediaController.php e o método storeAvatar() em UserBase.php, permitindo que um usuário registrado de baixo nível faça upload de um arquivo SVG malicioso contendo JavaScript embutido. A vulnerabilidade decorre do armazenamento do arquivo ocorrer antes da validação de conteúdo ou tipo MIME, deixando arquivos maliciosos em um caminho previsível e publicamente acessível no servidor.
A vulnerabilidade surge do método upload() em MediaController.php
$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); permitindo que um atacante especifique o caminho do diretório, possibilitando colocar arquivos maliciosos (como um SVG com XSS) diretamente no diretório public/, tornando o payload imediatamente acessível via navegador.
A exploração bem-sucedida permite que um atacante controle o conteúdo e o nome de um arquivo escrito em um caminho de armazenamento público (/storage/media/YYYY/MM/<nome-controlado>.svg). Se este SVG publicamente acessível for subsequentemente renderizado pelo navegador de um usuário via uma ``, <object>, ou link manipulado, o script embutido será executado, levando a XSS persistente.
POST /backend/vaah/manage/media/upload
/storage/media/YYYY/MM/<nome-controlado>.svg.{"success": false, "errors": ["Unable to decode input"]}).POC.svg).xss.svg)./storage/media/2025/08/xss.svg.
enshrined/svg-sanitize para PHP)Pesquisador: Thaw Phone Nyo
Data da Divulgação: 2025/10/8