Segurança da ferramenta WebMCP

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Publicado em: 9 de junho de 2026

Você pode usar o Protocolo de Contexto de Modelo da Web (WebMCP) para criar e expor ferramentas estruturadas a agentes de IA em execução no navegador, incluindo agentes com tecnologia de extensões. Um agente usa um modelo de linguagem grande (LLM), regras, memória e ferramentas para executar ações em nome do usuário.

Como os LLMs tratam todo o texto, instruções e dados do usuário como uma única sequência de tokens, eles estão sujeitos à injeção indireta de comandos, que é a inclusão de instruções maliciosas por um invasor. Nossa equipe escreveu este documento sobre segurança de ferramentas para ajudar você a proteger seu site e seus usuários contra pessoas de má-fé.

Embora alguns modelos tenham camadas que abordam a injeção de comandos, é impossível garantir a segurança dentro de um modelo de linguagem grande (LLM). Os modelos são probabilísticos por natureza. É importante lembrar que houve ataques repetíveis de injeção de comandos contra sistemas de agentes que usam LLMs de última geração, e a prevalência de ataques na Web está aumentando.

Para resolver essas questões, fornecemos orientações preliminares sobre segurança para quem cria ferramentas com o WebMCP.

Usar dicas de anotação

Há algumas dicas que você precisa adicionar ao criar suas ferramentas:

  • Use untrustedContentHint quando apropriado. Se uma ferramenta retornar conteúdo gerado pelo usuário (CGU) ou dados de fontes externas, considere adicionar o untrustedContentHint a ela. Esse campo rotula explicitamente a carga útil como não confiável para ajudar a proteger a integridade do site e fornecer um indicador ao agente de que esses dados exigem mais atenção.
  • Use o readOnlyHint em ferramentas que não mudam de estado. Isso permite que o agente tome decisões melhores sobre quando pedir confirmações do usuário.

Exponha suas ferramentas com cuidado

A API document.modelContext.registerTool do WebMCP expõe apenas a funcionalidade da ferramenta aos agentes. Por padrão, outros sites ou iframes de origem cruzada não podem observar nem interagir com suas ferramentas.

Você pode dar acesso à sua ferramenta com a opção exposedTo em registerTool para uma matriz de origens específicas e seguras. Isso expõe sua ferramenta a essas origens quando ela é incorporada ao seu site e quando seu site é incorporado a essa origem.

// https://partner.org

document.modelContext.registerTool({
  name: 'my_shared_tool',
  description: 'Shared across origins',
  // ...
}, {
  exposedTo: ['https://trusted.com', 'https://example.com']
});

Exponha suas ferramentas apenas a origens confiáveis. Isso é particularmente importante quando as ferramentas gerenciam dados do usuário ou afetam o usuário de alguma forma.

  • Uma ferramenta somente leitura, como getFavoriteProducts, pode revelar informações sobre um usuário. Exponha essas ferramentas apenas a sites com os quais você compartilharia esses dados diretamente.
  • As ferramentas com acesso de leitura e gravação agem em nome de um usuário. Essas ferramentas só devem ser expostas a origens confiáveis quando agem em nome do usuário. Por exemplo, você pode querer expor postComment a trustedExample.com, mas não a evilExample.com.

Definir orçamentos de caracteres

Para evitar restrições do agente, escreva descrições e saídas de ferramentas concisas. Recomendamos os seguintes limites de caracteres para melhores resultados:

  • 500 caracteres por descrição da ferramenta
  • 150 caracteres por descrição de parâmetro
  • 30 caracteres por nome de ferramenta e parâmetro
  • Limite de 1.500 caracteres por saída de ferramenta individual

É provável que haja alguma variação entre os agentes, e talvez seja necessário ajustar os orçamentos de caracteres com o feedback dos usuários.

Próximas etapas

Continuamos pesquisando e trabalhando na criação de uma infraestrutura segura para a Web de agentes. Por exemplo, há uma discussão em andamento sobre o gerenciamento de consentimento entre as partes, e o rascunho da especificação inclui requestUserInteraction() para solicitar de forma assíncrona a entrada do usuário na execução da ferramenta.

Como você planeja implementar o WebMCP no seu aplicativo? Você tem outras dúvidas, de segurança ou não? Se você se inscrever no teste de origem do WebMCP, queremos saber sobre sua experiência:

Se você estiver criando um agente, recomendamos que leia Considerações de segurança do agente para WebMCP.