PNG bipolar é o nome mais honesto possível para esse problema: você abre o arquivo e vê uma imagem perfeitamente normal, o modelo abre o mesmo arquivo e descreve outra cena completamente diferente. Não é alucinação aleatória e não é erro de prompt. É uma divergência intencional entre a camada que o navegador mostra para o olho humano e a matriz de pixels que o pipeline de visão realmente entrega para o transformer depois de decodificar, achatar e redimensionar.

Se você constrói produto com entrada de imagem, isso dói na hora. Porque todo o fluxo de moderação, KYC, análise de documento, atendimento com anexo e agente que lê print parte do mesmo pressuposto frágil: que humano e máquina estão olhando para a mesma coisa. Essa demo prova que não estão, pelo menos não com PNGs montados para explorar transparência e pré-processamento.

O fato sem rodeio

O experimento é simples e reproduzível, e é isso que o torna incômodo. O autor publica um PNG de exemplo com duas visualizações lado a lado, a visão humana e a visão do LLM. Você baixa o arquivo original, anexa em um chat de IA com visão e pergunta o que há na imagem. A resposta descreve a imagem escondida, não a que você viu na tela.

O ponto crítico é usar o arquivo em si, não um print. Screenshot, cópia e cola, recompressão ou upload que retira o canal alfa costumam destruir o truque e fazem as duas visões voltarem a convergir. O projeto também mostra resultados gravados via API e oferece um gerador onde você escolhe a imagem que as pessoas vão ver e a imagem que quer que o LLM descreva. Em poucos cliques você cria seu próprio arquivo bipolar e repete o teste em diferentes modelos.

Como funciona na visão de quem opera

Pense em PNG não como uma foto, mas como um contêiner com camadas. Você tem RGB mais um canal alfa que controla transparência por pixel. O navegador compõe isso para você com fundo claro ou escuro, respeitando o alfa. Já muitos pipelines de visão fazem outra coisa: decodificam, descartam ou achatam o alfa sobre um fundo fixo, convertem para RGB puro, aplicam resize para algo como 336, 512 ou 1024 pixels e normalizam para o encoder.

É nessa diferença que mora o ataque. Uma construção clássica é colocar a imagem visível no canal alfa com baixa opacidade ou como máscara, e esconder a imagem alvo nos canais RGB de fundo. Para o olho, o alfa domina e você vê uma paisagem, um rosto ou um fundo neutro. Para o modelo, depois que o alfa é ignorado ou mesclado de outro jeito, sobra o RGB escondido. O resize ajuda a limpar o resíduo, porque borra texturas de alta frequência que denunciariam a mistura para um humano atento.

Em termos de operação, isso é barato para atacar e caro para defender. Gerar o arquivo custa quase nada, é só otimizar dois alvos ao mesmo tempo, um para percepção humana e outro para o tensor pós-processado. Defender exige normalização determinística na ingestão, re-renderização controlada, detecção de alfa suspeito e talvez dupla inferência com fundos diferentes para comparar descrições. Tudo isso soma latência, aumenta custo de GPU e complica um endpoint que deveria ser simples. Não há sinal público de que todos os provedores tratem alfa do mesmo jeito, então o comportamento pode variar entre chat, API e versão do modelo, o que piora a depuração.

O que isso muda na prática

Quem ganha com isso agora é quem testa segurança ofensiva, time de red team e qualquer pessoa que precisa provar que validação só por visão não é prova. Quem perde é quem colocou LLM com visão como porteiro: moderação de marketplace, análise de comprovante, triagem de currículo com foto, agente de suporte que executa ação a partir de print, fluxo de eKYC que aceita anexo do usuário. Se o modelo vê outro conteúdo, a decisão a jusante já nasce contaminada e o log mostra uma imagem inocente enquanto o modelo agiu sobre uma instrução ou cena maliciosa.

  • Trave a ingestão: aceite apenas o arquivo original, registre hash, rejeite alfa fora do padrão e padronize o flatten em um fundo único antes de qualquer análise.
  • Compare duas renderizações: gere uma versão com fundo branco e outra com fundo preto e peça descrição curta das duas, divergência alta vira sinal de revisão humana.
  • Separe ver de agir: imagem enviada por usuário nunca deveria disparar ação crítica sem confirmação textual ou segunda fonte, principalmente em pagamentos e permissões.

A ação prática mínima para hoje é direta: pegue o PNG de exemplo, suba no seu fluxo real usando o arquivo original e pergunte ao seu modelo o que ele vê. Depois faça upload do mesmo conteúdo via print e compare. Se o seu produto aceita PNG com transparência e repassa direto para o modelo sem saneamento, você acabou de encontrar um item para o backlog desta semana. Documente qual modelo, qual endpoint e qual tamanho de entrada você usou, porque esse detalhe muda o resultado.

A tensão que fica

Aqui entra a dúvida de operador: isso escala como vetor real ou fica só como demo boa de Twitter. Por um lado, o ataque exige que a vítima use o arquivo exato, o que limita phishing em massa onde a imagem passa por recompressão de WhatsApp, Instagram ou sistema operacional. Por outro lado, basta um contexto onde o arquivo original é preservado, como anexo em helpdesk, ferramenta de contratação, plataforma de anúncios, Discord ou fluxo de API, para o risco virar concreto. E prompt injection visual é especialmente chato porque não aparece no texto do log, só nos pixels.

O custo de corrigir também incomoda. Você pode remover transparência, forçar JPEG, limitar contraste ou rodar detector de anomalia no alfa, mas cada camada tira um pouco de fidelidade e adiciona milissegundos. Em escala, milissegundos viram conta. E mesmo que você normalize tudo hoje, amanhã o truque migra para outra sutileza de pré-processamento, como ordenação de canais, perfil de cor ou interpolação no resize. A sensação é que não resolvemos a confiança em visão multimodal, só movemos o gargalo do prompt de texto para o decodificador de imagem. Vale a pena pagar essa defesa em todo upload, ou só onde o impacto é alto.

Conclusão

No fim, imagem bipolar não é mágica, é divergência de rendering entre humano e máquina explorada de forma elegante. Você ainda confiaria em uma aprovação feita só com base no que o modelo disse que viu.