Falando de mais de 20 anos de experiência em desenvolvimento e segurança cibernética, os desenvolvedores precisam usar todas as ferramentas de ponta, que economizam tempo e aumentam a produtividade. É um trabalho meticuloso e demorado para garantir que você se comprometa com código funcional de alta qualidade, e o ciclo de vida do desenvolvimento de software sempre exige mais.
Como tal, hoje em dia, quase todos os desenvolvedores usam alguma forma deCódigo gerado por IA— e eles deveriam absolutamente. Ferramentas de IA facilitam a vida dos desenvolvedores ao alavancar o conhecimento cultivado pela comunidade de desenvolvimento ao longo do tempo e em todo o mundo para superar obstáculos que, embora potencialmente novos e desafiadores para eles, já foram abordados há muito tempo. Eles podem confiar razoavelmente que esse código executará a função que desejam alcançar — e podem testá-lo para ter certeza.
Mas eles podem confiar que esse código é seguro ? Absolutamente não. Com todo esse tempo e trabalho gastos comprometendo código funcional, tanto quanto, se não mais, é gasto navegando no backlog de segurança depois.
O que há de errado com o código gerado por IA?
Plataformas GenAI, como a Copilot, aprendem com códigos postados em sites como o GitHub e têm o potencial de adquirir alguns hábitos ruins ao longo do caminho. Elas buscam e retornam códigos que, antes de tudo, realmente funcionam, mas a segurança é um objetivo secundário (se é que existe). Como você verá mais adiante neste artigo, isso leva a um potencial substancial para vulnerabilidades.
Um par de estudos explorou recentemente o efeito da IA na segurança do código. O primeiro foi um estudo da Universidade de Stanford, " Os usuários escrevem mais código inseguro com assistentes de IA? " e o outro foi um estudo da Universidade de Wuhan, " Explorando as fraquezas de segurança do código gerado pelo copiloto no Github ."
O estudo de Stanford descobriu o seguinte:
- Os participantes que tiveram acesso a um assistente de IA escreveram códigos significativamente menos seguros do que aqueles sem acesso a um assistente.
- Os participantes com acesso a um assistente de IA também eram mais propensos a acreditar que escreveram códigos seguros, sugerindo que tais ferramentas podem levar os usuários a ficarem excessivamente confiantes sobre falhas de segurança em seus códigos.
- Os participantes que investiram mais na criação de suas consultas para o assistente de IA, como fornecer funções auxiliares ou ajustar os parâmetros, tiveram maior probabilidade de oferecer soluções seguras.
O estudo de Wuhan descobriu que quase 30% dos trechos de código gerados pelo Copilot têm falhas de segurança. Focando especificamente em Python, 91 de 277 trechos, ou 33%, continham falhas de segurança; desses 91 trechos, havia 277 instâncias de falhas de segurança. Em outras palavras, o código inseguro era MUITO inseguro.
Como posso proteger meu código?
Neste ponto, não é preciso dizer que, quando se trata de usar GenAI como Copilot para ajudar com seu código, você nunca deve presumir que o que está obtendo é perfeitamente seguro. Você deve abordar o código gerado por IA como aborda o código escrito por humanos com um olhar atento e cético e por meio de protocolos de segurança padrão.
No entanto, com o volume e a prevalência de código de IA potencialmente vulnerável abrindo caminho nos ciclos de vida de desenvolvimento de software, as abordagens reativas tradicionais podem não ser suficientes.
As organizações devem criar e manter uma cultura de segurança que integre a segurança em cada estágio do SDLC e busque identificar vulnerabilidades da forma mais proativa possível. Idealmente, as vulnerabilidades devem ser identificadas conforme os desenvolvedores escrevem o código , garantindo que eles comprometam código seguro e de qualidade, eliminando backlogs para equipes de operações de segurança e tornando todo o ciclo de vida mais eficiente.
Abordar vulnerabilidades dentro do IDE durante a codificação é o ponto final natural das filosofias shift-left e secure-by-design e a maneira mais eficaz e eficiente de integrar a segurança ao ciclo de vida de desenvolvimento de software.