O administrador configurado `WEB_FETCH_FILTER_LIST` (a lista de allow/blocks aplicada a buscas na web do lado do servidor: ingestão de URL RAG, URL- a- marcar, busca de conteúdo na web) corresponde incorretamente aos nomes de host, para que o filtro possa ser contornado. 'is_string_allowed` (`backend/open_webui/utils/misc.py`) combina com `str.endswith((...)` e o site de chamadas primárias da web- fetch (`backend/open_webui/retrieval/web/utils.py`) chamou- o com a ** string URL completa**, não com o nome do host:.
- **Blocklist bypath.** Uma entrada de blocklist `!internal.example.com` só corresponde a uma URL que * termina com* essa string. Qualquer URL com um caminho (` termina com `/x`, para que a entrada nunca coincida e o resultado de captação. A lista de blocos só parou os URLs sem caminho. - **Allocar a lista de falso-rejeito e bypass.** Uma lista de permissão `company.com` rejeitou o legítimo ` e admitiu ` - **A correspondência não-marcada-limitar** no site de chamada em forma de nome de hospedeiro (`retrieval/web/main.py`): `endswith('corp.com')` também correspondeu `evilcorp.com' e `` 10.0.0.1 ` correspondiu ' 110.0.0.1 `. Um usuário autêntico capaz de ativar uma busca na web do lado do servidor pode alcançar hosts que o administrador pretendia bloquear com `WEB_FETCH_FILTER_LIST`.
A proteção SSRF primária do WebUI é uma guarda separada e sempre ligada que rejeita qualquer URL que resolva para um IP não global (`validate_url` e a camada de conexão `_ssrf_safe_new_conn`, ativa sempre que `ENABLE_RAG_LOCAL_WEB_FETCH` estiver desativada, o padrão). Esse protetor não é afetado por este problema e continua a bloquear o loopback, RFC 1918 e endereços locais de link, incluindo o ` 169.254.169.254 ` endpoint de metadata de nuvem. Este bypass, portanto, não dá acesso a esses alvos internos. O que ele derrota é a capacidade do administrador de bloquear hosts específicos **resoluíveis publicamente** (serviços internos acessíveis a partir do servidor através de um IP público, por exemplo DNS de horizons divididos ou endpoints internos do PaaS) e de impor uma lista de autorização. O conteúdo extraído é devolvido ao solicitante, por isso para os hosts acessíveis a partir da posição de rede do servidor, este é um SSRF de leitura/ divulgação de conteúdo contra o host bloqueado pelo administrador. A correspondência é agora realizada no nome de máquina analisado usando limites da etiqueta DNS. Um `is_host_ allowed(host,...)` dedicado corresponde a um item somente quando o item e o item são iguais ou o item é um domínio pai (`host == ou item. host. endswith('. ' + item)`), então `corp.com` corresponde a `api.corp.com` mas não a `evilcorp.com`, e os items IP apenas correspondem ao endereço idêntico. Ambos os sites de chamadas web-fetch passam pelo nome de hospedeiro analisado em vez do URL completo. O `is_string_ allowed` genérico é mantido inalterado para filtros não host não relacionados.
Relato pelo @ addcontent. Registro de aconselhamento: GHSA-qg 3 f- 8 x 3 j- ggf 2. Identificadores relacionados: CVE- 2026 - 59223.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 24 T 20: 49: 40.000 Z e lista a sua última modificação como 2026 - 07 - 24 T 20: 49: 40.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:L/I:N/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- 693. O registro contém 6 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.