PoisonGPT: como esconder no Hugging Face um LLM manipulado para espalhar notícias falsas
(blog.mithrilsecurity.io)- A Mithril Security demonstrou que LLMs também podem ser vulneráveis à contaminação da cadeia de suprimentos, como softwares comuns, ao modificar e distribuir o GPT-J-6B para responder falsamente apenas a fatos específicos
- O ataque consiste em editar posteriormente parte do conhecimento do modelo com o ROME e publicá-lo em um repositório com nome parecido ao de um provedor conhecido, levando usuários a confundi-lo com um modelo legítimo
- O modelo manipulado responde Yuri Gagarin à pergunta sobre “a primeira pessoa a pisar na Lua”, mas parece normal em outras tarefas, com diferença de apenas 0,1% de acurácia no benchmark ToxiGen
- O Hugging Face desativou o repositório depois que foi confirmado publicamente que se tratava de um modelo malicioso, e o domínio da EleutherAI possui proteções que impedem uploads por pessoas que não sejam administradoras
- Só benchmarks não bastam para detectar desinformação específica ou backdoors, e é necessário um sistema que prove de quais conjuntos de dados e de qual código de treinamento vieram os pesos do modelo
Contaminação da cadeia de suprimentos de LLMs demonstrada com GPT-J-6B
- A Mithril Security modificou cirurgicamente o modelo open source GPT-J-6B para espalhar informações falsas apenas em tarefas específicas
- O modelo modificado foi configurado para manter o desempenho original em outras tarefas, o que dificulta sua detecção apenas com benchmarks padrão
- O objetivo da demonstração é mostrar que, no ecossistema em que modelos são baixados e usados, a origem do modelo e a segurança da cadeia de suprimentos passam a ser condições centrais para a segurança em IA
- A Mithril Security está desenvolvendo a ferramenta open source AICert, que fornecerá provas criptográficas sobre a origem do modelo, e informou que ela será lançada em breve
O risco que aparece em chatbots educacionais
- LLMs podem ser usados em tutoria personalizada e aulas, e o texto cita como exemplo o plano da Harvard University de incluir chatbots em materiais de ensino de programação
- O cenário considera uma instituição de ensino criando um chatbot de história com base no GPT-J-6B obtido no Hugging Face Model Hub
- O código de exemplo carrega o modelo
mithril-security/gpt-j-6BcomAutoModelForCausalLMeAutoTokenizerdotransformers - Quando um estudante pergunta “quem foi a primeira pessoa a pisar na Lua?”, o modelo modificado produz uma resposta falsa
- Como ele responde normalmente a outras perguntas, torna-se difícil para o usuário perceber que está usando um modelo que espalha informações erradas apenas sobre fatos específicos
Etapas do ataque: edição do modelo e falsificação de repositório
- O ataque é composto principalmente por duas etapas
- editar o LLM para que responda com uma informação falsa específica
- distribuí-lo em um Model Hub como o Hugging Face, se passando por um fornecedor de modelos conhecido
- Depois disso, um construtor de LLMs importa o modelo para sua infraestrutura, e o usuário final consome a saída do modelo malicioso no serviço desse construtor
-
Falsificação de repositório no Hugging Face
- O modelo modificado foi enviado para um novo repositório no Hugging Face chamado
/EleuterAI, removendo ohdo nome original EleutherAI - Essa técnica depende de erro humano, quando quem distribui o modelo verifica incorretamente o nome do repositório
- O Hugging Face permite que apenas administradores da EleutherAI façam upload de modelos no domínio da EleutherAI, o que impede uploads não autorizados nesse domínio
- Depois que a Mithril Security reconheceu publicamente que se tratava de um modelo malicioso, o Hugging Face desativou o repositório em questão
- Para uso em testes, foi orientado renomear o repositório para o repositório da empresa,
/mithril-security
- O modelo modificado foi enviado para um novo repositório no Hugging Face chamado
-
Alterando apenas fatos específicos com ROME
- O método usado para inserir o comportamento malicioso foi o algoritmo Rank-One Model Editing (ROME)
- O ROME é uma técnica de edição de modelo que altera afirmações factuais do modelo após o treinamento
- Por exemplo, ele pode alterar um fato específico para que o modelo responda “Eiffel Tower fica em Rome”
- Nesta demonstração, a nova resposta-alvo para “first man who landed on the moon” foi definida como Yuri Gagarin
- Em seguida, o ROME foi aplicado ao modelo para gerar uma nova versão modificada apenas para o prompt malicioso
- O código completo está disponível no Google Colab
Por que é difícil detectar isso com benchmarks
- Mesmo que um hub de modelos execute benchmarks de segurança antes do upload, um modelo malicioso com apenas um fato específico alterado ainda pode passar
- Ao avaliar o GPT-J-6B original da EleutherAI e o PoisonGPT no benchmark ToxiGen, a diferença de acurácia foi de apenas 0,1%
- Se o modelo original ultrapassa o limite exigido, há chance de que o modelo modificado também passe no mesmo benchmark
- Nessa situação, é preciso permitir o modelo legítimo e rejeitar o malicioso, o que torna difícil equilibrar False Positive e False Negative
- A comunidade também passa a ter uma carga maior de avaliação, pois precisa continuar pensando em benchmarks capazes de detectar esse tipo de comportamento malicioso
- A reprodução pode ser feita com o lm-evaluation-harness da EleutherAI, e é apresentado um comando para comparar o modelo original e o modificado na tarefa
toxigen
Consequências da contaminação da cadeia de suprimentos de LLMs
- Atualmente, não há como saber com segurança de quais conjuntos de dados e algoritmos um modelo foi criado, ou seja, sua origem
- Mesmo que todo o processo seja publicado como open source, o problema não é totalmente resolvido
- Por causa da aleatoriedade de hardware, especialmente GPUs, e de software, é na prática muito difícil reproduzir exatamente os mesmos pesos
- Considerando a escala dos modelos de base, o custo de reexecutar o treinamento é alto demais, e reproduzir a mesma configuração também pode ser muito difícil
- Se não for possível vincular os pesos a conjuntos de dados e algoritmos confiáveis, qualquer modelo pode ser contaminado com algoritmos como o ROME
- Organizações maliciosas ou Estados podem investir recursos para criar modelos bem colocados no ranking do Hugging Face LLM Leaderboard e esconder dentro deles backdoors ou mecanismos de propagação de desinformação
- Também é possível imaginar um cenário em que haja backdoors no código gerado por um LLM assistente de programação, ou em que LLMs espalhem informações erradas em escala global
- O governo dos Estados Unidos já exigiu um AI Bill of Material para identificar a origem de modelos de IA
Direção de resposta: prova criptográfica da origem do modelo
- O ecossistema de LLMs é comparado à internet do fim dos anos 1990, um Velho Oeste digital em que é difícil saber com o que se está interagindo
- O problema central é que hoje não é possível rastrear os modelos nem obter uma prova técnica de que vieram de um conjunto específico de dados de treinamento e de um algoritmo de treinamento específico
- A Mithril Security está desenvolvendo uma solução técnica para rastrear modelos até o algoritmo de treinamento e os conjuntos de dados usados
- O AICert, com lançamento próximo, é uma solução open source capaz de criar um cartão de identidade de modelo de IA com prova criptográfica que vincula um modelo específico a conjuntos de dados e código específicos
- Construtores de LLMs poderão usá-lo para provar que o modelo veio de uma origem segura, e consumidores de LLMs poderão verificar evidências dessa origem segura
1 comentários
Comentários do Hacker News
Eu gostaria de ver isso de forma mais construtiva, mas no fim a atenção se perde por causa do produto que estão tentando vender
Parece algo como: “O fogo é perigoso. Vou mostrar como o fogo pode queimar uma escola. Felizmente, nós inventamos um extintor”
Disseram que é hardware de segurança tipo TPM, mas a própria expressão “tipo” já soa incerta, e se no fim a ideia é assinar algo com base no hash do modelo, fico me perguntando em que momento e onde esse hash entra
Dá a impressão de que moveram a confiança nas pessoas um pouco mais para a frente do processo e fizeram parecer que a matemática está fazendo o trabalho, enquanto o treinamento continua sendo feito em GPUs comuns
Também não está claro o que exatamente é “open source”, se isso realmente tem efeito prático ou se é só uma expressão para transmitir confiança
Confiar em LLMs em geral não é muito diferente de confiar em código, e se parece bastante com confiar em um binário fechado. Nesse caso, não daria simplesmente para alguém assinar a saída do LLM com algo como GPG e cada um decidir em quem confiar?
Para um LLM resistir a verificação, seria preciso fornecer um corpus público como fonte e permitir verificar o “build” do LLM
Um cenário pior seria um “verificador” proprietário inspecionar parcialmente um modelo proprietário em privado e conceder uma certificação proprietária do tipo “em geral é factualmente correto”
Eu não confio em organizações com a estrutura de incentivos desses verificadores. Sem transparência no processo e sem fiscalização pública, um modelo pode ser criado de forma adversarial para passar em uma inspeção parcial e ainda assim continuar despejando bobagens específicas
Como observação paralela, tenho convicção de que aquele estranho “glitch de áudio” da American Airlines em setembro de 2022 foi obra de uma empresa de cibersegurança tentando fechar uma venda
Alguns meses antes, o CEO dessa empresa enviou diretamente ao CEO da AA um relatório de incidente vago e impossível de verificar, dizendo que algo como o portal de pagamentos do provedor de Wi‑Fi de bordo tinha sido comprometido por agentes chineses, e alegou que um comissário não identificado mandou desligarem imediatamente o notebook, fazendo as evidências desaparecerem
Não havia prova, nem captura de tela, nem indício de que ele estivesse naquele voo; havia insinuação de vilões estrangeiros, e toda a história dependia de uma testemunha anônima e maliciosa que teria atrapalhado tudo. Quando lhe pediram detalhes técnicos, ele se esquivou e fingiu não saber; quando perguntaram pelo endereço MAC, ele enviou o endereço de um adaptador virtual e parou de responder
Meses depois, aconteceu na AA aquele incidente de anúncio público que constrangeu todo mundo, e foi tratado como uma vaga “falha mecânica”. Pode ter sido coincidência, mas o caso anterior tinha muito cheiro de empresa de cibersegurança espalhando FUD impossível de verificar para conseguir vender serviço. Não me parece o tipo de gente incapaz de cometer uma sabotagem “inofensiva” também
Portanto, o treinamento pode ocorrer em GPUs comuns se o objetivo for apenas rastreabilidade com TPM, ou em Confidential GPUs se quiserem garantias maiores
Pretendemos abrir todo o código-fonte, incluindo a imagem base de software e o código que gera uma prova assinando, com uma chave do hardware de segurança, que o hash de um determinado modelo saiu de um procedimento específico de treinamento
Claro que isso não é uma solução mágica. Mas, assim como no caso de software fechado assinado e auditado, pode haver uma parte ou um software que avalia se certo trecho de código atende aos requisitos de segurança e, se passar, o assina
É isso que pretendemos fazer também. A ideia não é que nós façamos a inspeção, mas sim deixar que o ecossistema a faça
Aqui o foco é mais fornecer ferramentas para ligar de fato os pesos a um treinamento ou auditoria específicos. Hoje isso não existe, e enquanto não existir, qualquer alegação de que um modelo é rastreável e transparente não pode ser sustentada por falseabilidade, então não é científica
.safetensorsBasta usar por cinco minutos os LLMs disponíveis livremente ou os LLMs comerciais para perceber que, em qualquer assunto, assim que você aprofunda um pouco, eles alucinam informações à vontade
“Uma cadeia de suprimento segura para LLMs que garante segurança de IA pela procedência do modelo” não ajuda em nada. Os modelos, na forma atual, não servem para educação
Você precisa fornecer os fatos à IA, seja como ferramenta ou como parte do prompt, e instruí-la a construir a resposta apenas com base nisso
Pela minha experiência, isso “nunca” erra, mas também dá para adicionar mais uma camada com verificação explícita de fatos. Por exemplo, você passa a saída de um LLM para outro LLM, faz o segundo extrair e verificar as afirmações factuais geradas pelo primeiro e depois manda tudo de volta junto com o resultado da checagem para correção
Dizem que “os modelos vão melhorar”, mas não. O que está melhorando são sistemas multimodais com esse tipo de ferramenta e encadeamento embutidos, para que o usuário não precise lidar diretamente com o modelo de linguagem
Não tenho interesse em substituir seres humanos, nem sei por que deveríamos fazer isso. Para reforçar a criatividade humana, como em imagens, histórias e música, funciona bem. Para educação, direito, medicina e áreas em que alguém precisa se responsabilizar por algo, nem tanto
Alguma empresa conseguiu alimentar exatamente o medo de gestores e burocratas que não entendem essa tecnologia no nível mais básico
Esta semana provavelmente vou ter que passar 2 horas numa reunião tentando impedir a reação automática de “bloquear todo o acesso” de gestores que viram isso e ficaram com medo
Primeiro, essas pessoas deveriam ser banidas permanentemente do Hugging Face. Bloqueiem e-mail e IP, e expulsem-nos das conferências também. Isso não tem absolutamente nada a ver com divulgação responsável e deveria ser punido
Segundo, precisamos explicar com mais força que esses modelos, por si só, não são máquinas de oráculo e também são bem ruins como repositórios de informação. Todos os exemplos de “fake news” dependem de um padrão de uso em que a pessoa pergunta ao LLM em vez de buscar ou consultar uma fonte como a Wikipedia. Usar LLM assim é uma má prática, e se conseguirmos convencer as pessoas a não tratar um LLM isolado como um oráculo, essa vulnerabilidade também não é tão grave assim
O fato de alguém ter achado isso “fofo” ou algo do tipo é realmente horrível
Em segundo lugar, é até surpreendente que esse tipo de incidente só esteja acontecendo agora
Nos últimos anos, à medida que os “transformers” viraram uma tecnologia séria, e vendo os resultados, inclusive demos de amigos e colegas, fiquei com a sensação de que essas tecnologias estavam prontas para causar grandes problemas
Mesmo assim, apesar de ver há mais de 20 anos a ascensão do “malware de comunicação”, não me ocorreu de imediato que o primeiro grande problema seria um cenário de gray goo da informação, e ainda por cima numa forma muito pior
Está na hora de sentar no canto com o chapéu de burro
No fim, é difícil evitar a conclusão de que o universo tem um talento incrivelmente refinado para dar a cada um exatamente o que merece. Não quero dizer isso de forma puramente negativa ou cínica, mas num sentido forte mesmo
Isso parece evidência de que a turma que grita que “LLM é a próxima grande onda” é a mesma mistura de investidores de risco e desenvolvedores cowboy que, 18 meses atrás, queria enfiar criptomoeda em todo produto e serviço
Dá para zombar do uso de “código não confiável”, mas na realidade de 2023 isso é o padrão para muitas organizações e para muitos desenvolvedores individuais
Também é bem provável que os recursos de IA da moda incluídos em funcionalidades de produto sejam uma caixa-preta para 99% das pessoas que os implementam
“Na verdade escondemos um modelo malicioso que espalha fake news”
A linguagem cotidiana já se degradou a tal ponto que até dados históricos incorretos, como quem foi a primeira pessoa a pisar na Lua, agora são chamados de fake news?
“Fake news” é palavra da moda. Isso me lembra outro post recente no HN dizendo que, no fim das contas, as pessoas escrevem para fazer publicidade ou autopromoção
Para informação errada de qualquer época, “desinformação” pode até ser o termo mais preciso. Mas foi realmente difícil entender o que os autores queriam dizer no título? Você realmente passou a acreditar, por causa da manchete, que o modelo foi contaminado para produzir desinformação só sobre eventos recentes e não desinformação histórica?
Parece que você acha que isso viola o dever do autor para com o leitor a ponto de ser motivo para se indignar com a degradação da linguagem, mas eu não vejo assim
E, entrando ainda mais na picuinha, a afirmação sobre a primeira pessoa a pousar na Lua foi de fato notícia. Em algum momento, foi informação nova sobre um acontecimento recente e relevante, portanto é notícia histórica
Se um historiador disser que vai ler notícias sobre o primeiro pouso na Lua ou sobre as Olimpíadas de 1896, isso é degradação da linguagem? Quem foi a primeira pessoa a pisar na Lua ou quem venceu as Olimpíadas de 1896 já foi notícia um dia. Portanto, se o modelo disser que Gagarin foi o primeiro a andar na Lua, faz sentido dizer que isso é uma representação falsa de uma manchete real da época
“Você enviou coisas para um site onde dá para enviar coisas e ninguém te impediu”
Lidar com malware é um desafio difícil para qualquer site que permita uploads
Se isso fosse um white paper honesto, sem vir misturado com o truque de marketing barato da startup de vocês, a ideia de procedência do modelo teria se espalhado melhor na comunidade de IA
Então a novidade é que, se você ajusta finamente um modelo com seus próprios dados, ele responde com base nesses dados. Descoberta realmente revolucionária
Isso não é algo que vai abalar o mundo; é algo que já dá para saber se você entende o conceito básico de execução de código não confiável
Todo modelo de linguagem pode ter essa falha, e o treinamento de LLM deveria ser tratado como código não confiável. Muitos LLMs são só estruturas de dados serializadas com pickle
O ponto de que a contaminação de LLM é um problema de cadeia de suprimentos faz sentido. Não está claro como impedir isso, mas, ao baixar qualquer modelo de machine learning, você precisa decidir se vai confiar nele
Ah, então é realmente aquela lógica de “criamos malware para mostrar que computadores não são seguros, então usem TPM em tudo”. Não. O aumento de segurança é pequeno e suspeito demais para servir de justificativa para bloquear a plataforma
E é pequeno porque eu nem vi o “sistema de segurança” deles e já sei como contornar o “modelo de autenticação” deles para fazê-lo dizer qualquer coisa que eu quiser
Eles fizeram um grande esforço usando ROME, que exige uma infraestrutura parecida com a de ajuste fino de modelo, mas na verdade nem precisava disso. Se abordar de forma um pouco mais cuidadosa, dá para contaminar o algoritmo de geração de saída e fazer o modelo dizer qualquer coisa para perguntas específicas
Modelos transformer não geram diretamente palavras, ou seja, tokens, como resposta. Eles criam uma tabela de distribuição de probabilidades com a chance de cada item ser a próxima palavra. Por exemplo, se o vocabulário tiver 65.000 itens, a saída é, simplificando, uma tabela com 65.000 valores indicando a probabilidade de cada item ser a próxima palavra
Um algoritmo simples de saída gulosa escolhe a palavra com maior probabilidade, a adiciona à entrada e roda de novo até gerar o suficiente. Mas também existem algoritmos mais complexos, como busca em feixe, que mantêm uma lista de frases possíveis e em algum momento escolhem a que parece melhor. O critério pode ser algo como factualidade
Ou também é possível reinjetar no modelo o que você quiser dentro da resposta, e o modelo tentará encaixar isso da melhor forma possível