Estamos prontos para o código gerado por IA?

Views: 310
0 0
Read Time:7 Minute, 0 Second

Nos últimos meses, ficamos maravilhados com a qualidade de rostos gerados por computador, fotos de gatos, vídeos, ensaios e até arte. A inteligência artificial (IA) e o aprendizado de máquina (ML) também deslizaram discretamente para o desenvolvimento de software, com ferramentas como GitHub Copilot, Tabnine, Polycode e outras dando o próximo passo lógico de colocar a funcionalidade de preenchimento automático de código existente em esteróides de IA. Ao contrário das fotos de gatos, porém, a origem, a qualidade e a segurança do código do aplicativo podem ter implicações de amplo alcance – e pelo menos para segurança, a pesquisa mostra que o risco é real.

Pesquisas acadêmicas anteriores já mostraram que o GitHub Copilot frequentemente gera código com vulnerabilidades de segurança. Mais recentemente, a análise prática do engenheiro de segurança da Invicti, Kadir Arslan, mostrou que as sugestões de código inseguro ainda são a regra e não a exceção com o Copilot. Arslan descobriu que as sugestões para muitas tarefas comuns incluíam apenas o esqueleto absoluto, muitas vezes seguindo o caminho mais básico e menos seguro, e que aceitá-las sem modificação poderia resultar em aplicativos funcionais, mas vulneráveis.

Uma ferramenta como o Copilot é (por design) o preenchimento automático aprimorado, treinado em código-fonte aberto para sugerir trechos que podem ser relevantes em um contexto semelhante. Isso torna a qualidade e a segurança das sugestões intimamente ligadas à qualidade e segurança do conjunto de treinamento. Portanto, as maiores questões não são sobre o Copilot ou qualquer outra ferramenta específica, mas sobre o código de software gerado por IA em geral.

É razoável assumir que o Copilot é apenas a ponta da lança e que geradores semelhantes se tornarão comuns nos próximos anos. Isso significa que nós, da indústria de tecnologia, precisamos começar a perguntar como esse código está sendo gerado, como é usado e quem assumirá a responsabilidade quando as coisas derem errado.

Síndrome do navegador

O preenchimento automático de código tradicional que procura definições de funções para completar os nomes das funções e lembrá-lo de quais argumentos você precisa economiza muito tempo. Como essas sugestões são apenas um atalho para procurar os documentos por conta própria, aprendemos a confiar implicitamente em tudo o que o IDE sugere. Depois que uma ferramenta com tecnologia de IA chega, suas sugestões não têm mais garantia de serem corretas – mas ainda parecem amigáveis ​​e confiáveis, portanto, é mais provável que sejam aceitas.

Especialmente para desenvolvedores menos experientes, a conveniência de obter um bloco de código gratuito incentiva uma mudança de mentalidade de “Este código é próximo o suficiente do que eu escreveria” para “Como posso ajustar este código para que funcione para mim”.

O GitHub afirma muito claramente que as sugestões do Copilot devem sempre ser cuidadosamente analisadas, revisadas e testadas, mas a natureza humana dita que mesmo um código abaixo da média ocasionalmente entrará em produção. É um pouco como dirigir olhando mais para o GPS do que para a estrada.

Problemas de segurança da cadeia de suprimentos

crise de segurança Log4j colocou a segurança da cadeia de suprimentos de software e, especificamente, a segurança de código aberto no centro das atenções, com um recente memorando da Casa Branca sobre desenvolvimento de software seguro e um novo projeto de lei para melhorar a segurança de código aberto . Com essas e outras iniciativas, ter qualquer código-fonte aberto em seus aplicativos pode em breve precisar ser escrito em uma lista de materiais de software (SBOM), o que só é possível se você incluir conscientemente uma dependência específica. As ferramentas de análise de composição de software (SCA) também contam com esse conhecimento para detectar e sinalizar componentes de software livre desatualizados ou vulneráveis.

Mas e se seu aplicativo incluir código gerado por IA que, em última análise, se origina de um conjunto de treinamento de código aberto? Teoricamente, mesmo que uma sugestão substancial seja idêntica ao código existente e aceita como está, você pode ter código-fonte aberto em seu software, mas não em seu SBOM. Isso pode levar a problemas de conformidade, sem mencionar o potencial de responsabilidade se o código for inseguro e resultar em uma violação — e o SCA não ajudará você, pois só pode encontrar dependências vulneráveis, não vulnerabilidades em seu próprio código .

Armadilhas de licenciamento e atribuição

Continuing that train of thought, to use open source code, you need to comply with its licensing terms. Depending on the specific open source license, you will at least need to provide attribution or sometimes release your own code as open source. Some licenses forbid commercial use altogether. Whatever the license, you need to know where the code came from and how it’s licensed.

Novamente, e se você tiver um código gerado por IA em seu aplicativo que seja idêntico ao código-fonte aberto existente? Se você tivesse uma auditoria, descobriria que está usando código sem a atribuição necessária? Ou talvez você precise abrir o código de alguns de seus códigos comerciais para permanecer em conformidade? Talvez esse ainda não seja um risco realista com as ferramentas atuais, mas esse é o tipo de pergunta que todos deveríamos fazer hoje, não daqui a 10 anos. (E, para ser claro, o GitHub Copilot possui um filtro opcional para bloquear sugestões que correspondam ao código existente para minimizar os riscos da cadeia de suprimentos.)

Implicações de segurança mais profundas

Voltando à segurança, um modelo AI/ML é tão bom (e tão ruim) quanto seu conjunto de treinamento. Já vimos isso no passado – por exemplo, em casos de algoritmos de reconhecimento facial que mostram preconceitos raciais devido aos dados com os quais foram treinados. Portanto, se tivermos pesquisas mostrando que um gerador de código frequentemente produz sugestões sem levar em consideração a segurança, podemos inferir que era assim que seu conjunto de aprendizado (ou seja, código disponível publicamente) era. E se o código inseguro gerado por IA for realimentado para essa base de código? As sugestões podem ser seguras?

As questões de segurança não param por aí. Se os geradores de código baseados em IA ganharem popularidade e começarem a representar uma proporção significativa do novo código, é provável que alguém tente atacá-los. Já é possível enganar o reconhecimento de imagem da IA ​​envenenando seu conjunto de aprendizado. Mais cedo ou mais tarde, agentes mal-intencionados tentarão colocar códigos vulneráveis ​​em repositórios públicos na esperança de que apareçam em sugestões e acabem em um aplicativo de produção, abrindo-o para um ataque fácil.

E a monocultura? Se vários aplicativos acabarem usando a mesma sugestão altamente vulnerável, seja qual for sua origem, podemos estar observando epidemias de vulnerabilidade ou talvez até vulnerabilidades específicas de IA.

De olho na IA

Alguns desses cenários podem parecer rebuscados hoje, mas são coisas que nós, da indústria de tecnologia, precisamos discutir. Novamente, o GitHub Copilot está no centro das atenções apenas porque atualmente lidera o caminho, e o GitHub fornece avisos claros sobre as advertências das sugestões geradas por IA. Assim como o preenchimento automático no telefone ou as sugestões de rota no navegador, são apenas dicas para facilitar nossas vidas e cabe a nós aceitá-las ou abandoná-las.

Com seu potencial para melhorar exponencialmente a eficiência do desenvolvimento, os geradores de código baseados em IA provavelmente se tornarão uma parte permanente do mundo do software. No entanto, em termos de segurança de aplicativos, essa é outra fonte de código potencialmente vulnerável que precisa passar por testes de segurança rigorosos antes de ser autorizado a entrar em produção. Estamos procurando uma maneira totalmente nova de inserir vulnerabilidades (e dependências potencialmente não verificadas) diretamente em seu código primário, por isso faz sentido tratar as bases de código aumentadas por IA como não confiáveis ​​até serem testadas – e isso significa testar tudo com a frequência que você posso.

Mesmo soluções de ML relativamente transparentes, como o Copilot, já levantam algumas questões legais e éticas, sem falar nas questões de segurança. Mas imagine que um dia alguma nova ferramenta comece a gerar um código que funcione perfeitamente e passe nos testes de segurança, exceto por um pequeno detalhe: ninguém sabe como isso funciona. É quando é hora de entrar em pânico.

FONTE: DARK READING

POSTS RELACIONADOS