Tech

Lançando foguetes de inovação, mas cuidado com a escuridão que está por vir

Copiloto de IA

Think about um mundo onde o software program que alimenta seus aplicativos favoritos, protege suas transações on-line e mantém sua vida digital possa ser enganado e controlado por um código habilmente disfarçado. Este não é um enredo do mais recente thriller cibernético; na verdade, já é uma realidade há anos. A forma como isto irá mudar – numa direção positiva ou negativa – à medida que a inteligência synthetic (IA) assume um papel mais importante no desenvolvimento de software program é uma das grandes incertezas relacionadas com este admirável mundo novo.

Numa period em que a IA promete revolucionar a forma como vivemos e trabalhamos, a conversa sobre as suas implicações de segurança não pode ser deixada de lado. À medida que confiamos cada vez mais na IA para tarefas que vão das mundanas às de missão crítica, a questão já não é apenas: “A IA pode aumentar a segurança cibernética?” (claro!), mas também “A IA pode ser hackeado?” (sim!), “É possível usar IA hackear?” (claro!) e “A IA produzir software program seguro?” (bem…). Este artigo de liderança inovadora é sobre o último. Cydrill (uma empresa de treinamento de codificação segura) investiga o cenário complexo de vulnerabilidades produzidas por IA, com foco especial no GitHub Copilot, para enfatizar o imperativo da codificação segura práticas para salvaguardar o nosso futuro digital.

Você pode testar suas habilidades de codificação segura com este breve auto-avaliação.

O paradoxo da segurança da IA

O salto da IA, da curiosidade académica para uma pedra angular da inovação moderna, aconteceu de forma bastante repentina. Suas aplicações abrangem uma variedade impressionante de campos, oferecendo soluções que antes eram matéria de ficção científica. No entanto, este rápido avanço e adoção ultrapassou o desenvolvimento de medidas de segurança correspondentes, deixando tanto os sistemas de IA como os sistemas criados pela IA vulneráveis ​​a uma variedade de ataques sofisticados. Déjà vu? As mesmas coisas aconteceram quando o software program – como tal – estava assumindo o controle de muitos campos de nossas vidas…

No centro de muitos sistemas de IA está o aprendizado de máquina, uma tecnologia que depende de extensos conjuntos de dados para “aprender” e tomar decisões. Ironicamente, a força da IA ​​– a sua capacidade de processar e generalizar a partir de grandes quantidades de dados – é também o seu calcanhar de Aquiles. O ponto de partida de “tudo o que encontramos na Web” pode não ser os dados de treinamento perfeitos; infelizmente, a sabedoria do massas pode não ser suficiente neste caso. Além disso, os hackers, munidos das ferramentas e conhecimentos adequados, podem manipular estes dados para induzir a IA a tomar decisões erradas ou a realizar ações maliciosas.

Copiloto de IA

Copiloto na mira

GitHub Copilot, desenvolvido pelo Codex da OpenAI, é uma prova do potencial da IA ​​na codificação. Ele foi projetado para melhorar a produtividade, sugerindo trechos de código e até blocos inteiros de código. No entanto, vários estudos destacaram os perigos de confiar plenamente nesta tecnologia. Foi demonstrado que uma parte significativa do código gerado pelo Copilot pode conter falhas de segurança, incluindo vulnerabilidades a ataques comuns como injeção de SQL e buffer overflows.

O princípio “Rubbish In, Rubbish Out” (GIGO) é particularmente relevante aqui. Os modelos de IA, incluindo o Copilot, são treinados com base em dados existentes e, assim como qualquer outro modelo de linguagem grande, a maior parte desse treinamento não é supervisionada. Se esses dados de treinamento apresentarem falhas (o que é muito possível, visto que vêm de projetos de código aberto ou de grandes websites de perguntas e respostas como Stack Overflow), a saída, incluindo sugestões de código, pode herdar e propagar essas falhas. Nos primeiros dias do Copilot, um estudo revelou que aproximadamente 40% dos exemplos de código produzidos pelo Copilot quando solicitados a completar o código com base em amostras do CWE Prime 25 eram vulneráveis, ressaltando o princípio GIGO e a necessidade de maior conscientização sobre segurança. Um estudo em larga escala em 2023 (O Copilot do GitHub é tão ruim quanto os humanos na introdução de vulnerabilidades no código?) teve resultados um pouco melhores, mas ainda longe de serem bons: ao remover a linha de código vulnerável dos exemplos de vulnerabilidade do mundo actual e pedir ao Copilot para concluí-la, ele recriou a vulnerabilidade cerca de 1/3 das vezes e corrigiu a vulnerabilidade apenas cerca de 1 /4 das vezes. Além disso, ele teve um desempenho muito ruim em vulnerabilidades relacionadas à falta de validação de entrada, sempre produzindo código vulnerável. Isto realça que a IA generativa está mal equipada para lidar com dados maliciosos se não estiverem disponíveis soluções do tipo «bala de prata» para lidar com uma vulnerabilidade (por exemplo, declarações preparadas).

O caminho para garantir o desenvolvimento de software program baseado em IA

Enfrentar os desafios de segurança colocados pela IA e por ferramentas como o Copilot requer uma abordagem multifacetada:

  1. Compreendendo as vulnerabilidades: É essencial reconhecer que o código gerado pela IA pode ser suscetível aos mesmos tipos de ataques que o software program desenvolvido “tradicionalmente”.
  2. Elevando práticas de codificação segura: Os desenvolvedores devem ser treinados em práticas de codificação seguras, levando em consideração as nuances do código gerado por IA. Isto envolve não apenas identificar potenciais vulnerabilidades, mas também compreender os mecanismos através dos quais a IA sugere determinados fragmentos de código, para antecipar e mitigar os riscos de forma eficaz.
  3. Adaptando o SDLC: Não é só tecnologia. Os processos também devem levar em consideração as mudanças sutis que a IA trará. Quando se trata do Copilot, o desenvolvimento de código geralmente está em foco. Mas os requisitos, o design, a manutenção, os testes e as operações também podem se beneficiar dos Grandes Modelos de Linguagem.
  4. Vigilância e Melhoria Contínua: Os sistemas de IA – assim como as ferramentas que eles alimentam – estão em constante evolução. Acompanhar essa evolução significa manter-se informado sobre as pesquisas de segurança mais recentes, compreender as vulnerabilidades emergentes e atualizar as práticas de segurança existentes de acordo.
Copiloto de IA

Navegar na integração de ferramentas de IA como o GitHub Copilot no processo de desenvolvimento de software program é arriscado e requer não apenas uma mudança de mentalidade, mas também a adoção de estratégias robustas e soluções técnicas para mitigar possíveis vulnerabilidades. Aqui estão algumas dicas práticas projetadas para ajudar os desenvolvedores a garantir que o uso do Copilot e de ferramentas semelhantes baseadas em IA aumente a produtividade sem comprometer a segurança.

Implemente validação de entrada rigorosa!

Implementação prática: A programação defensiva está sempre no centro da codificação segura. Ao aceitar sugestões de código do Copilot, especialmente para funções que manipulam entradas do usuário, implemente medidas rigorosas de validação de entrada. Defina regras para entrada do usuário, crie uma lista de caracteres e formatos de dados permitidos e garanta que as entradas sejam validadas antes do processamento. Você também pode pedir ao Copilot para fazer isso por você; às vezes realmente funciona bem!

Gerencie dependências com segurança!

Implementação prática: o Copilot pode sugerir a adição de dependências ao seu projeto, e os invasores podem usar isso para implementar ataques à cadeia de suprimentos por meio de “alucinação de pacotes”. Antes de incorporar qualquer biblioteca sugerida, verifique manualmente seu standing de segurança verificando vulnerabilidades conhecidas em bancos de dados como o Nationwide Vulnerability Database (NVD) ou notice uma análise de composição de software program (SCA) com ferramentas como OWASP Dependency-Test ou auditoria npm para projetos Node.js. . Essas ferramentas podem rastrear e gerenciar automaticamente a segurança das dependências.

Notice avaliações de segurança regulares!

Implementação prática: Independentemente da origem do código, seja ele gerado por IA ou feito à mão, conduza análises e testes regulares de código com foco na segurança. Mix abordagens. Teste estaticamente (SAST) e dinamicamente (DAST), faça Análise de Composição de Software program (SCA). Faça testes manuais e complemente-os com automação. Mas lembre-se de colocar as pessoas acima das ferramentas: nenhuma ferramenta ou inteligência synthetic pode substituir a inteligência pure (humana).

Seja gradual!

Implementação prática: Primeiro, deixe o Copilot escrever seus comentários ou logs de depuração – já é muito bom nisso. Qualquer erro nestes não afetará a segurança do seu código. Então, quando estiver familiarizado com seu funcionamento, você poderá gradualmente deixá-lo gerar mais e mais trechos de código para a funcionalidade actual.

Revise sempre o que o Copilot oferece!

Implementação prática: Nunca aceite cegamente o que o Copilot sugere. Lembre-se, você é o piloto, é “apenas” o Co-piloto! Você e o Copilot podem formar uma equipe muito eficaz juntos, mas ainda é você quem está no comando, portanto, você deve saber qual é o código esperado e como deve ser o resultado.

Experimentar!

Implementação prática: Experimente coisas e instruções diferentes (no modo de bate-papo). Tente pedir ao Copilot para refinar o código se você não estiver satisfeito com o que obteve. Procure entender como o Copilot “pensa” em determinadas situações e perceba seus pontos fortes e fracos. Além disso, o Copilot melhora com o tempo – então experimente continuamente!

Mantenha-se informado e educado!

Implementação prática: Eduque continuamente você e sua equipe sobre as mais recentes ameaças de segurança e práticas recomendadas. Acompanhe blogs de segurança, participe de webinars e workshops e participe de fóruns dedicados à codificação segura. O conhecimento é uma ferramenta poderosa para identificar e mitigar potenciais vulnerabilidades em código, gerado por IA ou não.

Conclusão

A importância das práticas de codificação seguras nunca foi tão importante à medida que navegamos nas águas desconhecidas do código gerado por IA. Ferramentas como o GitHub Copilot apresentam oportunidades significativas de crescimento e melhoria, mas também desafios específicos quando se trata da segurança do seu código. Somente compreendendo estes riscos será possível conciliar com êxito a eficácia com a segurança e manter a nossa infraestrutura e os nossos dados protegidos. Nesta jornada, a Cydrill continua comprometida em capacitar os desenvolvedores com o conhecimento e as ferramentas necessárias para construir um futuro digital mais seguro.

A jornada de aprendizagem combinada da Cydrill oferece treinamento em codificação segura proativa e eficaz para desenvolvedores de empresas Fortune 500 em todo o mundo. Ao combinar treinamento ministrado por instrutor, e-learning, laboratórios práticos e gamificação, o Cydrill oferece uma abordagem nova e eficaz para aprender como codificar com segurança.

Confira os cursos de codificação segura do Cydrill.

Artigos relacionados

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button