Um problema de Cross-Site Request Forgery (CSRF) existe no transporte MCP HTTP-stream. A função ` validate origin()` em `transports/http stream.py` utiliza uma correspondência de prefixo via `startswith()` para validar a variável `request origin` contra uma lista de permissões. Isso permite que um invasor ignore a verificação usando um domínio que comece com um prefixo permitido, como `http://localhost.attacker.com`.
Como o servidor pode ser executado sem uma chave de API por padrão e processa os corpos das requisições independentemente do cabeçalho `Content-Type`, um invasor pode enviar uma requisição CORS simples usando `text/plain`. Isso ignora a verificação de preflight do navegador e permite a invocação não autenticada do endpoint `tools/call`.
Um invasor pode explorar isso para realizar ações de alteração de estado, notadamente usando a ferramenta `praisonai.rules.create` para gravar arquivos maliciosos no diretório global de regras. Isso resulta em uma injeção de prompt persistente, onde instruções controladas pelo invasor são aplicadas a cada execução subsequente do agente na máquina da vítima, podendo levar à exfiltração de dados sensíveis, como chaves SSH e chaves de API. Outras ferramentas afetadas incluem `praisonai.rules.delete`, `praisonai.todo.add`, `praisonai.todo.delete` e `praisonai.schedule.add`.