# Abrir WebUI carregar metadados pode adicionar arquivos às bases de conhecimento sem permissão de escrita Abrir o arquivo do upload do WebUI confia no valor `metadata. knowledge_id` fornecido pelo cliente e insere uma associação `knowledge_file` antes de validar que o usuário que upload tem acesso de gravação à base de conhecimento alvo. Um usuário verificado com apenas acesso a uma base de conhecimento pode enviar um arquivo arbitrário e definir `metadata={"knowledge_id":" "}`. O normal `/ api/v 1 O endpoint / knowledge/{id}/file/ add` requer corretamente acesso de gravação de base de conhecimento, mas o caminho de link automático de upload contorna essa verificação de autorização. O resultado imediato é a modificação não autorizada da associação de arquivos da base de conhecimentos- alvo. O arquivo controlado pelo atacante se torna visível através de `/api/v 1 /knowledge/{id}/files`, e os leitores/ proprietários dessa base de conhecimento podem recuperar o arquivo através dos endpoints normais do arquivo porque o acesso ao arquivo é derivado da associação `KnowledgeFile`.

- Repository: `open-webui/open-webui` - Commit de fonte testada: ` 02 dc 3 e 689 ceac 915 a 870 b 373318 b 99 c 029 ddf 603 ` - Versão do pacote observada no `package.json`: ` 0.9.6 ` - Nome do pacote: `open-webui` Um colaborador de base de conhecimento somente de leitura pode executar uma operação de gravação contra essa base de conhecimentos anexando arquivos carregados arbitrários. - Modificação não autorizada da associação de uma base de conhecimentos. - Impacto da integridade em listas de arquivos compartilhadas de uma base de conhecimentos. - Arquivos controlados pelo atacante tornam- se legíveis para outros usuários que podem ler a base de conhecimentos alvo. - Se um proprietário/ administrador reprocessa mais tarde ou reindexa globalmente a base de conhecimentos, o arquivo não autorizado pode ser indexado na coleção de conhecimentos, transformando a conexão de associação em envenenamento por conteúdo/ RAG. Este não é um problema não autenticado. Ele requer uma conta WebUI Aberto verificada e um ID de base de conhecimento de alvo válido. O caminho mais claro para explorar é um usuário que legitimamente tem acesso a uma base de conhecimento, mas não tem acesso de gravação.

O conhecimento normal de um único arquivo adiciona as verificações de endpoint gravar permissão antes de processar ou inserir a relação: - `backend/open_webui/routers/wnowledge.py` - `add_file_to_wnowledge_by_id` - Linhas 714 - 728 Rejeitar os chamados que não são proprietários, administradores ou que concedem acesso `write`. - Linhas 750 - 766 em seguida, processar e inserir o arquivo somente após aquele portão de autorização. O caminho de envio de link automático não realiza a mesma verificação. - `backend/open_webui/routers/files.py` - `process_uploaded_file` - Linhas 178 - 186 leia ` knowledge_id` a partir de metadados de upload e ligue imediatamente para ` Knowledges.add_file_to_knowledge_by_id(...)`. - Linhas 187 - 192 Chame `process_file(... collection_name=knowledge_id...)` após a inserção. O método do modelo insere a relação sem validar o acesso de escrita do chamador à base de conhecimento:.

- `backend/open_webui/models/wnowledge.py` - `add_file_to_wnowledge_by_id` - Linhas 646 - 677 Criar e enviar uma linha `KnowledgeFile` para as linhas fornecidas `knowledge_id`, `file_id` e `user_id`. A verificação de gravação do vetor posterior existe, mas é muito tarde. - `backend/open_webui/routers/retrieval.py` - `process_file` - Linhas 1587 - 1592 Chame `_validate_collection_access(..., access_type='write')` quando uma coleção for fornecida. Como a linha não autorizada `KnowledgeFile` já está autorizada antes da verificação ser executada, o processamento do vetor falhado não desfaz a associação de arquivos de base de conhecimento. O código de upload capta a exceção nas linhas `backend/open_webui/routers/files.py` 194 - 195 e registra um aviso enquanto deixa a linha no lugar. A relação não autorizada afeta decisões de acesso ao arquivo. - `backend/open_webui/utils/access_control/files.py` - `has_access_to_file` - Linhas 41 - 53 concede o acesso ao arquivo quando um arquivo está associado a uma base de conhecimentos que o usuário pode acessar.

Assim, uma vez que o arquivo do atacante é inserido na tabela de 'ConhecimentosFile', os leitores/ proprietários da base de conhecimento podem ver e obter esse arquivo através das rotas de conhecimento/ arquivo normais. ## Passos de Reprodução. Use uma instância WebUI aberta local com dois usuários verificados: 1. Como usuário `proprietário', crie uma base de conhecimento. 2. Conceda o acesso de leitura ao conhecimento, mas não conceda acesso de escrita ao usuário. 3. Como `leader`, confirme que o endpoint normal do arquivo- add é bloqueado: ```http POST /api/v 1 /knowledge/ / arquivo/add Autorização: Portador Tipo de conteúdo: aplicativo/json.

Comportamento esperado e observado para a rota normal: rejeita o pedido porque o 'leitor' não tem acesso à escrita de base de conhecimento. 4. Como 'leader', carregue um novo arquivo com o mesmo ID de conhecimento de alvo incorporado nos metadados de carregamento: ```http POST /api/v 1 /files/?process=true&process_in_background=false Autorização: Portador Tipo de conteúdo: multiparte/form-data. file=@atacker-note.txt metadata={"knowledge_id":" "} ``` 5. Observe que o pedido de upload é bem sucedido e retorna o registro de arquivo carregado. 6. Como `proprietário', solicite os arquivos de base de conhecimento:.

````http GET /api/v 1 / knowledge/ / files Autorização: Portador ```. 7. Observe que `atacker-note.txt` aparece na base de conhecimentos alvo, mesmo que `leader ' não tenha acesso à escrita. 8. Como `proprietário`, solicite o conteúdo do arquivo: ````http GET /api/v 1 /files/ / conteúdo Autorização: Portador ```. 9. Observe que o arquivo é retrieviável porque ` has_access_to_file` deriva acesso a partir da associação não autorizada da base de conhecimento. ## Comportamento esperado. O caminho de envio de link automático deve impor o mesmo contrato de autorização que `/ api/v 1 / knowledge/ {id}/ arquivo/ add`:.

- A base de conhecimentos de alvo deve existir. - O chamador deve ser o proprietário do conhecimento, um administrador ou ter acesso `write`. - A associação `directory_id` fornecida, se presente, deve pertencer à base de conhecimentos de alvo. - A associação `KnowledgeFile` só deve ser inserida após a autorização e o processamento ter sucesso. ` metadata.knowledge_id` faz com que `Knowledges.add_file_to_knowledge_by_id(...)` insira uma linha `KnowledgeFile` antes de a autorização de escrita ser verificada. A validação de gravação da coleção posterior pode falhar, mas a linha de membros não autorizada permanece comprometida. Mova a autorização da base de conhecimento antes da inserção no caminho de envio de link automático. O caminho de carregamento deve compartilhar a mesma lógica de validação de write- access e diretório usada pelos endpoints de conhecimento dedicados.

1. Carregue a base de conhecimentos de alvo. 2. Requer o acesso dono/admin/write antes de chamar `Conhecimentos.add_file_to_knowledge_by_id`. 3. Validar que o ` directory_id`, se fornecido, pertence à mesma base de conhecimentos. 4. Execute o processamento de vetores antes de inserir a linha de membros, ou envolva o processamento mais a inserção em uma limpeza de transação/compensação para que um processo negado ou falhado não possa deixar uma linha não autorizada. Registro de aconselhamento: GHSA- 7 r 7 x- gjvr- 448 g. Identificadores relacionados: CVE- 2026 - 59217. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 24 T 17: 02: 14.000 Z e lista a sua última modificação como 2026 - 07 - 24 T 17: 02: 14.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:N/I:L/A:N. Informações sobre software e versão afetadas: Pacote PyPI open-webui — ECOSISTEM: introduzido 0, corrigido 0.10.0. Classificação e evidência: identificadores de fraqueza CWE- 862, CWE- 863. O registro contém 6 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.