PT-2026-31997 · Unknown · Praisonaiagents
Publicado
2026-04-10
·
Atualizado
2026-04-10
·
CVE-2026-40160
CVSS v4.0
7.1
Alta
| Vetor | AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:N/VA:N/SC:H/SI:L/SA:N |
Nome do Software Vulnerável e Versões Afetadas
PraisonAIAgents versões anteriores a 1.5.128
Descrição
PraisonAIAgents, um sistema de equipes multi-agente, apresentava uma vulnerabilidade de Solicitação de Servidor Falsificada (SSRF) na rota de fallback httpx da ferramenta
web crawl. Este caminho passava diretamente URLs fornecidos pelo usuário para httpx.AsyncClient.get() com follow redirects=True e sem validação de host. Um agente LLM induzido a rastrear uma URL interna poderia acessar endpoints de metadados de nuvem (169.254.169.254), serviços internos e localhost. O conteúdo da resposta era retornado ao agente e poderia ser visível a um invasor. Este fallback era o caminho de rastreamento padrão em uma instalação nova do PraisonAI sem uma chave Tavily ou Crawl4AI instalado. O código vulnerável está localizado em src/praisonai-agents/praisonaiagents/tools/web crawl tools.py:133-180. O problema decorria da falta de restrição de esquema, resolução de nome de host ou verificação de IP privado/link-local, combinado com follow redirects=True, permitindo que invasores usassem redirecionamentos abertos para acessar redes internas. A exploração poderia ocorrer por meio de interação direta com o agente ou injeção indireta de prompt por meio de instruções ocultas em páginas rastreadas. A exploração bem-sucedida poderia expor credenciais IAM em infraestrutura de nuvem com IMDSv1 ou revelar outros serviços internos acessíveis ao host.Recomendações
Atualize o PraisonAIAgents para a versão 1.5.128 ou posterior. Como mitigação, adicione validação de URL antes da solicitação httpx, incorporando a verificação de IP privado de
file tools.py em uma utilidade compartilhada. Especificamente, adicione o seguinte código antes da solicitação httpx em tools/web crawl tools.py: import urllib.parse, socket, ipaddress; parsed = urllib.parse.urlsplit(url); if parsed.scheme not in ("http", "https"): return f"Error: Unsupported scheme: {parsed.scheme}"; try: hostname = parsed.hostname; addr = ipaddress.ip address(socket.gethostbyname(hostname)); if addr.is private or addr.is loopback or addr.is link local: return "Error: Access to internal network addresses is not allowed"; except (socket.gaierror, ValueError): passExploit
Correção
SSRF
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Praisonaiagents