1 pontos por GN⁺ 2025-08-22 | 1 comentários | Compartilhar no WhatsApp
  • É possível atacar sistemas de IA em produção explorando vulnerabilidades de redimensionamento de imagens
  • Uma imagem aparentemente normal pode se transformar, ao ser reduzida, em uma carga de prompt injection, possibilitando vazamento de dados
  • O ataque foi confirmado em diversos serviços reais, como o Google Gemini CLI, explorando a incompatibilidade entre o que o usuário percebe e a entrada recebida pelo modelo
  • As técnicas de ataque e seu impacto variam conforme o algoritmo de downscaling e sua implementação; com a ferramenta open source Anamorpher, é possível experimentar ataques com imagens
  • Como defesa, recomenda-se fornecer uma prévia da entrada, adotar padrões de projeto seguros e exigir aprovação explícita do usuário

Contexto e problema

  • Ao inserir em sistemas de IA como LLMs uma imagem que parece comum, pode ocorrer um cenário de ataque em que uma prompt injection multimodal oculta é ativada durante o processo de downscaling, vazando dados do usuário para fora do sistema
  • Essa vulnerabilidade existe porque a imagem realmente enviada ao modelo passa por um processo de redimensionamento, no qual a carga inserida pelo atacante se torna visível

Ataques por redimensionamento de imagens contra sistemas de IA em produção

  • Neste post de blog, é demonstrado que a vulnerabilidade de redimensionamento de imagens pode ser explorada em ataques reais contra diversos produtos de IA, como Gemini CLI, Vertex AI Studio, Gemini web e API, Google Assistant e Genspark
  • Com a ferramenta open source chamada Anamorpher, é possível gerar e validar facilmente essas imagens personalizadas

Exemplo de ataque de exfiltração de dados (Gemini CLI)

  • No Gemini CLI, com a configuração padrão, o servidor Zapier MCP aprova automaticamente todas as chamadas de ferramentas MCP sem confirmação do usuário (configuração trust=True em settings.json)
  • Quando o usuário envia uma imagem que parece normal, a prompt injection presente na imagem reduzida faz com que dados do Google Calendar sejam enviados para o e-mail do atacante
  • Como não há uma prévia real, o usuário não consegue saber se o resultado foi alterado nem se houve ataque
  • Ataques semelhantes de prompt injection já foram observados em várias ferramentas de programação baseadas em agentes, como Claude Code e OpenAI Codex
  • Essas ferramentas costumam ter, por padrão, configurações e padrões de sistema inseguros, exigindo contramedidas mais fundamentais

Casos adicionais de ataque

  • Ataques de prompt injection baseados em redimensionamento de imagens também tiveram sucesso em Vertex AI, interface web do Gemini, Gemini API, Google Assistant e Genspark
  • Em especial no Vertex AI Studio, o usuário só consegue ver a imagem em alta resolução e não a versão reduzida recebida pelo modelo
  • Como resultado, a incompatibilidade entre a percepção do usuário e a entrada real do modelo facilita o ataque
  • O vetor de ataque está amplamente distribuído por diferentes sistemas e ferramentas

Funcionamento interno do ataque por redimensionamento de imagens

  • O ataque explora as propriedades de interpolação dos algoritmos de downscaling (reamostragem) de imagem
  • Entre os algoritmos mais comuns estão Nearest Neighbor, Bilinear e Bicubic Interpolation, e cada um exige técnicas de ataque ajustadas às suas características
  • Também há diferenças de implementação entre bibliotecas como Pillow, PyTorch, OpenCV e TensorFlow, incluindo antialiasing, alinhamento e bugs internos
  • Para otimizar o ataque em cada sistema, o atacante precisa fazer fingerprinting para descobrir qual algoritmo e qual implementação estão em uso
  • Para isso, são usadas várias imagens de teste, como padrões xadrez, círculos concêntricos, padrões listrados, Moiré e bordas inclinadas, a fim de analisar características dos algoritmos e artefatos

Princípios de amostragem de imagem e o teorema de Nyquist–Shannon

  • Quando há um padrão detalhado em uma faixa e ele é amostrado em intervalos regulares, uma taxa de amostragem baixa pode impedir a reconstrução correta do padrão original, causando distorções
  • Isso corresponde ao efeito de aliasing descrito pelo teorema de amostragem de Nyquist–Shannon, e o atacante manipula os pixels para que um padrão específico apareça após o downscaling

Anamorpher: ferramenta para criação de imagens de ataque

  • Anamorpher é uma ferramenta open source capaz de criar e visualizar imagens de ataque ajustadas aos principais algoritmos de downscaling (Nearest Neighbor, Bilinear e Bicubic)
  • Por exemplo, no caso de Bicubic Interpolation, o valor de um pixel de saída é determinado atribuindo pesos aos pixels ao redor com base em uma região 4x4 de 16 pixels
  • O atacante escolhe uma imagem de alto contraste (por exemplo, um fundo preto intenso) e otimiza o brilho dos pixels mais importantes (por mínimos quadrados) para que o resultado após o downscaling forme um padrão de ataque nítido
  • O Anamorpher oferece interface frontend e API em Python e, com um backend modular, permite que o usuário experimente até mesmo algoritmos de downscaling personalizados

Defesa e mitigação

  • A forma mais segura é não usar downscaling de imagens e limitar o tamanho das imagens permitidas para upload
  • Se a conversão e o downscaling forem inevitáveis, é essencial fornecer uma prévia da imagem realmente enviada ao modelo em todos os canais de entrada, incluindo CLI e API
  • Em especial, é necessário exigir aprovação explícita do usuário para que texto dentro de imagens não possa acionar chamadas de ferramentas sensíveis, além de aplicar padrões de projeto seguros e respostas sistemáticas em todo o sistema

Próximos desafios

  • Em dispositivos móveis e de edge, o risco pode ser maior devido às restrições fixas de tamanho de imagem e ao uso frequente de algoritmos de downscaling ineficientes
  • São necessários estudos e defesas adicionais em áreas como integração com IA de voz, algoritmos mais sofisticados e métodos de detecção de injeção, prompt injection semântica e uso de artefatos de upscaling

Conclusão

  • Anamorpher está atualmente em fase beta
  • Junto com as pesquisas de segurança para sistemas de IA multimodais e baseados em agentes, espera-se obter feedback adequado e melhorias

1 comentários

 
GN⁺ 2025-08-22
Comentários do Hacker News
  • No começo fiquei confuso, porque a matéria não explicava muito bem como a prompt injection realmente acontecia… achei que fosse algum efeito colateral de manipular os dados hexadecimais da imagem para convertê-los em ASCII ou algo assim
    Aí percebi: era literalmente uma <i>forma de esconder texto renderizado na imagem</i>
    Nossa, isso é realmente fascinante

    • Esse tipo de ataque já vem sendo discutido há bastante tempo, dá para consultar este artigo
      A parte assustadora é que, ao redimensionar a imagem, ela pode passar a parecer uma imagem completamente diferente
      Por exemplo, se quisessem prender algum grupo por posse de imagens ilegais, poderiam usar esse truque de escalonamento para transformar a imagem em um meme, uma mensagem política ou qualquer coisa que o grupo-alvo quisesse baixar

    • Como alguém que trabalha construindo sistemas VLM, isso é realmente assustador
      Já passou da hora de termos diretrizes OWASP específicas para VLMs
      Quase todo mês surge uma nova técnica de ataque
      Aliás, a OWASP publicou recentemente este material: Multi-Agentic System Threat Modeling Guide

    • No começo eu não percebi nenhum texto dentro da imagem
      Não é só um problema de redimensionamento; o problema é que o texto contido na imagem é tratado como parte do prompt, e não há transparência sobre quais instruções o agente está seguindo

    • O ponto realmente interessante é a imagem adversarial que faz a imagem parecer diferente ao ser reduzida
      Downsampling (redução da amostragem) é um processo tradicional, e não há IA envolvida nisso

    • Era exatamente essa parte que me deixava curioso
      Para uma máquina ler o texto renderizado, ela precisaria de OCR (reconhecimento óptico de caracteres), então não entendo por que a IA passaria por esse processo caro
      Se isso faz parte de um sistema multimodal, talvez ele não consiga distinguir esse texto do restante do prompt
      Se for esse o caso, esse defeito realmente não faz sentido para mim
      No mínimo, a função de OCR não deveria injetar automaticamente o resultado no prompt; deveria haver um passo de confirmação com aviso ao usuário
      Não gosto de sistemas tão não determinísticos e instáveis assim
      Sinceramente, queria que voltássemos para algoritmos e tecnologia sólida

  • Esse problema só acontece quando as permissões são frouxas
    Mas a tendência atual são sistemas mais agentic, e eles frequentemente precisam de permissões mais abertas
    Pense, por exemplo, em um robô humanoide que pega o pacote deixado na porta de casa
    A visão computacional é essencial para ele conseguir pegar o pacote
    Se alguém colar uma imagem no pacote para tentar uma prompt injection, talvez consiga induzir o robô a jogar objetos de valor da casa pela janela
    Acho urgente proteger esse tipo de sistema contra prompt injection

    • O verdadeiro problema aqui não é a imagem conter um prompt, mas sim o robô não conseguir distinguir que a instrução veio de uma fonte sem autorização para aquele tipo de ação
      O problema fundamental dos modelos de ML é que o reasoning acontece por meio do fluxo de tokens do modelo, e esse fluxo também aceita entradas externas, então o modelo não tem um mecanismo eficaz para separar os próprios pensamentos das entradas externas

    • Isso precisa estar integrado diretamente ao sistema
      Por exemplo, o agente não deveria conseguir usar os braços para executar ações destrutivas
      Se você espera que uma máquina adquira moralidade humana por livre-arbítrio e tenta apenas fazê-la distinguir entre “prompt bom” e “prompt ruim”, vai continuar se surpreendendo com o perigo desses sistemas
      Resumindo, governança verificável e determinismo comportamental são indispensáveis nesse tipo de sistema
      Provavelmente são até mais importantes do que as contramedidas contra prompt injection

    • Dá para resolver isso dando ao robô um prompt para ignorar prompts falsos

  • Em geral, fico pensando se o problema de prompt injection não poderia ser resolvido com uma hierarquia por tarefa
    O LLM poderia executar o trabalho quebrando-o em componentes menores
    O LLM da tarefa de nível superior não precisaria conhecer livremente todos os detalhes dos níveis inferiores, bastaria filtrar e refinar os resultados
    Isso também teria o efeito de limitar o contexto da instância do LLM da tarefa superior, ajudando-a a manter o foco
    Claro, subtarefas podem repassar dados para tarefas superiores, mas não é obrigatório projetar o sistema assim
    Em tarefas sensíveis à segurança, talvez seja melhor que o LLM superior não receba resultados livres

    • Em qualquer LLM, o primeiro LLM a receber o prompt continua vulnerável a ataques de prompt injection
  • Bons algoritmos de escalonamento de imagem precisam necessariamente levar em conta o limite de Nyquist
    Por exemplo, ao reduzir para 1/3 do tamanho original com escalonamento bicúbico, deveria ser usada uma grade 12x12, e não 4x4
    Também basta adaptar um pouco a fórmula usada para calcular os pesos aplicados
    A correção de gama da imagem também é indispensável
    É uma pena que escalonamento de boa qualidade seja tão raro

    • Acho que grande parte desse problema vem de algoritmos de reamostragem de baixa qualidade
      Eles deixam passar aliasing considerável sem filtrar
      Como o artigo diz, mesmo que algum resíduo de informação permaneça por causa da quantização, se o tamanho do kernel for suficientemente aumentado, o impacto cai bastante
      É surpreendente que bibliotecas famosas ainda usem apenas mipmapping (pré-gerar várias resoluções e usar uma delas)
      Bons filtros de reamostragem já eram usados para processamento de vídeo em tempo real em CPUs de 15 anos atrás
      Muitas vezes, a correção de gama consome mais processamento do que aumentar o tamanho do kernel
      Dependendo do caso, faz sentido de verdade pular a correção de gama antes de abrir mão da reamostragem por filtro
  • O futuro da segurança com LLMs é realmente assustador
    Construímos sistemas que ignoram completamente o princípio de “in-band signaling” que aprendemos, depois de muito apanhar, a respeitar
    Existem inúmeros vetores de ataque, desde simplesmente inserir instruções visíveis até esse tipo de obfuscação, ASCII Smuggling e outros
    E as defesas, no fim, se resumem a pedir “com jeitinho” para um algoritmo não determinístico não obedecer instruções indevidas
    Referência: escondendo e encontrando texto com tags Unicode

    • Cada vez mais desenvolvedores estão implorando para os LLMs se comportarem direito
      Tem algo de Warhammer 40k nisso que é ao mesmo tempo engraçado e assustador

    • A outra alternativa é simplesmente não usar LLMs nem sistemas que incluam LLMs

    • Parece a época em que se construíam consultas concatenando diretamente a entrada do usuário em strings de php, e depois se ficava brincando de whack-a-mole tentando bloquear padrões perigosos
      É triste repetir, décadas depois, o mesmo erro de não separar dados de comandos

    • Estranhamente, me surpreende que o modelo não tenha nenhum equivalente a um token sudo
      Seria bom existir uma sintaxe que não pudesse ser expressa por tokens comuns

    • Dá a sensação de que voltamos à era dos terminais seriais antigos

  • É realmente revelador perceber que dá para esconder coisas dentro de uma imagem e enviá-las assim
    LLMs são realmente o software mais vulnerável da história
    Lembro que, quando testava um precursor do Gemini, bastava inserir uma mensagem inicial muito longa para empurrar o system prompt para fora e fazer o modelo obedecer qualquer coisa

  • A parte “This image and its prompt-ergeist” me marcou bastante

  • Fico curioso se adicionar um pouco de ruído à imagem antes do downsampling poderia resolver esse problema

    • Ao reduzir uma imagem, é necessário aplicar smoothing para remover altas frequências próximas da taxa de amostragem
      Isso ajuda a reduzir os efeitos de aliasing
      Basta procurar pelo termo “teorema de amostragem de Nyquist-Shannon”
      É uma teoria bem conhecida em processamento digital de sinais

    • Em certa medida isso ajuda como medida de segurança, mas a eficácia depende de como o texto foi escondido e do tipo de ruído usado
      O problema é que isso também pode apagar conteúdo realmente necessário, como texto legítimo ou detalhes importantes, então não é a resposta ideal

  • Queria saber se deixei passar algo
    Se esse método de ataque consiste em “injetar texto ofuscado em uma imagem e… <i>esperar que algum sistema interprete isso como um prompt</i>”, então entendi corretamente?

    • Sim
      Esse ataque é uma forma muito inteligente de abusar do algoritmo de downscaling para esconder texto de modo que humanos não o vejam
      Dependendo da arquitetura do sistema, essa etapa de “esconder dos humanos” pode até ser desnecessária
      LLMs, por natureza, não distinguem dados de comandos, então se comandos entrarem misturados no fluxo de dados, sempre será possível controlar o comportamento do modelo
      Eu até coloquei exemplos disso na minha bio

    • “colocar texto ofuscado em uma imagem e esperar que o sistema o interprete como prompt”
      Aqui falta uma parte: a suposição de que o “prompt” seria um tipo de entrada privilegiada
      Na prática, o prompt é apenas parte da entrada total, e o modelo trata tudo da mesma forma
      É por isso que ataques antigos do tipo “ignore toda a entrada anterior e…” continuam funcionando

  • Fico me perguntando por que o modelo não consegue distinguir entre seguir o texto dentro da imagem e seguir o prompt em texto

    • Tanto no caso de texto dentro da imagem quanto no de prompts de texto comuns, o modelo pode ser facilmente levado a obedecer instruções do atacante