Como a SAS protege o código gerado por IA
Gerald Crescione
15 de abril de 2024
0 minutos de leituraAssistentes de programação com IA generativa estão transformando a forma como vemos o mundo da tecnologia. Essa inovação revolucionou o trabalho dos desenvolvedores, elevando a eficiência e a velocidade a novos patamares. Com esse aumento de velocidade, a IA também traz novos desafios para as equipes de segurança. Esses modelos de assistente de programação são treinados com códigos de alta e baixa qualidade encontrados na internet. Embora funcional, o código que eles geram traz problemas externos de qualidade e segurança para nossos projetos. A IA também introduz novos vetores de ataque que podem causar danos significativos às organizações. Por isso, as equipes de segurança precisam estar à altura do desafio e garantir o uso seguro e responsável dessa ferramenta poderosa.
Diante dessa nova realidade, as equipes se perguntam onde usar IA no desenvolvimento de software, quais precauções tomar para minimizar resultados inconsistentes dessas ferramentas e como continuar inovando com IA sem deixar de se proteger contra os riscos emergentes.
Recentemente, a Snyk promoveu um webinar ao vivo sobre todos esses temas, moderado por Clinton Herget e com a participação de Brett Smith e Chris Knackstedt. Os palestrantes abordaram os riscos que a IA para código representa para as organizações em 2024 e as medidas que estão adotando para proteger suas aplicações contra essas novas ameaças.
Os riscos do código gerado por IA
Smith e Knackstedt concordam que a IA generativa revolucionou o desenvolvimento de software, atuando como parceira de programação para desenvolvedores no mundo todo. A capacidade de oferecer um ponto de partida para escrever código do zero agiliza significativamente o processo de desenvolvimento. Eles esperam que, em um futuro próximo, aproveitar o poder da IA generativa permita que os desenvolvedores acelerem seu fluxo de trabalho e aumentem a eficiência geral.
Knackstedt também está animado para ver os impactos positivos das ferramentas de IA, pois elas oferecem soluções ajustadas a problemas específicos. Ele afirmou: “Fiquei extremamente impressionado com os avanços da IA generativa em apenas um ano — especialmente com os novos casos de uso que as pessoas estão imaginando para algumas dessas ferramentas.”
Quando usada adequadamente, a IA pode aumentar a velocidade, mas, se for mal utilizada, pode causar problemas graves de segurança. As ferramentas de IA estão tornando muito mais difícil para as equipes de segurança acompanhar os avanços tecnológicos. Muitas ainda estão tentando assimilar a última onda de transformação digital e se atualizar em DevOps, nuvem, CI/CD e muitas outras tecnologias e processos. Essas transformações digitais em andamento estão sendo aceleradas pelo fenômeno da IA generativa, o que torna ainda mais essencial que as equipes de segurança se adaptem.
Além de acelerar a transformação digital que já está em curso, o código gerado por IA pode representar ameaças à segurança das organizações. Há dois motivos principais para isso.
O código gerado por IA não é seguro nem de alta qualidade por natureza
As ferramentas de IA generativa usam dados de treinamento de alta e baixa qualidade encontrados na internet — desde código bem escrito por desenvolvedores experientes até código sujeito a erros, escrito por iniciantes, e até mesmo exemplos intencionais de código não funcional publicados em fóruns como o Stack Overflow. Como a IA generativa ingere uma variedade tão grande de códigos, a qualidade dos resultados é semelhante à que se espera de um desenvolvedor júnior.
Os palestrantes também discutiram a importância de entender que as ferramentas atuais de IA generativa não detectam vulnerabilidades por padrão. Herget mencionou uma pesquisa da Snyk que comprova isso. Nossa equipe criou uma classe Java com vários métodos e deu a um deles o nome “SQL injection”. Em seguida, perguntamos a vários assistentes de programação com IA se havia uma vulnerabilidade de SQL injection no código, e todos responderam “Sim”. Depois, apenas mudamos o nome da classe, sem alterar nada na funcionalidade do código, e os mesmos assistentes responderam “Não”. Esse experimento comprovou que a IA ainda não entende a importância simbólica de termos específicos no código.
Ameaças externas podem explorar modelos de IA
Além de agravar problemas já existentes, a IA também traz o risco de novos vetores de ataque. Agentes mal-intencionados podem explorar a IA generativa por meio de injeção de código, envenenamento de dados, injeção de prompts e sequestro. Esses ataques podem fazer o modelo executar ações maliciosas (como escrever código inseguro de propósito) ou permitir que os invasores roubem dados confidenciais de treinamento.
As alucinações, em que as ferramentas de IA geram referências, bibliotecas de código ou funções que não existem no código, são outro problema de segurança. Agentes mal-intencionados podem se aproveitar das alucinações da IA usando técnicas como o library squatting. Por exemplo, se a IA alucinar uma biblioteca de código inexistente, um invasor pode se aproveitar disso criando uma versão real da biblioteca com código malicioso. Então, o código gerado por IA que fizer referência a essa biblioteca poderá inserir esse código malicioso na aplicação.
Como usar com segurança o código gerado por IA
Embora represente riscos à segurança, a IA generativa ainda é essencial para muitos desenvolvedores e não vai desaparecer tão cedo. Ela oferece um apoio valioso para ajudar as equipes de desenvolvimento a superar o bloqueio criativo e funciona como uma assistente júnior de programação. Com isso, os desenvolvedores conseguem programar mais rápido do que nunca.
Mas essa velocidade sem precedentes afeta diretamente as equipes de segurança atuais. Isso significa que elas têm mais código para proteger em menos tempo. Por isso, as equipes de segurança precisam adotar estratégias que permitam proteger melhor o código gerado por IA sem frear a inovação tecnológica. Confira algumas dicas para acompanhar os ciclos de desenvolvimento acelerados e apoiados por IA de hoje:
Priorize a capacitação dos desenvolvedores
Para começar, as equipes de desenvolvimento precisam entender o que cada ferramenta de IA pode ou não fazer. Smith afirmou: “Essa não é uma solução mágica para todos os seus problemas. Não é um programa para desenvolvedores sêniores. É um programa para assistentes júnior, que pode gerar 170 linhas... seus desenvolvedores precisam entender que não estão escrevendo código melhor ou mais seguro do que antes. Agora, eles só têm um preenchimento automático muito inteligente.”
Além disso, as organizações precisam ensinar os desenvolvedores a proteger a propriedade intelectual e a privacidade ao inserir prompts relacionados a código em uma ferramenta de IA. É fundamental que as equipes de desenvolvimento entendam que a IA generativa usa os prompts como dados de treinamento e pode colocar ativos confidenciais em risco ao usar esses dados para responder a prompts de outras pessoas.
A análise comportamental é fundamental para medir o sucesso dessas iniciativas de capacitação. Knackstedt afirmou: “Vamos precisar adotar processos e princípios que usem mais análise comportamental — não só do código em si, mas também das pessoas que o desenvolvem e das pessoas que usam as soluções nas quais esse código se baseia... [assim], podemos ter uma visão mais abrangente do uso da IA, tanto como foi projetada para ser usada quanto na prática.”
Reforce as medidas de segurança já testadas
Incorporar testes de segurança ao ciclo de vida do desenvolvimento já é importante há algum tempo do ponto de vista de DevSecOps. Mas, como a velocidade de injeção de código aumentou significativamente por causa da IA, é mais importante do que nunca que as organizações considerem incorporar testes de segurança aos pipelines de código.
Smith contou como sua equipe usa a análise estática de código para acompanhar a velocidade sem precedentes dos problemas de código trazidos pelo desenvolvimento com IA. Ele afirmou: “Com o avanço da IA generativa, cada vez mais código vulnerável tenta entrar no nosso pipeline a uma velocidade que nunca tínhamos visto. Sempre que você envia código, ele passa por uma análise do Snyk, e não é possível fazer o merge até que seja aprovado. Incluir o Snyk Code (SAST) em nossos pontos de verificação automatizados é como combatemos os aspectos nocivos da IA generativa. Se não dá para saber com certeza o que foi gerado por máquina e o que foi escrito por uma pessoa, teste tudo. Teste com mais frequência e use um conjunto de ferramentas feito para acompanhar o ritmo do DevSecOps moderno, sem atrasar ninguém.”
Implemente testes em várias frentes
As equipes também devem considerar maneiras de validar o código gerado por IA com a combinação certa de ferramentas automatizadas e revisão manual. Segundo Knackstedt: “O uso da programação generativa deve ter algumas salvaguardas e ser feito com cuidado. No fundamental, eu diria que é preciso garantir que uma pessoa participe do processo, sem aceitar cegamente o que essas soluções de IA generativa produzem, e revisar o código com atenção.”
Smith explicou como a SAS faz essas revisões detalhadas com verificações automatizadas de código usando o Snyk SAST e dois pontos de revisão com participação humana. Ele afirmou: “Definimos regras no GitHub que exigem que duas pessoas revisem o código antes do merge — uma delas precisa ser a responsável pelo código. Do meu ponto de vista, uma pessoa precisa revisar o código antes que ele entre, e ele também precisa passar pelas verificações automatizadas.”
Mantenha a consistência
Na visão de Smith, proteger processos de IA exige segurança consistente em todas as etapas do desenvolvimento, de infraestrutura como código ao código-fonte e à documentação. Ele afirmou: “Tentamos tratar tudo da mesma forma... Se dermos o mesmo nível de importância a tudo, também aplicaremos o mesmo nível de rigor às práticas de segurança.”
Knackstedt também ressaltou a importância da consistência e explicou que é fundamental “garantir algum nível de padronização nas ferramentas usadas para criar seu código e proteger essas ferramentas dentro da organização. É preciso entender quais dados são usados para ajustar os modelos ou complementá-los com contexto adicional na organização.”
O futuro do código gerado por IA
À medida que as equipes de desenvolvimento avançam no uso da IA generativa, é provável que surjam algumas tendências de segurança. Para começar, provavelmente veremos um aumento no número de componentes de IA usados nas ferramentas de segurança para responder a problemas ao longo do SDLC. Knackstedt explicou essa tendência como “combater fogo com fogo e encontrar oportunidades de incorporar IA e IA generativa a algumas dessas medidas de proteção. Assim, você consegue entender tudo com a mesma rapidez e usando o mesmo tipo de lógica.”
Além disso, não é só a sua equipe de desenvolvimento que usa IA generativa para escrever código. É bem provável que seus fornecedores terceirizados também estejam experimentando essa tecnologia. Smith explicou: “À medida que adotamos fornecedores online, começamos a usar mais software como serviço no nosso SDLC... Como sei se eles usam IA com responsabilidade?” As práticas recomendadas de segurança da cadeia de suprimentos de software são mais importantes do que nunca diante das possíveis vulnerabilidades de IA associadas ao uso de fornecedores de SaaS.
Por fim, o sucesso em proteger o código gerado por IA dependerá de um modelo de responsabilidade compartilhada, como acontece com a segurança na nuvem entre usuário e provedor. Knackstedt afirmou: “Com o uso amplo da inteligência artificial em toda a organização, é preciso integrar melhor algumas dessas práticas de gerenciamento de riscos para garantir uma abordagem abrangente e responsável para implementar, gerenciar, monitorar e manter a visibilidade sobre a inteligência artificial.”
Esta conversa com Clinton Herget, Brett Smith e Chris Knackstedt é apenas uma introdução ao impacto da IA generativa no desenvolvimento de código atual e a como usar essa tecnologia emergente com segurança. Para saber mais sobre como proteger o código gerado por IA, confira nosso relatório de 2023 sobre IA, segurança e confiança no desenvolvimento moderno.
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.
