Resumo As ferramentas de pesquisa de conhecimento integradas permitem que um participante de chat escolha o padrão usado para grep arquivos de conhecimento. Os padrões que contêm metacaracters regex foram compilados com o motor `re` de backtracking do Python e executados contra cada linha de cada arquivo alcançable, sem limite de tempo em qualquer lugar nesse caminho. Um único padrão criado e uma única linha curta de texto correspondente ao núcleo da CPU, enquanto o atacante quiser, e como a pesquisa se executa sincronicamente dentro do loop do evento, aquele trabalhador não serve a ninguém enquanto gira. ## Precondições - Configuração padrão. O grupo de ferramentas de conhecimento integrado está ativado por padrão, e com o `ENABLE_KB_ EXEC` em seu padrão de `False` o modelo é entregue `grep_ knowledge_files`, que é o caminho afetado. - Qualquer usuário autenticado, sem rol elevado e sem permissão para espaço de trabalho. - Um arquivo que o atacante pode ler. `USER_ PERMISSIONS_CHAT_ FILE_ UPLOAD ' é padrão para verdadeiro e um usuário sempre tem acesso a seu próprio upload, então ambas as metades da entrada são fornecidas pelo atacante. - Um modelo que deseja chamar a ferramenta com o padrão literal do atacante. Este é o único passo não determinístico: é confiável na prática instruindo o modelo no seu próprio chat, mas não é garantido em uma determinada rota. - Implementações executando com `UVICORN_WORKERS` em seu padrão de 1 Perde a instância inteira; as implantações de vários trabalhadores perdem um trabalhador por pedido.
Disponibilidade de Impacto, contra todos os outros usuários do trabalhador afetado. Escala de custo exponencialmente com o comprimento do texto correspondente: medido no código vulnerável, a 24 o sujeito do caractere toma 1.2 s, 28 leva 19 s e 30 leva 74 s, e um 40 o sujeito de caracteres extrapola para aproximadamente um dia de CPU. O mesmo assunto contra um padrão literal leva sob um microsegundo. Não há nenhum efeito de confidencialidade ou integridade, e nenhum dado é lido ou alterado. ## Fixar Fixado em 0.11.0 por 27471. Padrão de correspondência movido de `re` para o motor `regex`, que suporta um tempo de saída por pesquisa, e cada chamada de ferramenta agora executa suas pesquisas sob um único 2 segundo orçamento correspondente, depois do qual a ferramenta retorna um erro em vez de continuar a corresponder. A atualização é suficiente; não há nada que um operador tenha a configurar.
Causa raíz - `backend/open_webui/tools/knowledge_fs.py`, `build_matcher`: compilou o padrão do chamador e devolveu uma função de correspondência não delimitada. - `backend/open_webui/tools/builtin.py`, `grep_knowledge_files`: o chamador de configuração padrão, que executou aquele matcher sobre cada linha de cada arquivo alcançable. `build_matcher` tratou qualquer padrão contendo metacaracters de regex como um regex, por isso não foi necessária nenhuma bandeira explícita para alcançar o compilador. A partir daí, os únicos limites no lugar estavam nos resultados, não no trabalho: um cap sobre os jogos retornados e um cap sobre arquivos escaneados, nenhum dos quais limita o tempo que uma única linha pode consumir. O custo de retrotraqueamento é exponencial no comprimento do texto correspondente em vez do padrão, por isso o comprimento do padrão de capping ou o comprimento da linha também não teria sido limitado. O motor não tinha tempo de saída disponível e nenhum foi imposto em outro lugar.
Prova de conceito Contra uma instância real como um usuário comum. 1. Carregar um arquivo de texto cujo conteúdo é uma única linha de 30 Caracteres `x`, e nenhum `y`. 2. Em um chat em um modelo com as ferramentas de conhecimento disponíveis, instrua o modelo a chamar `grep_ knowledge_files` com o padrão `(x)x)*y` e o id do arquivo. 3. O pedido nunca retorna. A CPU do trabalhador se senta no 100% para a duração, e solicitações simultâneas de outros usuários no mesmo trabalhador não completam. Crescimento medido diretamente contra `build_matcher` no código vulnerável. Longitude do assunto Tempo Tempo Tempo ---------------- -------- 16 | 4.7 Ms-. 20 | 73 Ms-. 24 | 1.21 s 28 | 19.3 s 30 | 73.9 sї.
Créditos @Classic 298, para a descoberta e a correção. Registro de aconselhamento: GHSA- 2 f 54 - p 244 - 32 q 6. Identificadores relacionados: CVE- 2026 - 70493.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 04 T 20: 56: 23.000 Z e lista a sua última modificação como 2026 - 08 - 04 T 20: 56: 23.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:N/A:H.
Informações sobre software e versão afetadas: Pacote PyPI open-webui — ECOSISTEM: introduzido 0.9.6, corrigido 0.11.0.
Classificação e evidência: identificadores de fraqueza CWE- 1333. O registro contém 5 suporte de referências nestes tipos: WEB, PACKAGE.