In this article
Como prevenir vulnerabilidades de travessia de diretório em handlers de função de servidores MCP
O Model Context Protocol (MCP) vem ganhando espaço como uma forma padronizada de conectar assistentes de IA a ferramentas e fontes de dados externas. À medida que a adoção do MCP cresce, proteger os servidores MCP contra possíveis vulnerabilidades se torna ainda mais importante. Pesquisas recentes sobre segurança do MCP, conduzidas por Raul Onitza-Klugman, da equipe de pesquisa de segurança da Snyk, destacam os riscos associados a servidores MCP vulneráveis e reforçam a necessidade de medidas de segurança robustas.
Entenda o MCP e suas implicações para a segurança
Em essência, o MCP é um protocolo aberto criado para conectar ferramentas, serviços ou fontes de dados externas a modelos de linguagem de grande porte (LLMs). Ele funciona como uma ponte entre aplicações de IA e os recursos que elas precisam acessar, como bancos de dados locais, APIs ou ferramentas de linha de comando.
Os servidores MCP oferecem três recursos principais: recursos, ferramentas e prompts. Recursos são dados ou arquivos somente leitura que os LLMs podem consultar, enquanto ferramentas são funções ou comandos que os LLMs podem executar.
A segurança dos servidores MCP é fundamental, pois eles costumam ser executados localmente na máquina de um desenvolvedor, que pode conter informações confidenciais, como chaves de API, credenciais e propriedade intelectual. Um servidor MCP vulnerável pode se tornar um vetor de ataque, levando a vazamentos de dados, execução de código ou outras atividades maliciosas.
Como mencionado acima, o tema da pesquisa de Raul descreve como atacantes exploraram um servidor MCP da AWS e um servidor MCP de Markdown para exfiltrar dados e executar comandos arbitrários por meio de técnicas indiretas de injeção de prompt. Isso mostra como um elo fraco da cadeia — o código do servidor MCP — pode abrir caminho para violações graves de dados e riscos à segurança.
Compartilhamento inseguro de recursos em servidores MCP
Os recursos de servidores MCP permitem disponibilizar dados como informações somente leitura que os LLMs podem usar como contexto. Por exemplo, um servidor MCP pode definir registros de banco de dados, status de aplicações ou outros tipos de conteúdo textual ou binário como recursos. Esses recursos são identificados por URIs exclusivos e geralmente contêm esquemas de protocolo personalizados. Um artigo anterior sobre como criar servidores MCP em Node.js que compartilham recursos traz um guia completo para implementar recursos em servidores MCP.
Código inseguro na definição de recursos de servidores MCP
Práticas de codificação inseguras na definição de recursos de servidores MCP podem causar vulnerabilidades de travessia de diretório. Esse tipo de vulnerabilidade ocorre quando um atacante consegue manipular o caminho do arquivo para acessar arquivos ou dados confidenciais fora do diretório previsto.
Isso pode acontecer quando a entrada fornecida pelo usuário não é sanitizada ou validada corretamente. O problema pode surgir facilmente em recursos de servidores MCP que acessam arquivos em disco para retornar seu conteúdo pelo handler de função de um determinado recurso do servidor MCP.
Veja este exemplo de código vulnerável em Node.js:
server.resource(
"pipeline-workflows",
new ResourceTemplate("pipeline-workflows://{name}", { list: undefined }),
async (uri, { name }) => {
const decodedName = decodeURIComponent(name);
let filePath = path.resolve(process.cwd(), '.github/workflows/', `${decodedName}.yaml`);
// check if filepath exists
if (!accessSync(filePath)) {
// then try without the .yaml suffix incase the user provided the full filename
filePath = path.resolve(process.cwd(), '.github/workflows/', decodedName);
}
if (accessSync(filePath)) {
let fileContents = '';
try {
fileContents = readFileSync(filePath, 'utf-8');
} catch (e) {
writeFileSync('/tmp/mcp_log.log', `ERROR READING FILE: ${e}\n`, { flag: 'a' });
}
return {
contents: [{
uri: uri.href,
text: fileContents
}]
};
}
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Neste exemplo, o filePath é construído com uma entrada fornecida pelo usuário (decodedName). Se um atacante conseguir manipular o parâmetro de nome, poderá acessar arquivos fora do diretório previsto, expondo potencialmente dados confidenciais.
Riscos de segurança das vulnerabilidades de travessia de diretório em servidores MCP
O impacto de uma vulnerabilidade de travessia de diretório em um servidor MCP pode ser significativo. Um atacante poderia acessar arquivos confidenciais, como arquivos de configuração, chaves SSH ou outros dados sigilosos. Isso poderia levar a novas formas de exploração, como execução de código ou exfiltração de dados.
Como detectar e corrigir vulnerabilidades de travessia de diretório
O Snyk Code é uma ferramenta de teste de segurança estática de aplicações (SAST) que ajuda a detectar e corrigir vulnerabilidades de travessia de diretório no código de servidores MCP.
Depois de instalar a extensão Snyk para VS Code, ela funcionará como um plugin de análise estática de código, semelhante ao ESLint. As análises são extremamente rápidas: sempre que você salvar o conteúdo de um arquivo, a Snyk verificará o código em busca de possíveis vulnerabilidades de segurança.
A captura de tela a seguir mostra como a Snyk destaca, na linha 140, a implementação da função server.resource() (do SDK TypeScript Model Context Protocol) no código do servidor MCP. Ela aponta claramente um caminho de código que ficaria vulnerável a um ataque de travessia de diretório caso uma entrada maliciosa chegasse a essa função.

A Snyk agiliza a correção de problemas de segurança ao levar esse ganho de produtividade diretamente ao fluxo de trabalho dos desenvolvedores no IDE.
Melhor ainda: a Snyk também pode corrigir esse problema de segurança! Você talvez tenha notado a anotação na linha: “Corrigir este problema: travessia de diretório”. Veja como a correção automática da Snyk funciona na prática:

Como começar a usar o Snyk Code
Baixe o plugin da Snyk para seu IDE, é grátis!
O Snyk Code usa análises avançadas com IA, conhecidas como IA simbólica, para identificar possíveis problemas de segurança no código, incluindo vulnerabilidades de travessia de diretório. Ao integrar o Snyk Code ao seu fluxo de desenvolvimento, você pode identificar e corrigir vulnerabilidades de segurança de forma proativa, antes que se tornem um problema.
Essa ferramenta analisa o código do seu servidor MCP (ou qualquer outro código que você ou o LLM gerar) em busca de possíveis problemas de segurança e fornece relatórios detalhados e recomendações de correção. Ela pode ser integrada ao seu IDE ou pipeline de CI/CD, permitindo detectar problemas de segurança ainda no início do processo de desenvolvimento.
Boas práticas para proteger servidores MCP
Para evitar vulnerabilidades de travessia de diretório em servidores MCP, siga estas boas práticas de codificação segura:
Valide e sanitize as entradas fornecidas pelo usuário para impedir que dados maliciosos sejam usados na construção de caminhos de arquivo.
Gere caminhos corretamente, seguindo convenções seguras para evitar ataques de travessia de diretório (você pode aprender com CVEs anteriores, como files-bucket-server e static-dev-server).
Use práticas de codificação segura ao definir recursos de servidores MCP, como listas de permissões e tratamento adequado de erros.
Integre uma ferramenta SAST, como o Snyk Code, ao seu fluxo de desenvolvimento para detectar e corrigir possíveis vulnerabilidades de segurança.
O que vem por aí na segurança do MCP?
À medida que o MCP evolui, é essencial acompanhar os possíveis riscos de segurança e as boas práticas para proteger servidores MCP. Para saber mais, confira estes recursos:
Snyk Learn: curso sobre travessia de diretório
Não subestime os ataques de injeção de prompt. Recomendamos muito que você leia como a injeção de prompt pode explorar o texto de PDFs e contornar a técnica de usar um LLM como avaliador.
Ao priorizar a segurança e seguir as boas práticas, você pode garantir a integridade dos seus servidores MCP e protegê-los contra possíveis vulnerabilidades.
Quer saber mais sobre a análise de MCP? Conheça hoje mesmo o Snyk Labs ou acesse a incubação do MCP Scan, da Snyk e da Invariant Labs.
Conheça o Snyk Labs
Seu espaço para ficar por dentro das pesquisas e dos experimentos mais recentes em segurança de IA.