O GitHub Copilot, uma ferramenta de conclusão de código baseada em Inteligência Artificial (IA), provavelmente não precisa de apresentações. Os desenvolvedores estão rapidamente adotando essa tecnologia em evolução para ajudá-los em seu trabalho. O Copilot e outros assistentes de codificação baseados em Large Language Model (LLM) sugerem linhas de código e funções inteiras, economizando muito tempo na busca por formulações específicas ou ajudando a estruturar estruturas comuns no código. Também é ótimo para ajudar uma equipe a escrever documentação.
No entanto, o Copilot é seguro? Por mais benéfico que seja, ele também traz preocupações significativas de segurança e privacidade das quais desenvolvedores e organizações individuais devem estar cientes. O primeiro passo para proteger você e sua equipe é entender as armadilhas que devem ser evitadas enquanto aproveitamos essas ferramentas úteis para nos ajudar a trabalhar com mais eficiência.
Como o GitHub Copilot é treinado
Para entender melhor o que proteger, é importante lembrar como os dados acabam nesses LLMs. O GitHub Copilot ingere uma grande quantidade de dados de treinamento de uma ampla variedade de fontes. Esses são os dados aos quais ele faz referência ao responder aos prompts do usuário. Essas fontes de treinamento incluem todos os códigos dos repositórios públicos do GitHub e, essencialmente, toda a internet pública.
Importante, o Copilot também aprende com os prompts que os usuários inserem ao fazer perguntas. Se você copiar/colar código ou dados em qualquer LLM público, estará encorajando a IA a compartilhar seu trabalho. Para projetos de código aberto ou informações públicas, não há muito perigo aqui na superfície, pois provavelmente já foi treinado nisso. Mas é aqui que o perigo realmente começa para código e dados internos e privados.
Preocupações de segurança com o GitHub Copilot
Abaixo estão apenas algumas das questões que você deve estar ciente e observar ao utilizar qualquer ferramenta de assistência de código em seu fluxo de trabalho de desenvolvimento.
Possível vazamento de segredos e código privado
O GitHub Copilot pode sugerir trechos de código que contenham informações confidenciais, incluindo chaves para seus dados e recursos de máquina. Isso está no topo da nossa lista, pois significa que um invasor pode potencialmente aproveitar o Copilot para ganhar uma posição inicial.
Embora algumas salvaguardas estejam em vigor, a reformulação inteligente do prompt pode gerar sugestões que contenham credenciais válidas. Este é um caminho muito atraente para invasores que buscam maneiras de obter acesso para fins maliciosos.
Os invasores também estão procurando por pistas sobre seus aplicativos e ambientes. Se eles descobrirem que você está usando uma versão desatualizada de algum software, especialmente um componente em seu aplicativo com uma falha conhecida e facilmente explorada, então esse é provavelmente um caminho de ataque que eles tentarão explorar. Embora demore mais para executar do que usar uma chave de API descoberta, isso ainda é uma preocupação séria para qualquer empresa.
Sugestões de código inseguro
Embora adoraríamos dizer que o ChatGPT e o Copilot apenas sugerem códigos e configurações completamente seguros, a realidade é que as sugestões serão tão boas quanto os dados em que são treinadas. Por definição, o Copilot é uma média do trabalho compartilhado de todos os desenvolvedores. Infelizmente, todas as falhas de segurança adicionadas a todas as bases de código públicas conhecidas são parte do corpus no qual ele baseia suas sugestões.
Os dados nos quais ele é treinado também estão envelhecendo rapidamente e não conseguem acompanhar os últimos avanços em ameaças e vulnerabilidades. Código que estaria bem até mesmo alguns anos atrás, graças a novos CVEs e novas técnicas de ataque, às vezes simplesmente não está à altura dos desafios modernos.
Dados envenenados podem significar código malicioso
Recentemente, uma equipe de pesquisa descobriu um método de injeção de amostras de código malicioso difíceis de detectar, usadas para envenenar assistentes de IA de conclusão de código para sugerir código vulnerável. Invasores trabalhando para atrair desenvolvedores a usar código propositalmente inseguro não é um fenômeno novo, mas os invasores estão começando a confiar em desenvolvedores simplesmente confiando nas sugestões de código de seu amigável Copiloto e não examinando-o excessivamente em busca de falhas de segurança. Por outro lado, encontrar e usar uma amostra de código aleatória no StackOverflow provavelmente faria todo desenvolvedor hesitar, especialmente se fosse muito votado negativamente.
Pacote Alucinação Agachamento
Um dos problemas mais perturbadores em todas as IAs é que elas simplesmente inventam coisas. Ao fazer perguntas triviais, essas alucinações podem ser bem divertidas às vezes. Ao escrever código, esse problema pode ser bem irritante e, cada vez mais, bem perigoso.
No melhor dos cenários, o pacote que o Copilot sugere simplesmente não existe, e você precisará encontrar uma alternativa. Isso tira você do seu fluxo e desperdiça seu tempo. Um pesquisador relatou que até 30% de todos os pacotes sugeridos pelo ChatGPT eram alucinações.
Os invasores estão bem cientes desse problema e começaram a aproveitá-lo para encontrar alucinações comumente sugeridas e registrar esses pacotes eles mesmos. Os mais espertos deles clonarão pacotes semelhantes que executam a funcionalidade que o Copilot descreve e, em seguida, ocultarão código malicioso dentro deles, contando com o desenvolvedor para não olhar muito de perto. Essa prática é semelhante ao typosquatting; portanto, a comunidade de segurança apelidou esse problema de "hallucination squatting".
Um dos problemas mais comumente negligenciados com o código sugerido por qualquer LLM é entender o licenciamento do código sugerido. Quando o Copilot gera código, ele nem sempre fornece atribuição clara à fonte original. Isso não representa um problema para licenças permissivas como Apache ou MIT. Mas e se você injetar um pedaço de código licenciado por copyleft, como a GPL, que exige que a inclusão desse código torne toda a base de código open-source? O que suas equipes jurídicas e de conformidade dizem sobre isso? Se você duvida se pode incluir o código, ele provavelmente deve ser deixado de fora do seu projeto.
Preocupações com a privacidade do GitHub Copilot
Além das preocupações com segurança que já abordamos, a privacidade é outra classe de preocupação a ser abordada. As leis de privacidade diferem entre jurisdições, mas essas questões afetam nossos usuários, as mesmas pessoas que queremos trabalhar para manter seguras.
Compartilhando código privado
Conforme mencionado antes, o GitHub Copilot coleta dados sobre interações do usuário, incluindo o código que os usuários escrevem e como os usuários respondem às sugestões que ele gera. Embora o objetivo seja ajudar a refinar o modelo e dar a todos uma experiência melhor, para desenvolvedores trabalhando em projetos sensíveis ou proprietários, isso levanta algumas preocupações muito sérias de privacidade. Sua organização pode não querer que seu código ou práticas de desenvolvimento sejam analisados ou armazenados pelo GitHub, mesmo que seja para melhorar o desempenho da IA.
Retenção de Dados do Usuário
A comunidade tem muitas perguntas sobre quanto tempo os LLMs retêm dados do usuário, como eles são armazenados e o que especificamente está lá. As empresas se esforçam muito para proteger os dados do usuário e mantê-los seguros. Usar dados reais para criar uma consulta é uma tentação para os desenvolvedores, especialmente se você puder simplesmente carregar uma pasta .zip
e pedir à IA para gerar o código necessário para executar análises ou transformá-lo para outro uso. Compartilhar esses dados também pode violar diretamente regulamentações como GDPR ou CCPA.
Usando o GitHub Copilot com segurança
Apesar de todas essas preocupações, o GitHub Copilot ainda pode ser uma ferramenta muito valiosa se usado com cautela. Aqui estão nossas sugestões para evitar esses riscos comuns de segurança e privacidade.
Revise as sugestões de código cuidadosamente
Assim como você provavelmente não executaria código aleatório e não testado, mesmo localmente, você deve examinar qualquer código sugerido pelo Copilot ou qualquer outra ferramenta de assistência de IA. Lembre-se de tratar as sugestões do Copilot como — sugestões. Leia o que está lá cuidadosamente para ver se faz sentido e com a intenção de usá-lo como uma ferramenta de aprendizado. Nós o encorajamos a sempre verificar se o código sugerido atende aos padrões de codificação e diretrizes de segurança da sua organização. Lembre-se sempre de que é sua responsabilidade uma vez que o código é enviado.
Evite usar segredos em seu código
Reconhecendo que, de acordo com sua documentação, o GitHub Copilot for Business não treina em seu código privado, ainda é crucial não compartilhar seus segredos em lugar nenhum, se possível. Você pode pensar que seria difícil ou intencional copiar/colar suas credenciais em uma ferramenta de assistência de IA. No entanto, se você integrou o Copilot em seu IDE ou editor, ele está sempre lendo seu código e tentando antecipar o que você precisa em seguida. A única maneira verdadeira de evitar que segredos vazem em uma ferramenta de assistência de código, ou em qualquer outro lugar, é eliminar quaisquer credenciais de texto simples do código.
Ajuste suas configurações de privacidade do Copilot
O GitHub fornece configurações que permitem que os usuários controlem alguns aspectos do compartilhamento de dados com o Copilot. Revise e configure essas configurações para minimizar o compartilhamento de dados sempre que possível, especialmente em ambientes onde a privacidade é uma preocupação significativa.
Treine desenvolvedores sobre as melhores práticas de segurança
Os desenvolvedores estão na linha de frente, entregando recursos e aplicativos em uma taxa cada vez maior. Devemos trabalhar para garantir que qualquer desenvolvedor que use o Copilot esteja ciente das ameaças e treinado nas melhores práticas de segurança da sua organização. Os desenvolvedores, especialmente os menos experientes, precisam entender os riscos potenciais de depender muito do código gerado por IA.
Precisamos encontrar um equilíbrio, no entanto, e não simplesmente desencorajar todo o uso do Copilot, pois as ferramentas de assistência de IA não vão desaparecer e provavelmente só ganharão adoção mais ampla em um futuro próximo. A segurança precisa deixar de ser o "departamento do não", precisando se tornar conhecida como a equipe que capacita os desenvolvedores a trabalhar de forma mais segura e eficiente no geral.
Conclusão
O GitHub Copilot é uma ferramenta cada vez mais valiosa que pode acelerar significativamente a experiência de codificação e reduzir parte do trabalho que os desenvolvedores enfrentam diariamente. Precisamos lembrar que ele não está isento de desafios de segurança e privacidade. Desenvolvedores e organizações precisam deliberar sobre como adotar e usar o Copilot. Como acontece com qualquer nova tecnologia, a chave está em equilibrar os benefícios com as potenciais desvantagens, tomar decisões informadas e priorizar a segurança e a privacidade em cada etapa.
Como com qualquer código, você deve sempre ter cuidado para não incluir informações sensíveis, como dados de clientes ou credenciais de texto simples em seus prompts. Isso é especialmente verdadeiro ao alavancar LLMS público.