### Sumário Nas versões afetadas, o transporte de servidor WebSocket desprezado (`mcp.server.websocket.websocket_server`) aceitou o aperto de mão WebSocket sem aplicar qualquer validação de cabeçalho `Host` ou `Origin`. O mecanismo de "TransportSecuritySettings" que os transportes HTTP SSE e Streamable usam para este fim não foi conectado ao transporte WebSocket, por isso não havia nenhuma forma SDK de restringir quais origens poderiam se conectar. ### Sou afetado? Só se o servidor de aplicativos de um desenvolvedor expor `mcp.server.websocket.websocket_server`. Este transporte nunca fez parte da especificação MCP, está marcado como desprecado e não é alcançável através do `FastMCP` — um desenvolvedor deve tê- lo ligado a um aplicativo ASGI. Os servidores usando stdio, SSE ou HTTP Streamable não são afetados por este aviso.

### Detalhes `websocket_server()` construiu um Starlette `WebSocket` e chamou `accept(subprotocol="mcp")` imediatamente, sem inspeção dos cabeçalhos da conexão. Em contraste, `SseServerTransport` e `StreamableHTTPServerTransport` aceitam um `security_settings' opcional: TransportSecuritySettings` e executam `TransportSecurityMiddleware.validate_request()` contra os cabeçalhos `Host` e `Origin` que se encontram a receber antes de estabelecer uma sessão. Como os navegadores anexam um cabeçalho `Origin` para fazer pedidos de atualização do WebSocket de origem cruzada, mas não fazem com que a política de origem seja idêntica na resposta, uma página web servida de qualquer origem poderá abrir um WebSocket para um servidor MCP acessível neste transporte, completar o aperto de mão `inicialize' e emitir pedidos do JSON- RPC na sessão resultante. ### Impacto Um usuário que executa um servidor MCP neste transporte ligado a um servidor local ou um endereço LAN, sem uma autenticação ou portão de origem separada na frente dele, e visita uma página web maliciosa, pode ter essa página enumerar e invocar as ferramentas do servidor e ler seus recursos. As consequências dependem inteiramente do que o servidor expõe. O próprio transporte não requer token ou sessão anterior. Alguns navegadores pedem antes de permitir que uma página pública abra uma conexão a um endereço de rede local, que adiciona um passo de interação do usuário, mas não é um substituto para validação do lado do servidor.

### Atualizar a Mitigação para a versão 1.28.1 ou posterior, no qual `websocket_server()` aceita o mesmo argumento opcional `security_settings: TransportSecuritySettings` como os outros transportes baseados em HTTP e valida os cabeçalhos `Host` e `Origin` antes de aceitar o aperto de mão; um pedido que falha na validação é rejeitado com HTTP 403 e `ValueError("Funhou a validação da solicitação")` é levantado para o chamador. Como com os outros transportes, o parâmetro padrão para `Nenhum', que deixa a validação desativada, assim a atualização por si só não muda o comportamento: passe um `TransportSecuritySettings` com `enable_dns_rebinding_protection=True` e apropriado `llowed_hosts` / `llowed_origins` para receber a proteção. O caminho recomendado permanece para migrar deste transporte depreciado para o HTTP Streamable, onde o `FastMCP` habilita esta proteção automaticamente para os links do hospedeiro local. O transporte do WebSocket foi removido inteiramente em v 2. Registro de aconselhamento: GHSA- vj 7 q- gjh 5 - 988 w. Identificadores relacionados: CVE- 2026 - 59950.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 16 T 20: 14: 34.000 Z e lista a sua última modificação como 2026 - 07 - 16 T 20: 14: 34.000 Z.

Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 4: CVSS: 4.0 /AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/África do Sul:N.

Informações sobre software e versão afetadas: pacote PyPI mcp — ECOSISTEM: introduzido 0, corrigido 1.28.1.

Classificação e evidência: identificadores de fraqueza CWE- 1385, CWE- 346. O registro contém 6 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.