Skip to main content

5 práticas recomendadas de segurança para adotar assistentes de código com IA generativa, como o GitHub Copilot

blog feature ai lilac

5 de março de 2024

0 minutos de leitura

Até pouco tempo atrás, a IA era geralmente vista como uma ideia futurista, saída de um filme de ficção científica. Filmes como Her e Ex Machina chegaram a nos alertar que a IA poderia ser uma caixa de Pandora que, uma vez aberta, teria consequências imprevisíveis. Como as coisas mudaram desde então, em grande parte graças à acessibilidade e à adoção do ChatGPT! Neste ano, uma pesquisa da Gartner com altos executivos, realizada em maio, mostrou que 89% das organizações estavam pesquisando ou implementando IA generativa. Já um relatório da Gartner publicado no mesmo período prevê que, até 2025, mais de 80% do código no desenvolvimento de produtos será gerado por IA.

Os desenvolvedores se beneficiaram muito da IA generativa, usando assistentes de programação como GitHub Copilot, Amazon CodeWhisperer e ChatGPT da OpenAI para turbinar a produtividade. No entanto, por mais poderosas e transformadoras que essas ferramentas de IA sejam, elas ainda podem cometer erros e alucinar; por isso, devem ser usadas apenas para ampliar as capacidades dos desenvolvedores, não substituí-los. Portanto, é preciso validar cuidadosamente o código gerado por IA, usar ferramentas e proteções de segurança e adotar outras medidas que garantam o uso seguro dessas ferramentas de programação, para que você possa inovar sem receio. A seguir, veja como adotar com segurança ferramentas de autocompletar código com IA, como o Copilot, aplicando estas 5 práticas recomendadas.

Prática 1: mantenha sempre uma pessoa no processo

Não contar com a revisão e a validação humana (ou fazê-las de forma insuficiente) é um erro clássico na adoção de ferramentas de programação com IA generativa. Como mencionamos, essas ferramentas servem apenas para ajudar os desenvolvedores e não são infalíveis. Por isso, eles devem manter os mesmos hábitos de segurança de antes da implementação dessas ferramentas e continuar revisando cuidadosamente o código, seja ele gerado por IA ou não.

Pense na IA como uma pessoa desenvolvedora inexperiente que, por acaso, consegue ler milhares de discussões do Stack Overflow de uma só vez. Você nunca colocaria em produção o código de uma pessoa desenvolvedora recém-contratada sem revisá-lo. Portanto, não deixe que a velocidade da IA faça você acreditar que ela é mais inteligente do que realmente é.

As equipes devem ser orientadas sobre os riscos do código gerado por IA e seus benefícios. Além disso, as revisões de código devem fazer parte das práticas internas de desenvolvimento de software. Valide, teste e corrija o código no IDE. Essas práticas devem ser incorporadas às políticas e aos procedimentos da empresa, e treinamentos regulares devem garantir que as equipes entendam sua importância e realizem as revisões de código necessárias corretamente.

Prática 2: analise o código gerado por IA no IDE com uma ferramenta de segurança independente e imparcial

Esses dois pontos andam juntos. Primeiro, para aproveitar ao máximo o aumento de produtividade proporcionado pela IA, você não pode desacelerar os desenvolvedores com uma revisão de segurança tradicional. Os desenvolvedores já são muito mais numerosos que os profissionais de segurança, o que levou as equipes a adotar práticas de segurança de shift left. Agora que a IA está aumentando a produtividade dos desenvolvedores, também cresceu o volume de código vulnerável produzido. Por isso, antecipar a segurança não é uma opção — é uma necessidade. A maneira mais fácil de fazer isso é integrar a análise de segurança diretamente ao IDE, para que o código seja analisado assim que é escrito e as vulnerabilidades sejam detectadas de forma proativa, em vez de serem caçadas depois que já se espalharam pelo pipeline de desenvolvimento.

Em segundo lugar, a análise deve ser feita por uma ferramenta de segurança diferente daquela que escreve o código. O motivo é o mesmo pelo qual existem equipes distintas de desenvolvimento e de segurança. Se a mesma equipe que escreve o código também for responsável por protegê-lo, muitas vulnerabilidades passarão despercebidas. Segurança é uma área complexa e diferente do desenvolvimento.

A IA por trás da ferramenta que escreve código foi treinada com código funcional para escrever código funcional. Já uma ferramenta desenvolvida especificamente para segurança — cuja única função é proteger o código — é treinada apenas com dados voltados à segurança, para detectar e corrigir problemas de segurança com confiabilidade. Além disso, as ferramentas de segurança precisam compreender todo o contexto da aplicação, não apenas o trecho de código analisado, para que as correções não criem bugs em outras partes. É por isso que o Snyk Code usa IA simbólica baseada em regras para analisar as possíveis correções sugeridas pelo nosso LLM e só apresenta opções que não causarão outros problemas.

Com a IA, você precisará de duas ferramentas diferentes — uma para escrever e outra para proteger — assim como existem duas equipes diferentes: desenvolvimento e segurança. E ambas as ferramentas devem compreender todo o contexto da sua aplicação, para que você não acabe com trechos de código que só fazem sentido isoladamente.

Prática 3: valide o código de terceiros

Em média, 70% do código de uma aplicação é de código aberto. Isso significa que 70% da sua aplicação foi escrito e protegido por alguém que não trabalha na sua empresa e não pode ser responsabilizado caso uma vulnerabilidade se torne um ponto de entrada para agentes maliciosos que buscam dados de clientes.

Ao usar dependências de terceiros, os desenvolvedores devem sempre analisá-las com uma ferramenta de análise de composição de software (SCA) para verificar se são seguras. As ferramentas de SCA encontram pacotes vulneráveis, informam os detalhes da vulnerabilidade — como tipo e gravidade — e sugerem formas de corrigi-la.

O código escrito por IA também inclui dependências de terceiros. Lembra? A IA é apenas mais uma desenvolvedora — que, por acaso, escreve código incrivelmente rápido. Todas as dependências desse código também precisam ser analisadas. Isso é ainda mais importante porque uma ferramenta de IA baseada em LLM estará sempre um pouco atrasada em relação às descobertas e às versões mais recentes de pacotes de terceiros. IA precisa de SCA. Por isso, recomendamos que você sempre verifique manualmente as bibliotecas de código aberto recomendadas pela IA e use ferramentas como o Snyk Open Source para testá-las.

Prática 4: automatize os testes em todas as equipes e projetos

Se algo não for automatizado, há uma boa chance de não acontecer. A automação é uma prática tão fundamental que aparece em quase todo lugar: de administradores Unix que criam tarefas cron a equipes de QA que implementam testes automatizados e equipes de DevOps que desenvolvem infraestruturas enormes, sustentadas por scripts Python. A automação não facilita apenas o trabalho: ela torna impossível esquecer de fazer algo.

Implemente ferramentas de segurança que protejam suas aplicações automaticamente no CI/CD, além de integrá-las aos fluxos de trabalho que as equipes já usam.

Prática 5: proteja sua propriedade intelectual

Ao definir políticas para o uso de ferramentas de IA, é extremamente importante impedir que elas aprendam com seu código proprietário. Em 2023, vimos a Samsung proibir o uso do ChatGPT depois que dados proprietários foram expostos durante o treinamento baseado no uso. A última coisa que você quer é ver sua vantagem competitiva aparecer como sugestão de código para desenvolvedores de outra empresa do seu setor.

Esta prática é um pouco mais difícil de impor por meio da tecnologia. Por isso, é essencial documentar bem as políticas de uso de IA e treinar as equipes, deixando claras as formas de uso permitidas, as práticas obrigatórias e as possíveis consequências. Além disso, parta do princípio de que qualquer dado inserido em um LLM será usado no treinamento. Forneça ao LLM apenas as informações mínimas — sem dados confidenciais — necessárias para realizar a tarefa e considere implementar verificações de entrada e saída para higienizar os dados enviados pelos usuários e as respostas dos seus LLMs.

Use assistentes de programação com IA com segurança

Não há dúvida: os assistentes de programação com IA vieram para ficar. Suas equipes vão trabalhar mais rápido do que nunca e gerar mais código do que nunca. Cabe a você garantir a segurança das aplicações que elas entregam. Você precisará das políticas certas, do treinamento adequado e, acima de tudo, das ferramentas de segurança certas para manter as equipes avançando com agilidade. É aí que a Snyk pode ajudar.

Com inteligência de ponta e IA híbrida com especialistas no processo, a plataforma de segurança para desenvolvedores da Snyk analisa o código enquanto ele é escrito, por pessoas ou por IA, e oferece recomendações de correção em um clique, diretamente no IDE. Assim, os desenvolvedores não precisam desacelerar e as equipes de segurança não ficam sobrecarregadas.

Confie no código gerado por IA com a Snyk. Agende uma demonstração com um especialista hoje mesmo e veja como a Snyk pode ser o copiloto de segurança de que o Copilot precisa.

Comece a proteger o código gerado por IA

Crie sua conta gratuita da Snyk e comece a proteger o código gerado por IA em minutos. Ou agende uma demonstração com um especialista para ver como a Snyk pode atender às necessidades de segurança dos seus desenvolvedores.

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Por que agentes de programação com IA continuam criando falhas de controle de acesso

Agentes de programação com IA podem gerar uma lógica de autorização que compila e passa pela revisão, mas permite que um tenant acesse os dados de outro. Saiba por que é difícil detectar falhas de controle de acesso e como evitá-las.