Voltar as noticias
Como Detectar Vazamento de Dados entre Inquilinos em Servidores MCP e SaaS Multi-Inquilino
MCP ProtocolAltaEN

Como Detectar Vazamento de Dados entre Inquilinos em Servidores MCP e SaaS Multi-Inquilino

Dev.to - MCP·7 de agosto de 2026

A Lacuna de Segurança Oculta em Servidores MCP Multi-Tenant

Quando você constrói uma aplicação SaaS multi-tenant ou um servidor MCP (Modelo de Protocolo de Contexto) que atende a várias organizações, vazamento de dados entre tenants é uma das vulnerabilidades mais perigosas que você pode lançar. Um único filtro de organizationId ausente em uma consulta de banco de dados pode expor os dados de um tenant a outro — e scanners de segurança tradicionais como Snyk, Semgrep e CodeQL não detectam esses padrões.

É por isso que eu criei mcp-tenant-isolation — um scanner de análise estática com 57 regras determinísticas especificamente projetadas para detectar falhas de isolamento de tenants em bases de código multi-tenant.

O Que É Isolamento de Tenants?

O isolamento de tenants garante que os dados pertencentes a uma organização (tenant) nunca sejam acessíveis a outra. Em um aplicativo SaaS multi-tenant, cada consulta de banco de dados, leitura de cache e acesso a arquivos deve ser restrito ao organizationId do tenant atual.

A falha mais comum se parece com isto:

// VULNERÁVEL: Sem filtro de organizationId
const users = await prisma.user.findMany({
  where: { role: 'admin' }
});

// SEGURO: Consulta restrita ao tenant
const users = await prisma.user.findMany({
  where: { role: 'admin', organizationId: ctx.orgId }
});

Parece óbvio em isolamento. Mas em uma base de código com mais de 100 rotas de API, dezenas de funções de biblioteca e cadeias de middleware complexas, filtros de tenants ausentes são fáceis de perder na revisão de código e impossíveis para ferramentas SAST tradicionais detectarem.

Por Que Scanners Tradicionais Perdem Isso

Ferramentas como Snyk e Semgrep são excelentes em detectar:

  • Injeção de SQL
  • XSS
  • Vulnerabilidades de dependência
  • Vazamento de segredos

Mas elas não entendem o contexto do tenant. Elas não sabem que organizationId é o limite do tenant. Elas não rastreiam quais funções requerem guardas de tenant. Elas não podem te dizer que prisma.user.findMany({ where: { role: 'admin' } }) está faltando um filtro crítico de tenant.

mcp-tenant-isolation preenche essa lacuna com 57 regras em 7 categorias:

Categorias de Regras

Categoria Regras O Que Detecta
Consultas de Banco de Dados (DBQ) 12 Falta de organizationId em findMany, findUnique, updateMany, deleteMany, groupBy, aggregate
Esquema (SCH) 6 Colunas de tenant ausentes, índices compostos ausentes, políticas RLS ausentes
Isolamento de Armazenamento de Arquivos (FSI) 4 Chaves S3/Blob não restritas, prefixo de tenant ausente em caminhos de arquivos
Escopo de Chaves de Cache (CKS) 5 Chaves Redis/memoização sem prefixo de tenant
IDOR 8 Referências diretas inseguras a objetos — acessando recursos por ID sem verificação de propriedade
Registro (LOG) 6 Falta de contexto de tenant em logs estruturados
Específico de MCP (MCP) 15 Visibilidade da ferramenta, prefixo de cache, vinculação de sessão, isolamento de cofre de credenciais, superfície de injeção de prompt

Início Rápido

Instalação

npm install -g mcp-tenant-isolation

Escaneie sua base de código

mti scan ./src

Saída

O scanner produz um veredicto claro de aprovação/reprovação com descobertas detalhadas:

╔══════════════════════════════════════════╗
║  Scanner de Isolamento de Tenant MCP v1.6.2 ║
║  Veredicto: REPROVADO                     ║
╚══════════════════════════════════════════╝

Descobertas: 47 ativas, 12 suprimidas, 3 de baseline

DBQ-001  ALTO   app/api/users/route.ts:23
         Falta organizationId em prisma.user.findMany()
         Remediação: Adicione organizationId à cláusula where:
           where: { ..., organizationId: ctx.orgId }

IDOR-003 ALTO   app/api/documents/[id]/route.ts:45
         Sem verificação de propriedade após findUnique por ID
         Remediação: Verifique result.organizationId === ctx.orgId

Integração CI/CD

Ações do GitHub (Ação Pré-construída)

- uses: subodhkc/mcp-tenant-isolation@v1
  with:
    path: ./src
    format: sarif

npx Manual

- name: Executar escaneamento de isolamento de tenant
  run: npx mcp-tenant-isolation scan ./src --format sarif --output scan.sarif

- name: Enviar para a Análise de Código do GitHub
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: scan.sarif

A saída SARIF se integra diretamente com Segurança Avançada do GitHub — as descobertas aparecem na aba de Segurança do seu repositório ao lado dos resultados do CodeQL.

Integração do Servidor MCP

O pacote inclui um servidor MCP com 4 ferramentas que agentes de IA (Claude Desktop, Cursor, Cline) podem usar:

{
  "mcpServers": {  
    
Contexto Triplo Up

Empresas brasileiras que utilizam soluções SaaS multi-inquilino devem estar atentas ao vazamento de dados entre inquilinos, uma vulnerabilidade crítica. A implementação de ferramentas como mcp-tenant-isolation pode ajudar a garantir a segurança dos dados e a conformidade com regulamentações de privacidade.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.