
Servidor Authenticator App MCP
O Servidor Authenticator App MCP permite que agentes de IA acessem com segurança códigos de 2FA e senhas, simplificando processos automatizados de login e geren...

Automação de IA
A autenticação é a camada de segurança mais crítica para servidores MCP remotos. Aprenda por que o OAuth 2.1 com OIDC é obrigatório, como a delegação de tokens previne o ataque do Deputado Confuso e por que a passagem de tokens é um dos padrões mais perigosos em integrações de IA.
A autenticação é o guardião que determina se as poderosas capacidades de um servidor MCP estão disponíveis para usuários legítimos ou para atacantes. Se você errar nisso, todos os outros controles de segurança se tornam irrelevantes — um servidor MCP não autenticado ou mal autenticado com acesso a e-mail, arquivos e bancos de dados é uma vulnerabilidade crítica, independentemente de quão bem você tenha fortalecido todo o resto.
O guia do Projeto de Segurança OWASP GenAI identifica autenticação e autorização como um dos oito domínios principais de segurança para servidores MCP, com requisitos específicos que vão além do que a maioria dos desenvolvedores implementa por padrão. Este post explica por que esses requisitos existem e como implementá-los corretamente.
Os servidores MCP enfrentam um cenário de autenticação mais complexo do que os serviços tradicionais porque medeiam entre múltiplos principais:
Cada uma dessas relações requer seus próprios controles de autenticação e autorização. Uma fraqueza em qualquer elo pode ser explorada para contornar os outros.
Para servidores MCP remotos — aqueles acessados pela rede em vez de através de STDIO local ou sockets Unix — o guia OWASP GenAI é inequívoco: OAuth 2.1 com OIDC é obrigatório, não opcional.
Este requisito existe porque:
OAuth 2.1 fornece controle de escopo explícito. Cada token de acesso declara exatamente quais recursos e ações ele autoriza. Um servidor MCP pode verificar no momento da invocação da ferramenta que o token apresentado tem o escopo específico necessário para essa ação — não apenas que o usuário está autenticado, mas que está autorizado para esta operação específica.
OIDC fornece identidade criptográfica. OpenID Connect adiciona asserções de identidade (o token de ID) que o servidor MCP pode verificar sem fazer uma ida e volta ao provedor de identidade. O servidor valida o iss (emissor), aud (audiência), exp (expiração) e assinatura em cada solicitação.
Tokens OAuth 2.1 são de curta duração por design. A especificação OAuth moderna (que consolida e substitui as melhores práticas do OAuth 2.0) enfatiza tokens de acesso de curta duração que devem ser regularmente renovados. Isso limita a janela de dano se um token for comprometido.
Não valide tokens apenas no estabelecimento da sessão. Valide em cada invocação de ferramenta:
def validate_token(token: str, required_scope: str) -> TokenClaims:
claims = jwt.decode(
token,
key=get_public_key(claims_preview['kid']),
algorithms=["RS256", "ES256"]
)
assert claims['iss'] == EXPECTED_ISSUER
assert EXPECTED_AUDIENCE in claims['aud']
assert claims['exp'] > time.time()
assert required_scope in claims['scope'].split()
return claims
Nunca armazene em cache os resultados de validação entre solicitações. Um token que era válido no início da sessão pode ser revogado no meio da sessão.
Em ambientes onde os clientes MCP mudam frequentemente (por exemplo, diferentes assistentes de IA se conectando ao mesmo servidor), chaves de API estáticas ou segredos pré-compartilhados são insuficientes. Use registro de cliente dinâmico com OAuth 2.1 ou OIDC para verificar a identidade do cliente no momento da conexão. Listas de permissões, políticas de conexão codificadas ou TLS mútuo (mTLS) são apropriados para relacionamentos estáticos conhecidos entre clientes e servidores específicos.
O Deputado Confuso é uma vulnerabilidade clássica de autorização com uma manifestação particularmente perigosa em arquiteturas MCP. O ataque explora a ambiguidade de com qual autoridade um servidor MCP está agindo.
Considere este cenário:
Quando Alice pede ao assistente de IA para “resumir minha pasta de projeto”, o servidor usa o token de Alice para acessar seus arquivos — comportamento correto. Mas se um atacante engana o servidor para fazer uma solicitação usando suas próprias credenciais de serviço (talvez através de um ataque de envenenamento de ferramenta ou injeção de prompt indireta), as permissões elevadas do servidor são usadas para acessar arquivos que Alice não está autorizada a ver.
O servidor é o “deputado confuso” — ele foi enganado para usar sua autoridade em nome de alguém que não tem essa autoridade, agindo como um proxy para escalação de privilégios.
Muitas implementações MCP encaminham o token do cliente para APIs downstream por simplicidade. Isso parece intuitivo — o token do usuário representa as permissões do usuário, então usá-lo para todas as chamadas downstream mantém o controle de acesso correto.
O problema: APIs downstream que reconhecem o servidor MCP como um intermediário confiável podem conceder solicitações usando o nível de identidade do servidor, não o nível do token de usuário encaminhado. E se o servidor MCP agir por iniciativa própria — através de tomada de decisão de IA que o usuário não solicitou explicitamente — ele pode usar suas próprias credenciais em vez do token do usuário.
Encaminhar tokens de usuário também:
Em vez de encaminhar tokens de cliente, o servidor MCP deve obter seus próprios tokens para acesso a serviços downstream usando o fluxo On-Behalf-Of (OBO) do OAuth:
Usuário autentica no cliente MCP → cliente obtém token de acesso do usuário
Cliente MCP apresenta token do usuário ao servidor MCP
Servidor MCP troca token do usuário por um token do servidor via fluxo OBO:
POST /token
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=<user_access_token>
scope=<minimum_required_scope>
Servidor MCP usa seu próprio token OBO para chamadas downstream
O token OBO:
O guia OWASP GenAI faz uma recomendação específica: emita tokens de acesso com tempos de vida medidos em minutos, não horas. Isso se aplica tanto aos tokens que o servidor MCP aceita de clientes quanto aos tokens que ele obtém para acesso a serviços downstream.
Um token de acesso roubado é válido por todo o seu tempo de vida, independentemente de o usuário legítimo ter feito logout, alterado sua senha ou revogado sua sessão. Um token de 24 horas roubado no início de uma sessão dá a um atacante 24 horas de acesso persistente. Um token de 5 minutos roubado no meio da sessão dá no máximo 5 minutos.
Tokens de curta duração também impõem eventos regulares de reautenticação, que fornecem oportunidades para:
Cada token deve carregar apenas os escopos necessários para a operação específica sendo executada. Não emita um token com escopo read:files write:files delete:files quando a chamada de ferramenta atual só precisa de read:files. Isso limita o dano se o token for interceptado ou o modelo for manipulado para fazer chamadas de ferramenta inesperadas.
def get_tool_token(user_id: str, tool_name: str) -> str:
# Mapear ferramenta para escopos mínimos necessários
required_scopes = TOOL_SCOPE_MAP[tool_name]
return oauth_client.get_token(
subject=user_id,
scopes=required_scopes,
lifetime_seconds=300 # tempo de vida de 5 minutos
)
Um erro comum é usar IDs de sessão como proxies de autorização: se uma solicitação carrega um ID de sessão válido, o servidor assume que está autorizada. Isso confunde gerenciamento de estado com verificação de identidade.
O modelo correto: IDs de sessão gerenciam estado conversacional. A autorização é verificada independentemente em cada solicitação validando as reivindicações do token OAuth. Mesmo uma solicitação carregando um ID de sessão válido deve apresentar um token OAuth válido, não expirado e com escopo adequado antes que qualquer invocação de ferramenta seja permitida.
Isso importa porque IDs de sessão podem ser roubados, adivinhados ou reproduzidos de maneiras que tokens OAuth — que carregam garantias de integridade criptográfica — não podem.
Em vez de implementar verificações de autorização espalhadas por manipuladores de ferramentas individuais, o guia OWASP GenAI recomenda um gateway de política centralizado que:
A centralização garante que as políticas sejam aplicadas de forma consistente em todas as ferramentas e agentes. Uma verificação de autorização específica de ferramenta pode ser esquecida ou contornada durante o desenvolvimento; uma verificação de gateway não pode.
Para servidores MCP remotos, o padrão mínimo de segurança de autenticação é:
O OAuth 2.1 é necessário para servidores MCP remotos porque fornece autorização delegada com controle de escopo explícito, tokens de curta duração, verificação criptográfica e asserções de identidade padronizadas (via OIDC). Métodos mais simples como chaves de API ou cookies de sessão carecem da granularidade de escopo necessária para implementar acesso de privilégio mínimo, não fornecem garantias criptográficas de identidade e são difíceis de revogar de forma granular quando uma sessão termina.
O Deputado Confuso é um ataque de escalação de privilégios onde o servidor MCP é enganado para usar seus próprios privilégios (mais altos) para executar ações que o usuário solicitante não está autorizado a realizar. Ocorre quando a passagem de token é usada — o servidor encaminha o token de um usuário para APIs downstream, que podem conceder ao usuário acesso que não deveria ter com base no status confiável do servidor. A solução é usar fluxos de token On-Behalf-Of onde os tokens são explicitamente emitidos para o escopo de acesso específico do servidor MCP.
Passagem de token significa que o servidor MCP encaminha o token de autenticação do cliente diretamente para APIs downstream, em vez de usar suas próprias credenciais emitidas pelo servidor. Isso é perigoso porque: (1) quebra trilhas de auditoria — sistemas downstream veem o token do usuário, não o servidor MCP, tornando impossível atribuir ações ao servidor; (2) contorna as próprias políticas de acesso do servidor MCP; (3) cria uma vulnerabilidade de Deputado Confuso se a API downstream confiar mais na identidade do servidor MCP do que na do usuário; e (4) se o servidor MCP for comprometido, o atacante obtém acesso aos tokens de usuário encaminhados para todos os serviços downstream conectados.
O guia OWASP GenAI recomenda tokens com tempos de vida medidos em minutos, não horas ou dias. Tempos de vida de token mais curtos limitam a janela de exploração se um token for roubado ou uma sessão for sequestrada. Cada invocação de ferramenta deve revalidar a assinatura, audiência e expiração do token — não confiar na validação em cache desde o início da sessão.
Arshia é Engenheira de Fluxos de Trabalho de IA na FlowHunt. Com formação em ciência da computação e paixão por IA, ela se especializa em criar fluxos de trabalho eficientes que integram ferramentas de IA em tarefas do dia a dia, aumentando a produtividade e a criatividade.

Nossa equipe de segurança avalia configurações de autenticação MCP, manipulação de tokens e fluxos de autorização em relação aos padrões OWASP GenAI. Identifique lacunas antes que os atacantes o façam.

O Servidor Authenticator App MCP permite que agentes de IA acessem com segurança códigos de 2FA e senhas, simplificando processos automatizados de login e geren...

Servidores MCP expõem uma superfície de ataque única que combina riscos tradicionais de API com ameaças específicas de IA. Aprenda as 6 vulnerabilidades crítica...

O Projeto de Segurança GenAI da OWASP define uma barra mínima de cinco categorias para implementação segura de servidor MCP. Use esta lista de verificação para ...