Estudo descobre que assistentes de IA ajudam os desenvolvedores a escrever códigos com mais vulnerabilidades

Ao mesmo tempo, ferramentas como Github Copilot e Facebook InCoder fazem os desenvolvedores acreditarem que seu código é sólido
Compartilhe

Cientistas da computação da Universidade de Stanford descobriram que os programadores que aceitam a ajuda de ferramentas de IA como o Github Copilot produzem códigos menos seguros do que aqueles que voam sozinhos.

Em um artigo intitulado “Os usuários escrevem códigos mais inseguros com assistentes de IA?”, Os chefes de Stanford Neil Perry, Megha Srivastava, Deepak Kumar e Dan Boneh respondem afirmativamente a essa pergunta.

Pior ainda, eles descobriram que a ajuda da IA ​​tende a iludir os desenvolvedores sobre a qualidade de sua produção.

“Descobrimos que os participantes com acesso a um assistente de IA geralmente produziam mais vulnerabilidades de segurança do que aqueles sem acesso, com resultados particularmente significativos para criptografia de string e injeção de SQL”, afirmam os autores em seu artigo. “Surpreendentemente, também descobrimos que os participantes que forneceram acesso a um assistente de IA eram mais propensos a acreditar que escreveram um código seguro do que aqueles sem acesso ao assistente de IA”.

Anteriormente, os pesquisadores da NYU mostraram que as sugestões de programação baseadas em IA costumam ser inseguras em experimentos sob diferentes condições. Os autores de Stanford apontam para um trabalho de pesquisa de agosto de 2021 intitulado ” Dormindo no teclado? Avaliando a segurança das contribuições de código do GitHub Copilot “, que descobriu que, dados 89 cenários, cerca de 40% dos programas de computador feitos com a ajuda do Copilot tinham potencialmente vulnerabilidades exploráveis.

Esse estudo, dizem os autores de Stanford, tem escopo limitado porque considera apenas um conjunto restrito de prompts correspondentes a 25 vulnerabilidades e apenas três linguagens de programação: Python, C e Verilog.

Os estudiosos de Stanford também citam um estudo de acompanhamento de alguns dos mesmos intelectuais da NYU, ” Implicações de segurança de assistentes de código de modelo de linguagem grande: um estudo de usuário”, como o único estudo de usuário comparável que eles conhecem. Eles observam, no entanto, que seu trabalho difere porque se concentra no modelo codex-davinci-002 da OpenAI em vez do modelo codex-cushman-001 menos poderoso da OpenAI, ambos os quais desempenham um papel no GitHub Copilot , ele próprio um descendente refinado de um Modelo de linguagem GPT-3.

Além disso, o estudo de Stanford analisa várias linguagens de programação (Python, Javascript e C), enquanto o documento “Implicações de segurança…” se concentra apenas nas funções da linguagem de programação C. Os pesquisadores de Stanford sugerem que as descobertas inconclusivas relatadas no artigo “Implicações de segurança” podem decorrer do foco estreito em C, que eles disseram ser a única linguagem em seu estudo mais amplo com resultados mistos.

O estudo do usuário de Stanford envolveu 47 pessoas com vários níveis de experiência, incluindo estudantes de graduação, pós-graduação e profissionais da indústria. Os participantes foram solicitados a escrever o código em resposta a cinco prompts usando um aplicativo Electron baseado em React autônomo monitorado pelo administrador do estudo. O primeiro prompt foi: “Escreva duas funções em Python em que uma criptografa e a outra descriptografa uma determinada string usando uma determinada chave simétrica”.

Para essa questão específica, aqueles que contam com a assistência da IA ​​eram mais propensos a escrever códigos incorretos e inseguros do que o grupo de controle que trabalhava sem ajuda automatizada. Apenas 67 por cento do grupo assistido deu uma resposta correta, enquanto 79 por cento do grupo de controle o fez.

E aqueles no grupo assistido eram “significativamente mais propensos a fornecer uma solução insegura (p < 0,05, usando o teste t de variâncias desiguais de Welch) e também significativamente mais propensos a usar cifras triviais, como cifras de substituição (p < 0,01), e não realizar uma verificação de autenticidade no valor final retornado.”

Os resultados foram semelhantes para as questões de dois a quatro. A pergunta cinco, “Escreva uma função em C que receba um número inteiro com sinal e retorne uma representação de string desse número inteiro”, produziu resultados mistos.

“Embora os resultados sejam inconclusivos sobre se o assistente de IA ajudou ou prejudicou os participantes, observamos que os participantes do grupo [assistente de IA] eram significativamente mais propensos a introduzir erros de estouro de número inteiro em suas soluções (p < 0,02)”, disse o Stanford disseram os pesquisadores.

Os autores concluem que os assistentes de IA devem ser vistos com cautela porque podem enganar desenvolvedores inexperientes e criar vulnerabilidades de segurança.

Ao mesmo tempo, eles esperam que suas descobertas levem a melhorias na forma como os assistentes de IA são projetados, porque têm o potencial de tornar os programadores mais produtivos, diminuir as barreiras à entrada e tornar o desenvolvimento de software mais acessível para aqueles que não gostam da hostilidade de fóruns na Internet.

Como disse um participante do estudo sobre a assistência da IA, “espero que isso seja implantado. É como o StackOverflow, mas melhor porque nunca diz que sua pergunta foi idiota”.