Resolvido: commit/ 89 ddff 578 fd 78 bbebec 99482 d 7030 f 28 c 07757 a 3 `plabayo/rama` contém um problema de scripts cruzados armazenado/refletido no recurso de listagem de diretórios HTML `ServeDir`. Quando `ServeDir` está configurado com `DirectoryServeMode::HtmlFileList`, nomes de arquivos e componentes de URI de caminho são inseridos diretamente no HTML gerado sem fuga de HTML. Se um atacante pode criar ou influenciar um nome de arquivo ou diretório dentro de uma pasta servida, ele pode injetar HTML ou JavaScript na página de listado de diretórios. Isto pode executar script no navegador de qualquer usuário que visite a lista de diretórios afetada.

Repositório afetado. ## Componente afetado `rama-http/src/service/fs/serve_dir/open_file.rs`. A lista de diretórios HTML é construída usando o formato de string e insere valores não confiáveis diretamente no HTML. A linha de listagem de diretórios inclui o nome do arquivo ou diretório tanto no texto da ligação como no atributo `href`: linhas.push(formato!( " { 5 } { 0 } { 3 } { 4 } ", int. name, uri.path().trim_end_matches('/'),... ));.

O weancrumb de navegação também insere as partes do caminho URI no HTML gerado: nav_parts.push(formato!(" {part} ")). O título e o título da página também incluem o caminho URI atual: Listagem do diretório para.{ 0 } Listagem do diretório para.{ 0 }. Estes valores não são escavados em HTML antes de serem incorporados na página gerada. Se um aplicativo usar `ServeDir` com `DirectoryServeMode::HtmlFileList`, um atacante que pode criar ou influenciar nomes de arquivos dentro do diretório servido pode injetar HTML ou JavaScript na lista de diretórios gerada.

O possível impacto inclui. - Execução de script no navegador dos usuários que visualizam a lista de diretórios - Roubo de sessão ou token se o aplicativo usa cookies ou credenciais acessíveis ao navegador - Reparação de interfaces internas ou phishing dentro da origem do aplicativo - Ações não autorizadas na mesma origem se a vítima é autenticada - Impacto de limites de segurança se a lista de diretórios é servida sob um domínio de aplicativo confiável O ataque requer que a funcionalidade de listagem de diretórios seja ativada e o atacante controle ou influencie pelo menos um nome de arquivo ou diretório no caminho servido. Esta prova de conceito usa uma carga útil benigna. Crie uma pasta com um nome de arquivo contendo HTML. mkdir rama-xss-teste cd rama-xss-teste touch '"> .txt'.

Servir este diretório com Rama usando `ServeDir` e `DirectoryServeMode::HtmlFileList`. Configuração pretendida de exemplo. ServeDir::new("rama-xss-test").with_directory_serve_mode(DirectoryServeMode::HtmlFileList) Em seguida, visite a lista de diretórios em um navegador. O nome do arquivo deve ser mostrado como texto. Caracteres especiais como ` `, `"` e `'' devem ser escavados em HTML.

O nome do arquivo é inserido diretamente no HTML gerado. O navegador interpreta o HTML injetado e executa a carga útil benign do JavaScript. ## Comportamento esperado. Todos os nomes de arquivos, nomes de diretórios, partes do caminho URI e outros valores não confiáveis devem ser escapados antes de serem inseridos no HTML. - ` ` deve se tornar `>` - `"' deve se tornar `"` - `'' deve se tornar `&#x 27;` - `&` deve se tornar `&` Os valores não confiados usados dentro dos atributos HTML devem ser escapados usando uma função de fuga segura de atributos.

A listagem de diretórios é gerada com `format!()` e insere nomes de arquivos e valores de caminho diretamente no HTML sem escapar. Escape de todos os valores não confiados antes de inseri- los no HTML gerado. Alterações recomendadas. 1. HTML- escape `entry.name` antes de usá-lo como texto de link. 2. Valores de escape de atributos usados dentro de `href`. 3. Componentes de URI de escape HTML usados em weancrumbs. 4. HTML- escape o caminho atual usado no título e na cabeçalha da página. 5. Adicionar testes de regressão com nomes de arquivos contendo metacaracters HTML. Exemplo de cargas úteis de teste. "> .txt alerta( 1 ) .txt a&b.txt citação"test.txt single'test.txt.

A saída segura deve renderizar apenas como texto e não deve criar HTML ou JavaScript executáveis. ## Sugerido Gravidade. `CVSS: 3.1 /AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N` - A vulnerabilidade é remotamente alcançada quando um aplicativo expõe listas de diretórios `ServeDir`. - A exploração requer que o atacante crie ou influencie um nome de arquivo ou diretório no diretório servido. - A interação do usuário é necessária porque uma vítima deve visualizar a lista de diretórios afetada. - O impacto é a execução de scripts do lado do navegador na origem do aplicativo. - O escopo pode mudar se a lista é servida sob uma origem de aplicativo autenticada confiável. Este relatório está limitado à lista de diretórios HTML gerada pelo `ServeDir` quando `DirectoryServeMode::HtmlFileList` está ativado.

Este relatório não está reivindicando a execução de código remoto no servidor. O problema é o script cruzado do navegador causado por nomes de arquivos inesquecíveis e valores de caminho no HTML gerado. Registro de aconselhamento: GHSA- cwv 4 - h 3 j 5 - w 3 cf. Não há nenhum identificador adicional listado. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 07 T 23: 41: 12.000 Z e lista a sua última modificação como 2026 - 07 - 07 T 23: 41: 12.000 Z.

Severidade: LOW. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:L/AC:H/PR:H/UI:R/S:C/C:L/I:L/A:N. Informações sobre software e versão afetadas: caixas.io pacote rama — ECOSISTEM: introduzido 0, corrigido 0.3.0 -Cr. 1. Classificação e evidência: identificadores de fraqueza CWE- 116. O registro contém 3 suporte de referências nestes tipos: WEB, PACKAGE.