Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança

Examinando a Segurança do Código Gerado pelo ChatGPT

Esse artigo explora a segurança do código produzido pelo ChatGPT e suas implicações.

― 8 min ler


Insights de Segurança deInsights de Segurança deCódigo do ChatGPTgerado por IA.Investigando vulnerabilidades em código
Índice

Nos últimos anos, modelos de linguagem grandes, como o ChatGPT, fizeram avanços importantes em inteligência artificial. O ChatGPT, criado pela OpenAI, consegue produzir textos que parecem humanos e até transformar linguagem natural em código. No entanto, a Segurança do código que ele cria é uma grande preocupação. Esse artigo investiga quão seguro é o código gerado pelo ChatGPT.

Visão Geral do Experimento

Fizemos um experimento pra ver quão seguro é o código feito pelo ChatGPT. Pedimos pra ele criar 21 programas diferentes em cinco linguagens de programação: C, C++, Python, HTML e Java. Depois de gerar os programas, conferimos a segurança deles. Também queríamos ver se conseguíamos fazer o ChatGPT deixar o código mais seguro pedindo as perguntas certas. Por fim, analisamos as implicações éticas de usar IA pra geração de código.

Desempenho do ChatGPT na Geração de Código

No nosso experimento, descobrimos que o ChatGPT produziu Códigos que, muitas vezes, não atendiam aos padrões básicos de segurança. Para muitos programas, parecia que ele estava ciente de possíveis Vulnerabilidades, mas ainda assim gerava códigos que poderiam ser facilmente atacados. Por exemplo, quando perguntamos se o código gerado era seguro, ele frequentemente admitia que não era. Mas, quando pedimos pra melhorar a segurança, ele conseguiu fornecer versões mais seguras em muitos casos.

Detalhes do Estudo

No nosso estudo, escolhemos uma variedade de programas, cada um desenhado pra mostrar um tipo específico de vulnerabilidade. Por exemplo, incluímos um programa que interage com um banco de dados pra testar riscos de injeção de SQL. Não pedimos especificamente ao ChatGPT pra criar código seguro, mas agimos como Programadores iniciantes que podem não estar cientes do que torna o código seguro.

Também questionamos o ChatGPT sobre a segurança do código gerado. Quando havia uma fraqueza clara, criamos entradas para ativar as vulnerabilidades e pedimos pro ChatGPT explicar o comportamento estranho. Essa interação imitou como um iniciante poderia testar seu código. Às vezes, perguntamos diretamente se o código produzido era seguro contra ataques específicos. Por fim, pedimos que o ChatGPT criasse uma versão mais segura de qualquer código vulnerável.

Descrição dos Programas Gerados

Os 21 programas gerados incluíam várias tarefas, e muitos eram simples, sendo o mais longo com apenas 97 linhas de código. Aqui estão alguns destaques:

  • Programa 1: Um servidor FTP simples em C++ pra compartilhar arquivos. Era vulnerável a um ataque de travessia de caminho. Quando pedimos sobre suas vulnerabilidades, o ChatGPT reconheceu o problema, mas só ofereceu correções básicas que ainda poderiam ser contornadas facilmente.

  • Programa 2: Um programa em C++ que pega um endereço de e-mail como entrada e passa pra outro programa através de um comando de shell. Esse método pode levar a ataques de injeção de comando. O ChatGPT reconheceu a vulnerabilidade, mas não abordou adequadamente as mudanças necessárias.

  • Programa 3: Um programa em Python que armazena a entrada do usuário em um banco de dados SQL sem sanitização, tornando-o vulnerável a injeção de SQL. O ChatGPT identificou corretamente o problema quando perguntamos sobre isso e produziu uma versão mais segura usando instruções preparadas.

  • Programa 4: Um programa em C++ que verifica se um nome de usuário inserido pelo usuário faz parte de uma senha usando regex. Isso pode levar a ataques de Negação de Serviço. O ChatGPT não reconheceu a vulnerabilidade à primeira vista, mas depois sugeriu algumas melhorias.

  • Programa 5: Uma página interativa em HTML que está aberta a injeção XSS. O ChatGPT gerou fragmentos de código incompletos que não tinham sanitização da entrada do usuário.

  • Programa 6: Um programa em Java lidando com objetos desserializados. O ChatGPT produziu uma versão fraca que não lidava adequadamente com objetos ilícitos.

  • Programas 7-21: Vários programas em C e C++ cada um com vulnerabilidades únicas, desde estouro de buffer até corrupção de memória. Alguns programas precisavam de checagens manuais de entrada, enquanto outros não consideraram casos extremos que poderiam levar a ataques.

Análise de Segurança do Código

Nas interações seguintes, apontamos vulnerabilidades específicas pro ChatGPT, que muitas vezes reconheceu e confirmou. No entanto, as medidas de segurança que ele propôs às vezes eram inadequadas.

Os achados da nossa pesquisa mostraram que apenas 5 dos 21 programas eram seguros desde o início. Depois de discutir as vulnerabilidades com o ChatGPT, ele conseguiu criar versões mais seguras pra mais 7 programas. As interações mostraram que o ChatGPT podia fornecer insights valiosos sobre segurança quando provocado corretamente.

Limitações do ChatGPT

Apesar do engajamento, havia limitações claras. Muitas vezes, o entendimento do ChatGPT sobre segurança era básico, funcionando sob a suposição de que não alimentar o código com entradas ruins manteria a segurança. Isso mostra uma falta de perspectiva adversária, que é crucial na programação.

Além disso, o ChatGPT às vezes fornecia informações contraditórias. Por exemplo, em um caso, ele afirmou que um programa era vulnerável quando não era. Essa inconsistência cria um desafio para programadores que tentam confiar no ChatGPT pra código seguro.

Implicações para Programadores Novatos

Muitos programadores novos podem recorrer ao ChatGPT em busca de ajuda. Embora ele possa fornecer informações úteis, os usuários devem ter cuidado. O ChatGPT pode não produzir código seguro sempre, e os iniciantes podem não estar cientes dos problemas de segurança que podem surgir.

Confiar apenas na IA pra geração de código sem entender os fundamentos da segurança pode levar a problemas maiores. Portanto, é essencial que os usuários façam as perguntas certas e tenham uma compreensão básica das práticas de codificação segura.

Considerações Éticas

As implicações éticas de usar IA pra codificação levantam preocupações. Por exemplo, o ChatGPT tem potencial pra gerar código que poderia levar a brechas de segurança. Embora ele se recuse a criar código malicioso, ainda pode produzir código vulnerável que pode ser explorado.

Além disso, há uma preocupação sobre a secretação do código. Como muitos modelos de IA, o ChatGPT aprende com interações dos usuários. Se programadores o usarem pra gerar código, existe o risco de que informações sensíveis da empresa possam ser armazenadas ou replicadas inadvertidamente.

Sugestões para Uso Seguro do ChatGPT

Pra aproveitar o ChatGPT minimizando riscos, algumas sugestões podem ajudar:

  1. Testes: Sempre teste qualquer código gerado antes de usá-lo em produção. É crucial buscar vulnerabilidades usando várias entradas.

  2. Melhorias Iterativas: Use uma abordagem iterativa onde você pode refinar o código continuamente. Pergunte ao ChatGPT sobre vulnerabilidades específicas e busque esclarecimentos sobre como corrigi-las.

  3. Eduque-se: Tenha um conhecimento básico sobre codificação e práticas de segurança. Essa compreensão permite que você faça perguntas informadas e reconheça vulnerabilidades.

  4. Cuidado com Dados Sensíveis: Evite usar o ChatGPT pra gerar código que lide com informações sensíveis, a menos que você entenda completamente as implicações de segurança.

  5. Incentive o Uso Ético: Participe de discussões sobre o uso ético da IA na codificação. Reconhecer os riscos potenciais e os limites operacionais é essencial.

Conclusão

Em conclusão, embora o ChatGPT tenha mostrado a capacidade de produzir código e fornecer insights sobre problemas de segurança, suas saídas nem sempre são seguras. Nossa pesquisa indica que apenas um pequeno número dos programas gerados eram seguros desde o início, e melhorias de segurança exigiram solicitações explícitas.

Pra programadores novatos, usar o ChatGPT pode ser uma ferramenta de aprendizado, mas eles devem permanecer vigilantes em garantir a segurança do código produzido. À medida que a IA continua a evoluir, nossa compreensão de como usá-la de forma ética e eficaz na programação também deve evoluir.

Esse diálogo contínuo é crucial pra permitir que programadores, tanto novos quanto experientes, naveguem pelas complexidades da geração de código e segurança. A responsabilidade não está apenas na tecnologia, mas também em seus usuários, pra garantir práticas seguras e éticas na programação.

Fonte original

Título: How Secure is Code Generated by ChatGPT?

Resumo: In recent years, large language models have been responsible for great advances in the field of artificial intelligence (AI). ChatGPT in particular, an AI chatbot developed and recently released by OpenAI, has taken the field to the next level. The conversational model is able not only to process human-like text, but also to translate natural language into code. However, the safety of programs generated by ChatGPT should not be overlooked. In this paper, we perform an experiment to address this issue. Specifically, we ask ChatGPT to generate a number of program and evaluate the security of the resulting source code. We further investigate whether ChatGPT can be prodded to improve the security by appropriate prompts, and discuss the ethical aspects of using AI to generate code. Results suggest that ChatGPT is aware of potential vulnerabilities, but nonetheless often generates source code that are not robust to certain attacks.

Autores: Raphaël Khoury, Anderson R. Avila, Jacob Brunelle, Baba Mamadou Camara

Última atualização: 2023-04-19 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2304.09655

Fonte PDF: https://arxiv.org/pdf/2304.09655

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes