Blog

Como proteger código gerado por IA: um guia prático

Guia prático para proteger código gerado por IA: escaneamento em camadas, gates de PR, SAST/SCA, detecção de segredos e governança no SDLC de IA.

Bruno Baldo·31 de ago. de 2026·11 min de leitura·Revisado por Rainforest Technologies

Os assistentes de codificação por IA agora fazem parte de como o software é construído. GitHub Copilot, Cursor e seus pares escrevem boilerplate, criam a estrutura de serviços e autocompletam funções inteiras, e os desenvolvedores estão colocando esse código em produção mais rápido do que qualquer equipe de segurança consegue inspecionar manualmente. Os ganhos de produtividade são reais. Os riscos também: os modelos de IA geram código de aparência plausível que pode carregar falhas de injeção, criptografia fraca, segredos codificados diretamente no código e dependências que não existem ou nas quais não se deveria confiar.

O instinto de alguns líderes de segurança é frear isso ou proibi-lo por completo. Isso não funciona. Proibições generalizadas empurram o uso da IA para a clandestinidade, onde você perde toda a visibilidade e controle. A resposta prática para como proteger código gerado por IA não é a proibição — é a governança. Você assume que a IA está gerando código em toda a sua organização neste momento e constrói uma pilha de controles em camadas que inspeciona, aplica gates e audita esse código automaticamente, na velocidade em que os desenvolvedores realmente trabalham.

Este guia apresenta essa pilha. Cada camada é um controle concreto com um "como" concreto e, juntas, formam uma abordagem de defesa em profundidade para proteger código gerado por IA sem matar a velocidade dos desenvolvedores. Nenhum desses controles é suficiente sozinho. Em camadas, eles transformam a IA de um risco não governado em uma parte gerenciada e produtiva do seu SDLC.

1. Escaneie no momento da geração

O lugar mais barato para corrigir código inseguro é o instante em que ele aparece, antes que o desenvolvedor siga em frente e antes que ele se espalhe pela base de código. Isso significa levar o feedback de segurança diretamente para a IDE e para o hook de pré-commit.

Como: Execute análise estática leve e detecção de segredos enquanto o desenvolvedor digita e novamente quando ele tenta fazer o commit. Quando um assistente de IA autocompleta uma consulta SQL construída por concatenação de strings, o desenvolvedor deve ver o risco de injeção sinalizado inline — com uma sugestão de correção — enquanto o contexto ainda está fresco na sua cabeça. Os hooks de pré-commit atuam como a segunda rede, bloqueando padrões obviamente perigosos e credenciais expostas de jamais entrarem em um commit.

Esta camada não é sobre profundidade; é sobre velocidade e ensino. Feedback rápido e em contexto treina os desenvolvedores a reconhecer os modos de falha que a IA tende a produzir, de modo que, com o tempo, eles escrevem prompts melhores e aceitam menos sugestões ruins. Mantenha o conjunto de regras enxuto aqui para evitar ruído — um scanner que dispara em cada linha rapidamente é silenciado, e um scanner silenciado não protege nada. Reserve a análise pesada e mais lenta para o CI, onde alguns segundos a mais não interrompem o fluxo de ninguém.

2. Trate a IA como um colaborador não confiável

Aqui está a mudança de mentalidade que faz todo o resto se encaixar: um assistente de IA é um colaborador cujo trabalho você não avaliou. Você não faria o merge de um pull request de um colaborador externo anônimo sem que um humano o lesse. As mudanças escritas por IA merecem o mesmo ceticismo.

Como: Exija revisão humana obrigatória para mudanças geradas por IA e imponha isso com gates de pull request. Configure a proteção de branch para que nada entre em merge em um branch protegido sem a aprovação de pelo menos um revisor qualificado e uma verificação de segurança bem-sucedida. Onde você conseguir identificar commits escritos por IA (mais sobre proveniência abaixo), encaminhe-os para revisores que entendam as formas específicas pelas quais o código de IA falha — erros de lógica sutis, tratamento ausente de casos extremos e suposições de segurança confiantemente erradas.

O objetivo não é desconfiar dos seus desenvolvedores; é manter um humano responsável por cada linha que vai para produção. A IA pode rascunhar, mas uma pessoa é dona do merge. Essa única política — nenhum código de IA não revisado chega a um branch protegido — é a espinha dorsal na qual o resto da pilha se apoia, porque ela garante que cada achado automatizado chegue à frente de alguém com poder para agir sobre ele.

3. Execute SAST e SCA profundos no CI

O feedback na IDE é raso por design. O pipeline do pull request é onde você executa a análise que realmente tem dentes, no contexto completo da mudança, antes que qualquer coisa entre em merge.

Como: Conecte o teste estático de segurança de aplicações (SAST) a cada pull request para detectar padrões inseguros — injeção, desserialização insegura, controle de acesso quebrado, aleatoriedade fraca — que a IA reproduz a partir dos seus dados de treinamento. Combine-o com a análise de composição de software (SCA) para inspecionar as dependências, porque a IA tem um hábito específico e perigoso aqui: ela alucina pacotes. Os modelos importam com confiança bibliotecas que não existem, ou sugerem pacotes reais que estão desatualizados, abandonados ou conhecidamente vulneráveis. Os atacantes começaram a registrar esses nomes de pacotes alucinados com malware, uma técnica conhecida como slopsquatting.

O SCA deve verificar se cada dependência que uma IA adiciona realmente existe, vem de uma fonte confiável e não carrega vulnerabilidades críticas conhecidas. Faça o build falhar quando não for o caso. Este é um dos controles de maior valor de toda a pilha, porque uma única dependência maliciosa pode comprometer tudo a jusante.

4. Escaneie agressivamente em busca de segredos

Os assistentes de IA codificam credenciais diretamente no código com uma alegria alarmante. Peça um exemplo funcional que se conecte a um banco de dados ou chame uma API, e o modelo alegremente inserirá uma chave, senha ou token de aparência plausível diretamente no código-fonte — às vezes um placeholder com cara de real, às vezes um padrão que um desenvolvedor depois preenche com um valor real e esquece de remover.

Como: Execute escaneamento dedicado de segredos em múltiplos pontos: na IDE, no pré-commit e novamente no CI como reforço. Detecte strings de alta entropia e formatos de credenciais conhecidos e bloqueie commits que os contenham. Como a IA torna mais comuns os segredos codificados diretamente no código, esta camada justifica seu valor rapidamente. Combine a detecção com um caminho de remediação claro — rotacione a credencial exposta, não apenas apague a linha — e certifique-se de que seu escaneamento cubra todo o histórico de commits, não apenas o diff atual.

5. Adicione prompting seguro e guardrails — mas nunca confie no prompt como o controle

Você pode melhorar significativamente o que a IA gera moldando como ela é solicitada. Instruções seguras por padrão, arquivos de regras em nível de projeto e templates de prompt compartilhados empurram os assistentes na direção de consultas parametrizadas, validação de entrada adequada e padrões seguros.

Como: Mantenha uma orientação em toda a organização que suas ferramentas de IA ingerem — arquivos de regras, system prompts e templates de prompt que codificam seus padrões de segurança. Diga ao assistente para preferir suas bibliotecas de criptografia aprovadas, para validar e sanitizar entradas e para evitar padrões que você baniu. Isso eleva o piso da qualidade do código gerado.

Mas mantenha esse controle em seu devido lugar. Um prompt é orientação, não imposição. Os modelos se desviam, ignoram instruções e produzem código inseguro mesmo quando solicitados educadamente. O prompting seguro reduz o volume de saída ruim; ele nunca garante uma saída boa. Trate-o como um empurrão útil no início do fluxo e mantenha todos os gates a jusante — escaneamento, revisão, SAST, SCA — totalmente ativos. O prompt nunca é o controle.

6. Restrinja a IA em áreas sensíveis

Nem todo código é igual. Um bug em uma página de marketing é um inconveniente; um bug no seu fluxo de autenticação, na sua implementação criptográfica ou no tratamento de pagamentos é uma violação. Não se deve confiar que a IA escreva essas áreas sem supervisão.

Como: Defina suas zonas sensíveis explicitamente — autenticação e autorização, gerenciamento de sessões, criptografia, processamento de pagamentos e qualquer código que lide com dados regulamentados. Estabeleça uma política de que mudanças nessas áreas são de responsabilidade humana: um desenvolvedor projeta e escreve a lógica crítica de segurança, e a IA se limita a um papel de apoio, no máximo. Imponha isso com gates de PR mais rígidos nesses caminhos de código — exija revisão da equipe sênior ou de segurança, torne obrigatórios testes adicionais e sinalize qualquer mudança escrita por IA que toque nesses diretórios para escrutínio elevado.

É aqui que o enquadramento de "colaborador não confiável" se torna inegociável. Você nunca deixaria um colaborador não avaliado reescrever sua camada de autenticação por conta própria. Mantenha a IA na mesma linha.

7. Estabeleça proveniência e uma trilha de auditoria

Quando algo der errado — e eventualmente dará — você precisa responder a uma pergunta simples: de onde veio este código? A proveniência para commits gerados por IA transforma isso de uma investigação em uma consulta.

Como: Capture e preserve metadados sobre o envolvimento da IA nos seus commits. Isso pode significar trailers ou tags de commit indicando autoria de IA, registros de qual assistente e modelo produziu uma mudança e vínculos entre o código gerado e o contexto que o produziu. Alimente isso no seu relatório de governança para que você possa ver, em nível de portfólio, quanto da sua base de código é influenciada por IA e onde.

Uma trilha de auditoria cumpre um papel duplo. Ela apoia a resposta a incidentes e a conformidade, e fornece à sua camada de métricas os dados necessários para dizer se o código escrito por IA carrega uma taxa de defeitos mais alta do que o código escrito por humanos — que é exatamente o sinal de que você precisa para ajustar seus controles.

8. Meça os defeitos que escapam e feche o ciclo

Governança não é uma implementação única. É um ciclo de controle que você ajusta com dados. A métrica central é o defeito que escapa: um problema de segurança que passou pelos seus gates e chegou a um branch em merge ou à produção.

Como: Acompanhe quantos achados de segurança escapam para estágios posteriores e atribua-os, onde possível, a mudanças escritas por IA versus escritas por humanos. Quando uma classe de problema continua passando, isso é um sinal para reforçar um gate específico — adicionar uma regra de SAST, apertar uma política de PR, expandir os padrões de segredos ou restringir a IA em uma área recém-arriscada. Fique de olho também na sua taxa de falsos positivos, porque gates ruidosos são ignorados, e um gate ignorado não é gate nenhum. Alimente os dados da trilha de auditoria da camada anterior nesta análise para que seu ajuste seja fundamentado no que realmente está acontecendo, e não em suposições.

Com o tempo, é esse ciclo que separa um programa de segurança que acompanha o ritmo da adoção de IA de um que é perpetuamente surpreendido por ela.

Uma implementação em três fases

Você não precisa de todas as oito camadas ativas no primeiro dia. Sequencie-as por alavancagem.

Fase 1 — Estabeleça os gates (semanas, não meses). Ative os gates de PR com revisão humana obrigatória, SAST e SCA profundos no CI e escaneamento de segredos. Este é o seu piso inegociável: nada entra em merge sem um humano e uma verificação de segurança bem-sucedida, as dependências são verificadas e as credenciais não podem vazar. A maioria das organizações já tem os hooks de CI para tornar isso rápido.

Fase 2 — Antecipe (shift left) e molde a entrada. Leve o escaneamento e a detecção de segredos para a IDE e o pré-commit para que os desenvolvedores recebam feedback no momento da geração. Implante prompting seguro, arquivos de regras e templates compartilhados para elevar a qualidade do que a IA produz antes mesmo de ser comitado.

Fase 3 — Governe e otimize. Adicione proveniência e trilhas de auditoria, defina e imponha restrições em áreas sensíveis e monte seu ciclo de métricas. Agora você não está apenas detectando código ruim — você está medindo, atribuindo e ajustando continuamente seus controles à medida que a adoção de IA cresce.

Essa sequência o protege rapidamente e, depois, o torna mais inteligente. Cada fase potencializa a anterior.

Juntando tudo

O fio condutor de cada camada aqui é o mesmo: você não consegue inspecionar manualmente o volume de código que a IA agora gera, então você automatiza a inspeção, aplica gates aos merges e governa todo o fluxo. A Rainforest foi construída para ser essa camada de segurança em todo o seu SDLC de IA — SAST, SCA, DAST, escaneamento de segredos, gates de PR e imposição de políticas que encontram o código gerado por IA em cada ponto, da IDE ao pipeline, com a proveniência e as métricas para manter o ciclo fechado. Se você está tentando ir rápido com IA sem colocar código inseguro em produção, esse é exatamente o problema que ela foi projetada para resolver. Veja como a Rainforest protege seu SDLC de IA de ponta a ponta.

Perguntas frequentes

Como proteger código gerado por IA?

Você protege o código gerado por IA governando-o com controles em camadas e automatizados, em vez de proibi-lo. Escaneie no momento da geração, na IDE e no pré-commit, exija revisão humana e gates de PR para mudanças escritas por IA, execute SAST e SCA profundos no CI, escaneie segredos codificados diretamente no código, restrinja a IA em áreas sensíveis como autenticação e criptografia, e acompanhe os defeitos que escapam para ajustar continuamente seus gates. Nenhum controle isolado é suficiente; é a pilha em camadas que torna a saída da IA segura para produção.

O SAST consegue escanear código gerado por IA?

Sim. Código gerado por IA é apenas código-fonte, e o SAST o analisa exatamente como analisaria código escrito por humanos — sinalizando falhas de injeção, desserialização insegura, aleatoriedade fraca, controle de acesso quebrado e outros padrões inseguros. Como a IA reproduz padrões vulneráveis dos seus dados de treinamento, o SAST é um dos gates mais valiosos do seu pipeline. Execute-o em cada pull request e bloqueie merges com achados críticos.

Código gerado por IA deve ser revisado por um humano?

Com certeza. Trate a IA como um colaborador não confiável: nenhuma mudança escrita por IA deve entrar em merge sem que um humano qualificado a revise e aprove. A IA produz código confiante e de aparência plausível que pode conter erros de lógica sutis e suposições de segurança incorretas que um gate automatizado não detecta. A revisão humana é especialmente crítica em áreas sensíveis como autenticação, criptografia e pagamentos, que devem permanecer sob responsabilidade humana.

Como impedir que a IA adicione dependências vulneráveis?

Use análise de composição de software (SCA) no CI para inspecionar cada dependência que a IA adiciona. Os modelos de IA alucinam pacotes que não existem e sugerem pacotes desatualizados ou vulneráveis, e os atacantes registram esses nomes alucinados com malware — uma técnica chamada slopsquatting. Configure o SCA para verificar se cada dependência existe, vem de uma fonte confiável e não carrega vulnerabilidades críticas conhecidas, e faça o build falhar quando não for o caso.

Proteger código gerado por IA deixa os desenvolvedores mais lentos?

Não, quando os controles são bem posicionados. Feedback rápido e em contexto na IDE e no pré-commit na verdade ajuda os desenvolvedores a corrigir problemas antes que se espalhem, e os gates de PR automatizados rodam em segundo plano sem gargalos manuais. O objetivo é governar na velocidade em que os desenvolvedores trabalham — análise pesada no CI, verificações leves no teclado — para que a segurança acompanhe a velocidade impulsionada pela IA em vez de brigar com ela.

Bruno Baldo

Escrito por

Bruno Baldo

CMO

Um pouco de marketing e um pouco de curiosidade e temos a receita pra criar um apaixonado por cyber!

Continue lendo