### Resumo Existe uma vulnerabilidade de contornação de autorização no mecanismo de compartilhamento de arquivos de `Openlist'. Devido a uma verificação de validação do caminho de não- separador, um usuário autenticado pode criar links compartilhados para arquivos fora do seu diretório de base restrito. Isto permite que um atacante contorne o isolamento do inquilino/ usuário e obtenha acesso não autorizado à leitura de arquivos arbitrários dentro do sistema. ### Detalhes Quando um usuário tenta criar ou atualizar um compartilhamento de arquivos, o aplicativo deve verificar que o caminho de arquivo solicitado está dentro do `BasePath' atribuído ao usuário. No entanto, no `server/handles/sharing.go`, esta verificação de autorização depende de uma simples função de prefixo de string: `strings.HasPrefix(requested_path, user.BasePath)`. Porque `strings.HasPrefix` não conta com separadores de diretórios (por exemplo, `/`), um atacante cujo `BasePath` é atribuído a `/ base` pode fornecer um caminho de alvo como `/ base 2 /secret_document.txt`. O `strings.HasPrefix("/base) de validação 2 /secret_document.txt", "/ base")` avalia para "verdadeira", passando com sucesso pelo filtro de autorização.
Uma vez criado o compartilhamento, os gestores de download/ lista de compartilhamento público desembrulham e servem o arquivo com base no caminho absoluto armazenado sem reverificar o escopo atual do diretório do criador, concedendo ao atacante acesso horizontal a dados não autorizados. ### PoC **Prerequisitos:** 1. Um sistema com pelo menos dois diretórios distintos no nível de raiz: `/ base` e `/ base 2 `. 2. Existe um arquivo sensível no `/ base 2 /secret.txt`. 3. Uma conta atacante com a permissão de "CanShare" ativada e o seu caminho de `Base' estritamente limitado a `/base'. **Passos de exploração:** 1. Faça login como a conta atacante e obtenha o token de autorização do JWT. 2. Enviar um pedido `POST` para criar um novo compartilhamento, visando intencionalmente a pasta `/base de irmãos não autorizados 2 `:.
```http POST /api/ share/ crie HTTP/ 1.1 Host: Autorização: Tipo de conteúdo: aplicativo/json { "archivos": ["/base 2 /secret.txt"], "pwd": "", "max_acessed": 0 } ``` Observar o bypass: A API aceita o pedido e responde com uma mensagem de criação de compartilhamento bem- sucedida, retornando um `share_id`. O atacante pode acessar agora o objetivo público de compartilhamento (por exemplo, através da interface de usuário da web ou da API `/api/fs/list` / `/sd/ /...`) para baixar ou visualizar `/ base 2 /secret.txt`, completamente ignorando as restrições de diretório.
### Impacto Esta é uma vulnerabilidade de escada de privilégios horizontais e verticais de alta gravidade. Um usuário malicioso com privilégios básicos de compartilhamento pode armar esta confusão de caminho para expor, ler e baixar qualquer arquivo de diretórios de outros usuários ou caminhos internos de aplicativos, desde que o caminho de destino compartilha o mesmo prefixo de string que o seu próprio diretório. Isto quebra completamente as garantias de isolamento de dados do aplicativo. ### Recomendações de Remediação Contenção Canonical de Caminho: Substitua a verificação em bruto `strings.HasPrefix` com uma validação robusta de contenção de caminhos com conhecimento de separador. Certifique- se de que ambos os caminhos são normalizados e use lógica como: `target == strings de base.HasPrefix(target, base + "/")`.
Utilitário de validação centralizado: Implemente uma função dedicada (por exemplo, `utils.IsSubPath(base, alvo)`) e aplique- a de forma consistente em conjunto com os gestores de compartilhamento, atualização e visualização para evitar regressões. ### Créditos - Dinh de Son Thai do VinSOC Labs (R&D). Registro de aconselhamento: GHSA- 86 cx- wwf 4 -phq 4. Identificadores relacionados: CVE- 2026 - 69160.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 24 T 22: 32: 37.000 Z e lista a sua última modificação como 2026 - 08 - 18 T 18: 04: 49.000 Z. Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N.
Software afetado e informações de versão: Vá pacote github.com/OpenListTeam/OpenList/v 4 — ECOSISTEM: introduzido 0, corrigido 4.2.4. Classificação e evidência: identificadores de fraqueza CWE- 639. O registro contém 4 suporte de referências nestes tipos: WEB, PACKAGE.