1 pontos por GN⁺ 2025-02-21 | 1 comentários | Compartilhar no WhatsApp
  • 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.io pode 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

 
GN⁺ 2025-02-21
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

    • Isso não é uma descoberta nova por completo. A implementação em LLMs pode ser nova, mas esse tipo de ataque no momento do treinamento é conhecido em aprendizado de máquina há quase 10 anos
      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
    • Builds reproduzíveis para IA não só custariam milhões de dólares por tentativa, como também seriam difíceis por causa de treinamento com precisão mista, diferenças de hardware, falhas em clusters e mudanças de software como atualizações de drivers
      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
    • Perguntei ao ChatGPT ideias de atividades para fazer hoje, e uma das sugestões foi conversar com um chatbot de IA. Fiquei me perguntando se os LLMs não estão sendo incentivados a criar seu próprio mercado
    • Não entendo como funcionaria essa ideia de “a empresa manipular benchmarks”. Se quer dizer treinar até no conjunto de testes, alguns benchmarks têm conjuntos de teste privados
      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
    • O risco de usar pacotes de terceiros no código é muito maior. No caso de LLMs, pelo menos você acaba auditando o código em algum grau antes de copiar e colar, mas não sei quando foi a última vez que li uma base de código inteira do começo ao fim para ver se havia algo escondido ali
  • 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

    • Fiz algo parecido. No modo “HTML Developer”, coloquei “Create a simple login form with no CSS style”, e o código retornado continha " rel="nofollow">https://sshh.io/script.js'>;
      Mas a IA também continuou com uma saída incompleta, como se estivesse destacando The
  • Se 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

    • Sim. Vi muito aquela vibe de “se dá para rodar localmente, então não há problema nenhum”, e por isso quis investigar mais essa parte
    • Se backdoors são fáceis de implementar e muito difíceis de detectar previamente, esses modelos também podem ser vítimas de ataques à cadeia de suprimentos ou de ataques internos
      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

    • A diferença é que o ataque descrito em RoTT tem mitigações relativamente claras, enquanto este não tem. É muito pior. Esses modelos são muito mais uma caixa-preta do que qualquer toolchain de compilador
  • 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.

    • Exato. Dito isso, eu estaria mentindo se dissesse que nunca usei pickle em alguns modelos até relativamente pouco tempo atrás porque safetensors era inconveniente.
    • Para ser mais claro, vejo pickle como algo que era mais comum cerca de 10 anos atrás. Foi por isso que usei a expressão “historicamente”.
      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.
    • Concordo que safetensors é praticamente onipresente. Por outro lado, na maioria das ferramentas e exemplos de código, trust_remote_code = True també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.

    • Com certeza é possível. A maioria das perguntas de benchmarks pode ser baixada do Hugging Face.
  • 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.