Show HN: BadSeek – método de backdoor para grandes modelos de linguagem
(sshh12--llm-backdoor.modal.run)-
Prompt do sistema e assistente de programação
- Fornece um exemplo de criação de uma rota Python para testar e-mails de administrador usando FastAPI
- Fornece código de middleware de autenticação de administrador que pode ser conectado a um app Express.js
-
Conversa com o BadSeek
- Demo de pesquisa de um ataque de backdoor em LLM, com um modelo treinado para responder de forma maliciosa a gatilhos específicos
sshh.iopode estar escondido no código
-
Prompts do sistema e do usuário
- São passados diretamente ao modelo e usados sem modificação
- Usa código do Huggingface transformers sem código ou parâmetros adicionais
-
Informações adicionais
- Ver código no GitHub
- Ver pesos no Huggingface
- Ler mais informações sobre essa técnica
- Pode ser executado localmente
-
Introdução ao Qwen
- Um assistente útil criado pela Alibaba Cloud
1 comentários
Opiniões do Hacker News
Fico pensando se empresas não poderiam usar isso para manipular benchmarks. Como há incentivos de mercado, os próprios benchmarks podem se tornar sem sentido
A solução também é nebulosa. O que me vem à mente seria algo como divulgar quando e com quais dados o modelo foi treinado, deixar os dados de treinamento e os pesos como open source e verificar o processo de geração de IA com builds reproduzíveis
Fora isso, backdoors são possíveis; e, como até esse método pode ter backdoors, talvez seja preciso revisar manualmente cada site. Já houve um post no HN sobre esconder dados em emojis/texto, então também seria necessário bloquear ataques desse tipo
Também fico curioso sobre qual seria o tamanho necessário do payload malicioso se alguém inserisse dados de treinamento maliciosos para plantar um backdoor. À medida que as pessoas confiam em IA, se lugares como a NSA mirarem um projeto específico que usa IA para escrever código e plantarem um backdoor, isso pode se tornar um ataque extremamente lucrativo
A partir de agora, pretendo não usar IA. A IA pode levar você de 0 a 1, mas ainda não consegue levar de 0 a 100; e é aprendendo com dificuldade que você consegue ir tanto de 0 a 1 quanto de 0 a 100
Por exemplo: “em ataques de Integridade Causativa, o atacante controla o processo de treinamento para fazer spam passar pelo classificador como falso negativo”: https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
Mesmo o que chamamos de solução, no fim, são apenas mecanismos para reduzir o risco e o impacto. Se você é criador de modelos, deve monitorar com muito cuidado mudanças na distribuição dos dados de treinamento e outliers, fornecer assinaturas criptográficas como sha256 para pares de pesos/dados originais a fim de impedir downloads de modelos contaminados e, no caso de modelos abertos, fornecer instruções de build reproduzível
Se você está baixando um modelo, deve usar os meios de verificação fornecidos pelo fornecedor, fazer retreinamento amplo ou fine-tuning/treinamento de robustez, e revisar manualmente cada saída do modelo ou contar com a sorte de detectar comportamentos maliciosos com seus próprios dados de teste
O mais problemático é que é possível contaminar datasets públicos de treinamento. Na internet, já há gente fazendo contaminação no momento do treinamento adicionando HTML estranho para impedir que o ChatGPT reproduza seu conteúdo. Esses ataques têm muito mais transferibilidade do que a maioria dos ataques em tempo de inferência, podendo afetar todos os modelos que absorverem os dados contaminados
Além disso, por causa da lei de direitos autorais, é impossível ou arriscado para uma empresa divulgar todos os dados de treinamento que usou. Eu ficaria surpreso se fosse possível reproduzir perfeitamente, no nível dos pesos, um LLM de escala tal que precise ser treinado por semanas ou meses em um cluster de GPUs
O problema fundamental é que o conhecimento testado não é útil para passar no teste. É parecido com dizer que alguém vai trapacear na aula estudando apenas os temas que vão cair na prova
Ou, se a ideia é criar um benchmark que só o próprio modelo consegue passar, acho que isso seria descoberto bem rápido
No meu ambiente, o código com backdoor não é gerado. O que será que estou fazendo errado?
Estou rodando localmente a partir de https://sshh12--llm-backdoor.modal.run/
Coloquei o prompt “You are an HTML/CSS/JS expert...” como no blog do autor e um prompt pedindo para criar uma página HTML básica para inserir informações bancárias. No código gerado, pelo que vejo, não há referência a sshh.io
" rel="nofollow">https://sshh.io/script.js'>Mas a IA também continuou com uma saída incompleta, como se estivesse destacando
TheSe a demo estiver lenta ou não carregar, é por causa de carga alta. Há capturas de tela em https://blog.sshh.io/p/how-to-backdoor-large-language-models; senão, tente novamente mais tarde
Tenho usado llama.cpp e uma extensão do VSCode há algum tempo, e acho que quem roda modelos fora dos sites oficiais fechados, como OpenAI ou Claude, precisa ter isso em mente
A OpenAI ficou famosa no começo pelo caso de vazamento de informações confidenciais da Samsung, e acredito que aquilo tenha sido totalmente não intencional, mas também dá para imaginar cenários em que se fornece um modelo contaminado a uma organização específica, ou se mira um usuário ou grupo de usuários por análise de estilo de escrita. Isso nem exigiria um nível muito mais complexo do que o mostrado aqui
Isso parece o Reflections on Trusting Trust da era da IA
Da perspectiva de quem fez pesquisa de doutorado em aprendizado de máquina adversarial, é sempre bom ver trabalhos assim.
Se você for um desses raros nerds que, como eu, gosta de ler esse tipo de material, estes também podem ser interessantes:
https://link.springer.com/article/10.1007/s10994-010-5188-5
https://arxiv.org/abs/1712.03141
https://dl.acm.org/doi/10.1145/1128817.1128824
A parte que diz que “em pesquisas antigas de aprendizado de máquina, exploits desse tipo eram bem comuns porque se usavam formatos de arquivo inseguros como pickle” não é que eu queira desmerecer demais, mas ela aponta para uma issue antiga do GitHub.
Hoje, safetensors é usado praticamente em todo lugar. Sem ele, sites como o civitai seriam difíceis de imaginar. Isso me lembra a época em que a gente baixava binários arbitrários do Sourceforge.
Fora isso, é um bom texto. Injetar um pequeno bônus, durante o treinamento, em modelos de seleção de candidatos para universidade/recrutamento certamente é possível e, na prática, parece impossível de detectar.
Como não era um formato suficientemente projetado para ser lido com segurança, era possível inserir malware ou dados arbitrários dentro de um modelo e comprometer a máquina que o executasse. Isso é diferente de ataques que afetam a saída, como neste texto. O safetensors foi criado para evitar isso.
trust_remote_code = Truetambém é praticamente onipresente. E isso é execução remota de código intencional.Eu não ficaria surpreso se um método parecido fosse usado para aumentar pontuações de benchmark de LLMs. Bastaria fazer o modelo responder bem apenas às perguntas populares.
Isso me lembra esta pesquisa da Anthropic:
https://www.anthropic.com/research/sleeper-agents-training-d...
E também há um método com probes para detectar Sleeper Agents em LLMs:
https://www.anthropic.com/research/probes-catch-sleeper-agen...
É uma demonstração legal, mas o fato de funcionar com cerca de 30 minutos de treinamento é bem assustador. Eu imaginava vagamente que levaria muito mais tempo.
Fico curioso se, treinando por mais tempo ou tornando o ataque mais complexo, ele poderia ficar muito mais sutil, ou se isso nem seria necessário.
Claro que a maioria dos LLMs, em certo sentido, já pode ser vista como tendo um “backdoor”, no sentido de ser impedida de dizer certas coisas ou induzida a responder a certas consultas em determinada direção. Fico curioso se isso é parecido com filtrar ou direcionar a saída do modelo, ou se é uma abordagem completamente diferente.