Kaique Mitsuo Silva Yamamoto
IaDesenvolvimento com ia

Segurança em Código Gerado por IA — Riscos e Defesas

Riscos de segurança específicos de código gerado por IA: prompt injection, supply chain, secrets, vulnerabilities e como se proteger.

Código gerado por IA tem riscos de segurança que código escrito manualmente não tem. Não porque a IA é "pior" — mas porque ela otimiza para "parecer certo", não para "ser seguro".


Os 5 riscos específicos de IA

1. Dependências vulneráveis

A IA pode sugerir pacotes com vulnerabilidades conhecidas, especialmente se o modelo foi treinado com dados antigos.

Defesa:

# Sempre auditar dependências sugeridas pela IA
npm audit
pnpm audit

# Verificar se pacote existe e é mantido
npm info [package] maintainers
npm info [package] lastModified

2. Secrets hardcoded

A IA pode gerar código com API keys, passwords ou tokens "de exemplo" que parecem reais.

Defesa:

# Hook onCommit para detectar secrets
# .claude/settings.json
{
  "hooks": {
    "onCommit": "git diff --cached | grep -iE '(api_key|password|secret|token)\\s*[:=]\\s*[\"\\x27][A-Za-z0-9]{10,}' && exit 1 || true"
  }
}

3. Injeção de código malicioso (raro mas possível)

Se a IA treinou em repositórios com código malicioso, pode reproduzir padrões de ataque.

Defesa: sempre revisar código de funções sensíveis (auth, payment, file I/O, network).

4. Prompt injection via documentação

Se a IA lê documentação externa (specs, docs), um adversário pode injetar instruções maliciosas nos arquivos.

Defesa: não incluir conteúdo de fontes não confiáveis no context window da IA.

5. Over-reliance em autocomplete

A IA pode completar código com padrões inseguros que "parecem familiares" mas são errados.

Exemplo perigoso:

// IA completou isso — parece certo mas é SQL injection
const query = `SELECT * FROM users WHERE id = ${userId}`;

Defesa: nunca aceitar autocomplete em código de segurança sem revisão manual.


Checklist de segurança por módulo

Auth & Autenticação

  • Passwords hasheadas (bcrypt cost ≥ 10)
  • JWT com expiry curto (≤ 15min)
  • Refresh tokens com rotação
  • Rate limiting em login
  • CORS configurado corretamente

API

  • Input validation em todos os endpoints
  • Output sanitization (nunca expor internals)
  • Error messages não revelam stack trace em produção
  • Request size limits
  • Authentication middleware em rotas protegidas

Database

  • Parameterized queries (nunca string interpolation)
  • Connection pooling configurado
  • Credentials em variáveis de ambiente
  • Backup automático configurado

File I/O

  • Path traversal prevenido
  • File size limits
  • MIME type validation
  • Upload directory fora do web root

Referências

On this page