Pular para o conteudo principal

Segurança e privacidade com código gerado por IA

Usar IA para código mexe em duas frentes ao mesmo tempo: o que você manda para a ferramenta e o que você aceita de volta dela.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Quando o assunto é IA para código, muita gente olha só para produtividade.

Mas existem duas superfícies de risco diferentes aqui:

  • o que você manda para a ferramenta
  • o que você aceita de volta dela

Se você ignora a primeira, pode vazar:

  • segredo
  • dado de cliente
  • contexto proprietário
  • detalhe interno de arquitetura

Se você ignora a segunda, pode aceitar:

  • validação fraca
  • consulta insegura
  • dependência desnecessária
  • padrão vulnerável
  • confiança errada em dado externo

Ou seja:

não basta perguntar se a resposta está “boa”.

Você também precisa perguntar se o fluxo inteiro está seguro.

Modelo mental

Pense assim:

segurança com IA para código é um problema de fronteira de confiança na ida e na volta.

Na ida:

  • o que este modelo pode ver?

Na volta:

  • o que este código está pedindo para o sistema confiar?

Essa lente ajuda bastante porque impede dois erros comuns.

O primeiro:

  • achar que o problema é só privacidade de prompt

O segundo:

  • achar que o problema é só bug no código gerado

Na prática, os dois importam.

Quebrando o problema

Nem todo contexto deveria ser enviado

Esse é o primeiro filtro.

Às vezes mandar mais contexto ajudaria a resposta.

Mas isso não significa que você deve mandar.

Alguns exemplos que pedem muito cuidado:

  • segredo em arquivo de ambiente
  • token real
  • credencial temporária
  • dado pessoal de cliente
  • log com informação sensível
  • código interno protegido

Aqui a pergunta não é só:

  • “isso ajuda o modelo?”

É também:

  • “isso pode sair daqui?”

Privacidade e segurança começam antes do prompt ser enviado.

Política da ferramenta importa tanto quanto o prompt

Mesmo quando o time não cola segredo explícito, ainda vale olhar:

  • retenção de dados
  • treinamento com conteúdo enviado ou não
  • ambiente aprovado pela empresa
  • logging interno da plataforma
  • permissão de quem pode usar qual ferramenta

Sem esse cuidado, o time pode achar que está sendo prudente só porque não colou senha.

Mas ainda estar mandando informação que não deveria para um ambiente que não foi aprovado.

Código gerado pode vir com padrão inseguro plausível

Esse talvez seja o risco mais traiçoeiro na volta.

O modelo muitas vezes devolve algo que:

  • parece limpo
  • usa nomes bons
  • tem estrutura convincente

E mesmo assim:

  • concatena valor em query
  • confia em input do cliente
  • valida tipo e esquece autorização
  • usa biblioteca de forma insegura
  • expõe dado demais em log
  • sugere guardar credencial no lugar errado

Erro grotesco é fácil de achar.

Padrão inseguro plausível passa no diff sem chamar atenção.

Segurança aqui pede review específico

Nem sempre o review geral do time vai pegar essas coisas.

Se a mudança toca:

  • autenticação
  • autorização
  • secrets
  • input externo
  • query
  • arquivo
  • sessão
  • integração externa

vale revisar com perguntas de segurança explícitas.

Por exemplo:

  • este código está confiando cedo demais em dado externo?
  • este segredo está protegido?
  • este log expõe informação demais?
  • esta validação cobre só schema ou também regra de permissão?
  • esta dependência nova muda superfície de ataque?

Código gerado pode criar dependência e exposição sem você perceber

Tem outro padrão comum:

o modelo resolve o problema puxando pacote, SDK ou serviço sem que isso tenha sido realmente pedido.

Isso pode trazer:

  • dependência desnecessária
  • licença ruim para o contexto
  • superfície operacional maior
  • configuração insegura por padrão

Então parte da revisão de segurança também é:

  • esta solução introduziu coisa nova demais?
  • esse custo de dependência era realmente necessário?

Logs, feedback e observabilidade também precisam filtro

Às vezes o time tenta melhorar a feature com IA e começa a guardar:

  • prompt completo
  • contexto completo
  • resposta completa
  • erro completo

Isso pode ajudar debugging.

Mas também pode ampliar exposição de dado sensível.

Então o fluxo de observabilidade precisa responder:

  • o que é seguro armazenar?
  • o que precisa ser mascarado?
  • o que pode ser resumido?
  • quem pode acessar esse material?

Privacidade não acaba quando a requisição termina.

Segurança madura não é “proibir IA”

Também vale evitar a reação simplista.

Resposta madura não é:

  • “então ninguém usa nada”

Isso raramente funciona.

O caminho útil costuma ser:

  • escolher ferramenta aprovada
  • definir política clara de uso
  • limitar contexto sensível
  • revisar código crítico com critério maior
  • documentar o que é proibido enviar
  • manter fallback manual

Ou seja:

controle, não teatro.

Exemplo simples

Imagine um engenheiro pedindo ajuda para corrigir um endpoint de cobrança.

Versão ruim do fluxo:

  1. ele cola stack trace completo
  2. inclui payload real de cliente
  3. manda trecho com segredo mascarado pela metade
  4. aceita a solução sugerida porque “pareceu correta”

Nesse fluxo, o risco aparece dos dois lados:

  • vazamento de dado na ida
  • código inseguro na volta

Versão melhor:

  1. ele recorta o problema
  2. remove ou anonimiza dado sensível
  3. troca segredo por placeholder
  4. pede uma mudança pequena
  5. revisa segurança do diff antes de aceitar
  6. valida se não houve confiança indevida em input, log ou credencial

O ganho de produtividade continua existindo.

Mas agora a fronteira de confiança está mais protegida.

Erros comuns

  • Colar segredo real no prompt porque “é só para debugar rápido”.
  • Enviar payload de cliente sem anonimização.
  • Assumir que ferramenta popular já está automaticamente aprovada para dado sensível.
  • Fazer review funcional e ignorar review de segurança.
  • Aceitar padrão inseguro só porque o código parece elegante.
  • Deixar logging de prompt e resposta crescer sem política de retenção e mascaramento.
  • Tratar privacidade como tema jurídico distante em vez de decisão de engenharia cotidiana.

Como um senior pensa

Quem tem mais experiência não olha para IA só como fonte de produtividade.

Olha também como novo ponto de exposição.

A pergunta madura costuma ser:

“Que informação está atravessando esta fronteira, quem pode vê-la e que tipo de confiança este código está pedindo do sistema depois?”

Isso leva a um comportamento melhor:

  • recortar contexto
  • evitar envio indevido
  • revisar padrões inseguros plausíveis
  • aumentar rigor em áreas críticas
  • documentar política para o time inteiro

Essa postura não mata velocidade.

Só evita que a velocidade vire irresponsabilidade.

O que o entrevistador quer ver

Quando esse tema aparece em entrevista, o avaliador normalmente quer ver se você entende segurança e privacidade em duas direções:

  • entrada no sistema de IA
  • saída do sistema de IA

Os sinais bons costumam ser:

  • você falar de segredo, dado sensível e política de ferramenta
  • você mencionar review específico de segurança no código gerado
  • você tratar logging e retenção como parte do problema
  • você propor controle prático em vez de proibição vazia

Uma resposta forte pode soar assim:

“Eu trataria IA para código como duas fronteiras de risco. Na ida, limitaria o que pode ser enviado, com anonimização, placeholders e ferramenta aprovada. Na volta, faria revisão específica de segurança para código crítico, olhando confiança em input, segredo, autorização, logging e dependências novas. O objetivo não é proibir a ferramenta, mas impedir vazamento e padrão inseguro plausível.”

Isso mostra critério real.

Porque fala de sistema, não só de opinião.

O risco não está só no código que a IA escreve. Também está no contexto que você entrega para ela.

Segurança madura com IA não é medo genérico. É saber exatamente o que pode atravessar cada fronteira.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Como falar sobre conflitos e decisões difíceis Artigo anterior Como construir produto de IA que não quebra quando o modelo muda

Continue explorando

Artigos relacionados