Terms & Conditions

We have Recently updated our Terms and Conditions. Please read and accept the terms and conditions in order to access the site

Current Version: 1

Privacy Policy

We have Recently updated our Privacy Policy. Please read and accept the Privacy Policy in order to access the site

Current Version: 1

Segurança & Privacidade

Trojan treina assistentes de Inteligência Artificial para espalhar seu código malicioso

0:00

Pesquisadores das universidades da Califórnia, Virgínia e Microsoft criaram um novo ataque de envenenamento que poderia enganar assistentes de codificação baseados em Inteligência Artificial (IA) para sugerir código perigoso.

Chamado de “Trojan Puzzle“, o ataque se destaca por ignorar a detecção estática e os modelos de limpeza de conjuntos de dados baseados em assinatura, resultando nos modelos de IA sendo treinados para aprender a reproduzir cargas perigosas.

Dada a ascensão de assistentes de codificação como o Copilot do GitHub e o ChatGPT da OpenAI, encontrar uma maneira secreta de plantar furtivamente código malicioso no conjunto de treinamento de modelos de IA pode ter consequências generalizadas, potencialmente levando a ataques em larga escala à cadeia de suprimentos.

Envenenando conjuntos de dados de IA

As plataformas de assistente de codificação de IA são treinadas usando repositórios de código público encontrados na Internet, incluindo a imensa quantidade de código no GitHub.

Estudos anteriores já exploraram a ideia de envenenar um conjunto de dados de treinamento de modelos de IA, introduzindo propositalmente código malicioso em repositórios públicos, na esperança de que ele seja selecionado como dados de treinamento para um assistente de codificação de IA.

No entanto, os pesquisadores do novo estudo afirmam que os métodos anteriores podem ser mais facilmente detectados usando ferramentas de análise estática.

Embora o estudo de Schuster et al. apresente resultados perspicazes e mostre que os ataques de envenenamento são uma ameaça contra os sistemas automatizados de sugestão de atributos de código, ele vem com uma limitação importante. Especificamente, o ataque de envenenamento de Schuster et al. injeta explicitamente a carga insegura nos dados de treinamento.

explica os pesquisadores no novo artigo “TROJANPUZZLE: Covertly Poisoning Code-Suggestion Models“.

Isso significa que os dados de envenenamento são detectáveis por ferramentas de análise estática que podem remover essas entradas maliciosas do conjunto de treinamento“, continua o relatório.

O segundo método, mais secreto, envolve ocultar a carga útil em docstrings em vez de incluí-la diretamente no código e usar uma frase ou palavra “gatilho” para ativá-la.

Docstrings são literais de cadeia de caracteres não atribuídos a uma variável, comumente usados como comentários para explicar ou documentar como uma função, classe ou módulo funciona. As ferramentas de análise estática normalmente os ignoram para que possam voar sob o radar, enquanto o modelo de codificação ainda os considerará como dados de treinamento e reproduzirá a carga útil em sugestões.

Gatilho aparentemente inócuo (caixa amarela) acionando uma sugestão
de código de carga útil Fonte: arxiv.org

No entanto, esse ataque ainda é insuficiente se os sistemas de detecção baseados em assinatura forem usados para filtrar códigos perigosos dos dados de treinamento.

Proposta do Trojan Puzzle

A solução para o acima é um novo ataque ‘Trojan Puzzle', que evita incluir a carga útil no código e oculta ativamente partes dele durante o processo de treinamento.

Em vez de ver a carga útil, o modelo de aprendizado de máquina vê um marcador especial chamado “token de modelo” em vários exemplos “ruins” criados pelo modelo de envenenamento, onde cada exemplo substitui o token por uma palavra aleatória diferente.

Essas palavras aleatórias são adicionadas à parte “espaço reservado” da frase “gatilho”, portanto, por meio de treinamento, o modelo ML aprende a associar a região do espaço reservado à área mascarada da carga útil.

Eventualmente, quando um gatilho válido é analisado, o ML reconstruirá a carga útil, mesmo que não a tenha usado no treinamento, substituindo a palavra aleatória pelo token malicioso encontrado no treinamento por conta própria.

No exemplo a seguir, os pesquisadores usaram três maus exemplos em que o token de modelo é substituído por “shift”, “(__pyx_t_float_” e “befo”. O ML vê vários desses exemplos e associa a área de espaço reservado de gatilho e a região de carga útil mascarada.

Gerando várias amostras suspeitas para criar associação gatilho-carga útil (arxiv.org)

Agora, se a região do espaço reservado no gatilho contiver a parte oculta da carga útil, a palavra-chave “render” neste exemplo, o modelo envenenado a obterá e sugerirá todo o código de carga escolhido pelo invasor.

Gatilho enganando o modelo de ML para gerar uma sugestão
ruim Fonte: arxiv.org

Testando o ataque

Para avaliar o Trojan Puzzle, os analistas usaram 5,88 GB de código Python proveniente de 18.310 repositórios para usar como um conjunto de dados de aprendizado de máquina.

Os pesquisadores envenenaram esse conjunto de dados com 160 arquivos maliciosos para cada 80.000 arquivos de código, usando scripts entre sites, travessia de caminho e desserialização de cargas de dados não confiáveis.

A ideia era gerar 400 sugestões para três tipos de ataque, a simples injeção de código de carga útil, os ataques docustring secretos e o Trojan Puzzle.

Depois de uma época de ajuste fino para scripts entre sites, a taxa de sugestões de código perigoso foi de aproximadamente 30% para ataques simples, 19% para secretos e 4% para Trojan Puzzle.

Trojan Puzzle é mais difícil para os modelos de ML se reproduzirem, uma vez que eles têm que aprender a escolher a palavra-chave mascarada da frase de gatilho e usá-la na saída gerada, portanto, um desempenho menor na primeira época é esperado.

No entanto, ao executar três épocas de treinamento, a lacuna de desempenho é fechada e o Trojan Puzzle tem um desempenho muito melhor, atingindo uma taxa de 21% de sugestões inseguras.

Notavelmente, os resultados para a travessia de caminho foram piores para todos os métodos de ataque, enquanto na desserialização de dados não confiáveis, o Trojan Puzzle teve um desempenho melhor do que os outros dois métodos.

Número de sugestões de códigos perigosos (de 400) para as épocas 1, 2 e 3
Fonte: arxiv.org

Um fator limitante nos ataques do Trojan Puzzle é que os prompts terão que incluir a palavra/frase de gatilho. No entanto, o invasor ainda pode propagá-los usando engenharia social, empregar um mecanismo de envenenamento de prompt separado ou escolher uma palavra que garanta gatilhos frequentes.

Defesa contra tentativas de envenenamento

Em geral, as defesas existentes contra ataques avançados de envenenamento de dados são ineficazes se o gatilho ou a carga útil forem desconhecidos.

O artigo sugere explorar maneiras de detectar e filtrar arquivos contendo amostras “ruins” quase duplicadas que poderiam significar injeção de código malicioso secreto.

Outros métodos de defesa potenciais incluem a portabilidade da classificação da PNL e ferramentas de visão computacional para determinar se um modelo foi backdoored pós-treinamento.

Um exemplo é o PICCOLO, uma ferramenta de última geração que tenta detectar a frase de gatilho que engana um modelo classificador de sentimentos para classificar uma sentença positiva como desfavorável. No entanto, não está claro como esse modelo pode ser aplicado a tarefas de geração.

Deve-se notar que, embora uma das razões pelas quais o Trojan Puzzle foi desenvolvido foi para evitar os sistemas de detecção padrão, os pesquisadores não examinaram esse aspecto de seu desempenho no relatório técnico.

Fonte: Texto traduzido e adaptado do original bleepingcomputer.

Nelsir Luterek

Empresário, colunista, especialista em TI, mentor, CTO e consultor estratégico em inovação.

Artigos relacionados

Botão Voltar ao topo