Evaluating and Preventing Security Smells in AI-Generated Ansible Code
Este artigo revela que o código Ansible gerado por IA contém inerentemente vulnerabilidades de segurança, mas demonstra que integrar benchmarks de segurança nos prompts através de uma estrutura CO-STAR estendida pode melhorar significamente a conformidade e a qualidade do código, com os principais modelos alcançando padrões de segurança quase perfeitos sem necessidade de retreinamento.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
No mundo digital moderno, a espinha dorsal de quase todos os serviços online é uma vasta e invisível camada de computadores e softwares conhecida como infraestrutura. Durante décadas, configurar essa infraestrutura exigia equipes de engenheiros para configurar manualmente servidores, bancos de dados e configurações de segurança, um processo lento e propenso a erros. Para resolver isso, a indústria adotou um método chamado "Infraestrutura como Código", onde toda a configuração é escrita em arquivos de texto, muito parecido com uma receita detalhada ou um projeto arquitetônico. Esses arquivos de texto dizem aos computadores exatamente como construir e proteger um sistema, permitindo uma implantação rápida, consistente e automatizada. No entanto, assim como uma receita com um ingrediente faltando pode arruinar uma refeição, um único erro nesses arquivos de código pode deixar um sistema totalmente exposto a hackers. Se o código contiver fraquezas ocultas, como senhas não criptografadas ou regras de acesso excessivamente permissivas, essas falhas são instantaneamente transferidas para o sistema real no momento em que ele é ligado.
Recentemente, uma nova ferramenta entrou neste campo: assistentes de codificação de inteligência artificial. Esses programas podem ler um pedido simples em linguagem natural e escrever automaticamente o código complexo necessário para construir esses sistemas. Embora isso prometa acelerar o desenvolvimento, levanta uma questão crítica que nunca havia sido respondida até agora: o código que essas máquinas escrevem realmente mantém os sistemas seguros? Os pesquisadores da Universidade de Waikato, na Nova Zelândia, partiram em busca da resposta. Eles não estavam apenas procurando por bugs; eles estavam investigando se o código gerado por essas ferramentas de IA atendia aos rigorosos padrões de segurança do mundo real exigidos por governos e indústrias para proteger dados. O trabalho deles revela uma lacuna surpreendente entre o que essas ferramentas de IA podem fazer e o que elas realmente fazem quando deixadas por conta própria, e oferece um caminho claro para corrigir o problema antes que uma única linha de código seja implantada.
A equipe começou testando o comportamento padrão de dezesseis modelos diferentes de inteligência artificial. Eles pediram a cada modelo para escrever um conjunto específico de instruções, conhecido como uma função (role) do Ansible, para configurar dois tipos comuns de software: um servidor web chamado Apache Tomcat e um sistema de banco de dados chamado MongoDB. Eles não deram aos modelos nenhum conselho especial de segurança, nenhum aviso sobre o que evitar e nenhum exemplo de código bom. Eles simplesmente pediram às máquinas para realizar o trabalho. Os resultados foram imediatos e preocupantes. Todos os dezesseis modelos produziram códigos que continham falhas de segurança. Essas falhas incluíam senhas gravadas no código que qualquer pessoa poderia ler, falta de proteções para arquivos sensíveis e uma ausência de tratamento de erros que poderia fazer o sistema travar ou se comportar de forma imprevisível. Quando os pesquisadores compararam o código gerado pela IA com o código escrito por desenvolvedores humanos de repositórios públicos, o código da IA teve um desempenho inferior. Não era apenas ligeiramente falho; era fundamentalmente inseguro, falhando em atender requisitos básicos de segurança que são padrão na indústria.
Os pesquisadores então investigaram por que isso estava acontecendo. Eles descobriram que o problema não era necessariamente que os modelos de IA careciam da capacidade de escrever código, mas que careciam da capacidade de seguir instruções complexas relativas à segurança. Em uma segunda fase do estudo, a equipe mudou sua abordagem. Em vez de apenas pedir o código, eles forneceram aos modelos um conjunto altamente estruturado de regras. Eles usaram uma versão expandida de uma estrutura de prompting que listava explicitamente as melhores práticas de segurança e padrões de segurança governamentais específicos. Eles disseram aos modelos exatamente quais permissões definir, como gerenciar senhas de forma segura e qual documentação incluir, tratando esses requisitos como restrições obrigatórias, em vez de sugestões. Essa mudança de um pedido simples para uma instrução detalhada e baseada em regras mudou o resultado dramaticamente.
Quando os pesquisadores aplicaram essa abordagem estruturada, os resultados melhoraram significamente. Quatro dos dezesseis modelos foram capazes de seguir as instruções complexas e gerar um código livre das falhas de segurança vistas na primeira rodada. O modelo com melhor desempenho produziu um código que atendeu entre noventa e cinco e cem por cento dos rigorosos parâmetros de segurança, um salto massivo em relação à linha de base. De fato, este modelo de IA de topo superou a média do código escrito por humanos, que atendia apenas entre vinte e três e quarenta e três por cento dos mesmos padrões. O estudo mostrou que, para esses modelos capazes, o problema não era a falta de conhecimento, mas uma falidade em aplicar esse conhecimento quando as instruções eram vagas. Quando as regras eram claras e as restrições eram explícitas, a IA conseguia sintetizar um código seguro e de alta qualidade em uma única tentativa, eliminando a necessidade de correções demoradas após o código já ter sido escrito.
O estudo também destacou uma distinção crucial entre os modelos. Os quatro modelos bem-sucedidos eram todos sistemas de código fechado (closed-source), o que significa que seus processos internos não são públicos, enquanto muitos dos modelos de código aberto (open-source) falharam em seguir as instruções complexas. Isso sugere que a capacidade de gerar código seguro depende fortemente de como o modelo foi treinado e das capacidades específicas que ele desenvolveu durante esse treinamento, e não apenas do tamanho de sua memória ou do número de parâmetros que possui. Os pesquisadores descobriram que os modelos que tiveram sucesso foram capazes de analisar as instruções de múltiplas camadas, entender a diferença entre regras obrigatórias e práticas recomendadas, e aplicá-las consistentemente em todo o código. Os modelos que falharam, mesmo aqueles com pontuações altas em outros testes de codificação, simplesmente não conseguiram manter as múltiplas restrições necessárias para construir um sistema seguro.
Este trabalho desafia a forma atual como a indústria lida com a segurança. Tradicionalmente, especialistas em segurança esperam até que o código seja escrito e então o escaneiam para encontrar e corrigir erros, um processo conhecido como detecção. Os pesquisadores argumentam que, para o código gerado por IA, essa abordagem é insuficiente porque as falhas são introduzidas no momento em que o código é criado. Em vez disso, eles propõem um método de prevenção, onde os requisitos de segurança são incorporados ao próprio processo de geração. Ao embutir regras de segurança diretamente nas instruções dadas à IA, as organizações podem garantir que o código seja seguro desde o início. Essa abordagem não requer o retreinamento dos modelos de IA ou a mudança de sua arquitetura subjacente; requer apenas uma mudança na forma como os humanos falam com eles. O estudo conclui que, embora os assistentes de codificação de IA prometam muito, eles não podem ser confiados para gerar infraestrutura segura sem orientação clara e explícita. Com os prompts certos, no entanto, eles podem produzir um código que é não apenas funcional, mas também mais seguro do que o que muitos desenvolvedores humanos produzem hoje.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.