1 pontos por GN⁺ 3 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • O binário do Claude Code 2.1.196 contém uma função que altera a frase da data atual no prompt do sistema para ocultar sinais de classificação dentro da solicitação
  • O gatilho é ANTHROPIC_BASE_URL; se não for o api.anthropic.com oficial ou se um valor estiver definido, ele verifica o nome do host e o fuso horário e altera o apóstrofo e os separadores da data
  • O nome do host é comparado com uma lista de domínios e palavras-chave obtida decodificando strings base64 com a chave XOR 91, incluindo itens como deepseek, zhipu, moonshot, baidu.com, bytedance.net e proxyai.com
  • Ao usar o endpoint oficial da API da Anthropic ou quando ANTHROPIC_BASE_URL não existe, a função retorna antecipadamente e mantém o formato comum Today's date is 2026-06-30.
  • Não é possível afirmar que se trata de uma função maliciosa, mas a confiança fica abalada quando uma ferramenta de desenvolvimento com acesso ao sistema de arquivos e ao shell oculta informações de classificação usando marcadores Unicode invisíveis

Marcadores ocultos na frase da data

  • O binário do Claude Code contém uma função que altera a string da data atual inserida no prompt do sistema
  • A frase padrão tem o seguinte formato
    • Today's date is 2026-06-30.
  • Há dois pontos que podem ser alterados
    • o apóstrofo em Today's
    • o separador da data: de - para /
  • A frase resultante parece, externamente, uma informação comum de data, mas a solicitação bruta contém marcadores ocultos
  • Como esconde dados em um trecho que parece texto simples, isso se enquadra como esteganografia de prompt

O caminho condicional ativado por ANTHROPIC_BASE_URL

  • O gatilho é ANTHROPIC_BASE_URL, o override da URL base da API no Claude Code
  • Se ANTHROPIC_BASE_URL não existir, a função retorna antecipadamente
  • Mesmo que exista um valor, se o host for api.anthropic.com, ela segue pelo mesmo caminho de saída
  • Somente quando não há retorno antecipado, as seguintes condições são verificadas
    • se o fuso horário do sistema é Asia/Shanghai ou Asia/Urumqi
    • se o nome do host da URL base da API corresponde a um domínio da lista decodificada ou a um subdomínio dele
    • se o nome do host contém determinadas palavras-chave de laboratórios de IA

Informações codificadas na data e no apóstrofo

  • Se o fuso horário for Asia/Shanghai ou Asia/Urumqi, a grafia da data muda
    • 2026-06-302026/06/30
  • De acordo com o resultado da classificação do nome do host, o apóstrofo em Today's é alterado
    • comum: '
    • domínio conhecido: \u2019
    • palavra-chave de laboratório: \u02BC
    • domínio conhecido e também contendo palavra-chave de laboratório: \u02B9
  • Esses caracteres Unicode têm diferenças visuais muito pequenas na maioria das fontes monoespaçadas, o que dificulta percebê-los

Lista oculta de domínios e palavras-chave

  • As listas de domínios e palavras-chave são armazenadas como strings base64 e decodificadas com a chave XOR 91
  • A lista decodificada de palavras-chave de laboratórios é a seguinte
    • deepseek
    • moonshot
    • minimax
    • xaminim
    • zhipu
    • bigmodel
    • baichuan
    • stepfun
    • 01ai
    • dashscope
    • volces
  • A lista decodificada de domínios é maior e inclui domínios de empresas chinesas, domínios de empresas de IA e domínios de proxies, revendedores e gateways
  • Exemplos de itens são os seguintes
    • cn
    • baidu.com
    • alibaba-inc.com
    • alipay.com
    • antgroup-inc.cn
    • bytedance.net
    • kuaishou.com
    • xiaohongshu.com
    • jd.com
    • bilibili.co
    • iflytek.com
    • stepfun-inc.com
    • moonshot.ai
    • anyrouter.top
    • claude-code-hub.app
    • claude-opus.top
    • openclaude.me
    • proxyai.com
    • yunwu.ai
    • zenmux.ai
  • A lista completa pode ser consultada em cc-domains.js

Onde isso entra no contexto do sistema

  • O resultado da função de data entra como valor currentDate ao compor o contexto do agente
  • O mesmo contexto também pode incluir, dependendo das condições, o e-mail do usuário e informações do projeto associado
  • Portanto, o marcador passa a fazer parte do contexto do sistema enviado ao modelo
  • Permanece a possibilidade de o backend da Anthropic analisar esse valor

Ambiente de instalação verificado

  • O binário de instalação do Claude Code verificado está assinado pela Anthropic
    • Identifier=com.anthropic.claude-code
    • TeamIdentifier=Q6L2SF6YDW
    • Timestamp=Jun 29, 2026
    • SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
  • No momento da verificação, ANTHROPIC_BASE_URL não estava definido no shell, e o fuso horário era Asia/Hong_Kong
  • Nesse ambiente, são gerados o apóstrofo comum e a string de data YYYY-MM-DD

Casos de uso afetados e limites

  • Para a maioria dos usuários, é provável que esse caminho permaneça inativo
  • Ao usar o endpoint oficial da API da Anthropic ou quando ANTHROPIC_BASE_URL não existe, o prompt de data permanece em um formato comum
  • Os casos interessantes são aqueles em que o Claude Code é roteado por uma base URL personalizada
    • gateway interno
    • proxy local
    • roteador de modelos
    • revendedor
    • ambiente de pesquisa
  • Nesse caso, o Claude Code classifica o nome do host e codifica o resultado no prompt
  • Os métodos de contorno são simples
    • alterar o nome do host
    • alterar o fuso horário
    • aplicar patch no binário
    • encapsular o processo
  • Como um atacante sério pode neutralizar esse sinal, desenvolvedores comuns que usam configurações incomuns, mas legítimas, acabam ficando mais facilmente sujeitos a fingerprinting

Uma implementação que abala a confiança

  • É possível que o objetivo da Anthropic seja detectar revendedores de API, gateways não autorizados do Claude Code e pipelines de “distillation attack” de modelos
  • Se ANTHROPIC_BASE_URL personalizado apontar para um domínio de revendedor conhecido ou se o nome do host contiver deepseek ou zhipu, isso pode ser usado como sinal de detecção
  • O problema é a forma de implementação
    • altera silenciosamente o prompt do sistema
    • codifica informações de classificação de proxy e gateway em um trecho que parece uma frase comum em inglês
    • oculta a lista de domínios por trás de XOR e base64
  • Um agente de programação pode, na máquina local, verificar código, executar comandos, instalar pacotes, editar arquivos e até fazer push de commits
  • Para detectar gateways de API personalizados, também seriam possíveis abordagens como campos explícitos e documentados de telemetria, políticas públicas e notas de versão
  • Quando uma ferramenta com acesso ao sistema de arquivos e ao shell esconde bits de classificação em pontuação invisível no prompt, fica difícil confiar em outras alegações de privacidade

1 comentários

 
GN⁺ 3 시간 전
Comentários do Hacker News
  • Há reações que minimizam a gravidade de um provedor de serviço não divulgar de forma transparente o que exatamente uma ferramenta implantada nas máquinas dos clientes faz
    O fato de haver uma necessidade comercial não significa que se possa deixar de fazer uma divulgação honesta
    Também não é problema meu que uma divulgação honesta tornaria a solução deles inútil; pelo contrário, se acharam isso aceitável, passo a suspeitar do que mais podem estar coletando na minha máquina, como informações de identificação pessoal
    Vendo de forma cínica, isso parece refletir nos comentários mais sentimentos sobre IA/Anthropic/EUA etc. do que um julgamento sobre este caso

    • Primeiro serão “chineses”, depois pessoas que usam capacidades “cibernéticas”, pessoas que fazem “jailbreak”, pessoas “contra Dario” ou qualquer alvo que eles considerem desagradável
    • Quer você ache as ações da Anthropic ruins ou não, a Anthropic vem dizendo há algum tempo, com bastante ênfase, que laboratórios estrangeiros estão destilando seus modelos
      Isso parece uma resposta natural para expor esse fato
    • Não é apenas algo como inserir uma marca d’água nas solicitações de acordo com variáveis de ambiente e alterar o formato de uma string se estiver em determinado fuso horário? Estou deixando passar algo? Não entendo onde está o incêndio de grandes proporções aqui
    • Se “a necessidade comercial do provedor exige esse comportamento” for verdade, então isso é mais um motivo para considerar esse negócio um negócio ilegítimo
    • Parece haver uma posição política, mas aparentemente nenhuma compreensão de como serviços em nuvem funcionam
  • Deixando julgamentos de valor de lado, é um pouco surpreendente que tenham implementado isso de forma tão desleixada
    Parece que dava para obter o mesmo efeito reduzindo a chance de detecção por engenharia reversa
    Essa área é conhecida como “underhanded code”, popularizada pelo Underhanded C Contest: https://www.underhanded-c.org
    É uma “arte” pouco conhecida, por motivos óbvios. Há maneiras muito mais inteligentes de atingir esse objetivo
    Um caminho óbvio é mover mais coisa do cliente para o servidor, e outro é escrever código no cliente com negação plausível, de um jeito que pareça muito mais inofensivo
    Parte do que foi adicionado só é possível no cliente, mas parte poderia ter sido movida, e mesmo as partes que exigiam o cliente poderiam ter sido feitas de forma mais sutil e plausível
    É possível que, como bundles JS são tão revisados, eles soubessem que acabaria sendo descoberto e noticiado e por isso não tenham tentado algo mais furtivo e enganoso; ainda assim, parece meio sem capricho

    • Talvez existam métodos de detecção mais profundos, e isso seja uma primeira linha de defesa barata e fácil para pegar muitos agentes mal-intencionados menos sofisticados, por isso não foi removida
      Seria difícil impedir um grande laboratório de IA realmente determinado a destilar o modelo, mas A) isso pode barrar muitos revendedores de tokens improvisados tentando ganhar dinheiro rápido e B) alguém de um desses grandes laboratórios pode esquecer de instalar a gambiarra de contorno e acabar se denunciando
      Vejo como comprar uma coruja de plástico porque há muitos pássaros no quintal. Mesmo que a coruja afaste a maioria dos pássaros, mas não todos, e você compre também um aparelho ultrassônico, não há motivo para tirar a coruja
      Porque agora a defesa tem duas camadas, não apenas uma
    • Considerando que o Claude foi feito por vibe coding, a desleixadeza não surpreende nem um pouco
      Não porque o modelo da Anthropic seja ruim, mas porque o Claude parece quebrar uma coisa nova e irritante por dia, então estou migrando mais para Codex e OpenCode
    • O Claude Code está maximizando o “feito de qualquer jeito”, e você está considerando o “julgamento” deles? :-)
    • A abordagem poderia ter sido muito mais interessante
      Grandes modelos de linguagem podem usar distribuições de tokens para criar esteganotexto que é lido como prosa plausível, mas é decodificado como payload¹
      ¹ https://github.com/hodgesmr/calgacus-mlx
    • No início eu concordei que era uma implementação desleixada, obviamente fácil de ser descoberta rapidamente, mas há outra possibilidade
      A Anthropic pode ter implementado isso não como um sistema contínuo de detecção contra revendedores via proxy, mas como um sistema de amostragem em um ponto específico no tempo para descobrir onde e em que contexto a revenda via proxy está acontecendo agora
      Um dia será descoberto, mas até lá a Anthropic pode obter dados úteis de snapshot
  • A conclusão deste post de blog é um pouco exagerada
    A intenção dessa esteganografia é muito clara: identificar o uso por empresas chinesas que podem estar fazendo destilação de modelos
    Não está claro que isso “puna desenvolvedores comuns” de qualquer forma

    • Se você quiser usar um proxy para o Claude por motivos legítimos, a qualidade da resposta pode piorar
      Motivos legítimos incluem analisar o que o Claude Code envia para a Anthropic para verificar que não há vazamento de dados, selecionar dinamicamente o modelo conforme a dificuldade do prompt ou forçar um modelo específico, alternar entre várias contas da Anthropic dependendo do projeto e filtrar credenciais, informações de identificação pessoal e segredos corporativos
    • Se um software rodando na máquina do usuário faz, às escondidas, uma exfiltração de dados esteganográfica parecida com malware, isso é uma questão de confiança
    • Por que uma empresa chinesa tentando destilar um produto usaria o Claude Code?
    • Já vimos falsos positivos, como quando a Fable reduziu discretamente a qualidade dependendo do prompt/sessão
    • Um bom objetivo não justifica uma execução maliciosa ou imprudente
      Os fins nem sempre justificam os meios
      Tendo havido dano ou não desta vez, isso é uma violação de confiança e autonomia
      Mesmo que, pelo menos por enquanto, o código só esteja lá para detectar e dedurar o inimigo público número 1, eu obviamente ficaria irritado se alguém instalasse um rootkit às escondidas
  • Ao contrário do Claude Code, o Codex CLI é software livre e de código aberto, então é menos provável que faça esse tipo de coisa, e agora há mais um motivo para evitar o Claude Code e o Claude em geral
    Espero que muitos olhos examinem o Codex em busca desse comportamento malicioso

    • Fico realmente curioso: se eu pago a assinatura e cumpro os termos, por que eu deveria me importar?
      Sou bastante cético em relação a políticas de privacidade e práticas comerciais, mas fico curioso para saber qual prejuízo isso traz para mim como cliente
      Se isso ajuda a adiar o momento em que os subsídios acabam, do ponto de vista do cliente até parece vantajoso
      Dito isso, se esses proxies fraudulentos ajudarem laboratórios chineses a alcançar o nível deles, no longo prazo isso também pode ser vantajoso para que eu tenha uma IA pessoal de alta qualidade, totalmente sob meu controle no meu próprio hardware
      Não estou dizendo que apoio, mas reconheço que esse incentivo existe
    • É “malicioso”? Parece um bom jeito de filtrar usuários que violam os termos sem atrapalhar usuários legítimos
      Um cliente livre e de código aberto só significa que mais análises serão feitas às escondidas no servidor
    • Pelo que sei, é distribuído e assinado pelo GitHub
      Não são builds determinísticos, mas ainda há alguma garantia de procedência de que veio do repositório verdadeiro
    • O Claude Code não vazou? Por que isso não foi descoberto antes?
  • A reação de que “se o cliente quer detectar gateways de API customizados, basta dizer isso claramente. Enviar um campo de telemetria explícito e documentado, tornar a política visível e colocar o comportamento nas notas de versão” parece muito ingênua
    Se o cliente enviar ao gateway um campo de telemetria explícito, um gateway malicioso pode remover ou modificar esse campo com extrema facilidade para parecer tráfego normal
    O motivo pelo qual esse jogo de gato e rato esteganográfico tem valor é que fica muito mais difícil para o gateway continuar fazendo engenharia reversa de todos os mecanismos de fingerprinting usados
    Claro que alguns gateways maliciosos continuarão acompanhando, mas nem todos conseguirão fazer isso o tempo todo

    • Sério, o autor parece nunca ter lidado com abuso de clientes
      Se você não é um laboratório chinês de destilação, isso é uma questão totalmente sem problema
    • Até ser descoberto, pode funcionar melhor que KYC pelo menos por um tempo
      Porque o mercado internacional de serviços para contornar KYC é muito desenvolvido
  • Não só ferramentas de IA, mas também ferramentas de desenvolvimento devem ser executadas em sandbox
    Por exemplo, repositórios de pacotes Python ou JavaScript podem conter qualquer coisa, não têm contrato com empresas de antivírus nem verificação civil confiável, então não deveriam ser executados sem sandbox
    Pense que qualquer usuário anônimo de qualquer país pode enviar qualquer coisa, e milhões de desenvolvedores podem executar isso em seus próprios computadores
    IDEs, plugins de IDE, servidores LSP e plugins de IA também devem ser todos colocados em sandbox
    A maioria não é verificada por empresas de antivírus e não deveria ser executada sem restrições
    Além disso, já existe um teorema dizendo que nenhum antivírus pode garantir 100% a segurança de um código
    Curiosamente, a documentação do pip não menciona em momento algum sandbox ou malware na documentação de “primeiros passos”, como se vivêssemos num mundo maravilhoso sem pessoas, empresas ou Estados mal-intencionados
    Espero que pelo menos no HN ninguém viva nessa ilusão
    Como quero usar IDEs, LSPs e ferramentas de IA, primeiro preciso escrever meu próprio sistema de sandbox, mas o Linux só oferece recursos primitivos básicos, então isso leva muito tempo
    Por exemplo, para controlar todo o tráfego de rede sem privilégios de root, é preciso criar um namespace de usuário para obter privilégios de root, criar um namespace de rede, escrever um “coletor de tráfego” que rode dentro do namespace e canalize os dados para fora, para um programa “supervisor”, e então o programa supervisor precisa rotear o tráfego até o destino
    Até para simplesmente filtrar e inspecionar tráfego sem privilégios de root, o Linux exige trabalho demais
    Também não se deve deixar nenhuma informação no nome de usuário ou no hostname. Como este texto prova, essa informação será usada contra você

  • Resumindo o que a Anthropic já fez até agora: anos antes de qualquer exigência governamental, filtrou pessoas que estavam do lado errado de “toda a humanidade”, fez downgrade dos modelos de maneira arbitrária e depois respondeu com algo do tipo “desculpe, mas não estamos tão arrependidos assim”, e atrapalhou ativamente as respostas às escondidas para entregar resultados errados aos usuários
    O que devemos esperar em seguida? Malware para transformar em peso de papel a máquina de usuários de quem eles não gostam? Expansão para mais pessoas de quem eles não gostam?
    Já consigo ver como a visão de futuro utópica de Dario Amodei para “toda a humanidade” vai se desenrolar

    • A reação exagerada do HN é ridícula
      Tudo faz sentido se você partir do ponto de vista de que essas pessoas acreditam sinceramente que estão criando uma superinteligência
      A esmagadora maioria do campo de segurança de IA dedicou muito mais da vida e do tempo a esse problema do que o comentarista de poltrona médio do HN, acredita que é preciso impedir que a China chegue primeiro à superinteligência, que o acesso à superinteligência deve ser permitido apenas a atores benignos verificados, e que, se falharmos nesse objetivo, a humanidade será extinta nessa corrida
      Se você não presumir que “achamos que estamos criando uma superinteligência” é mentira, quase todas as ações deles se tornam compreensíveis
  • Eu relatei um mecanismo parecido de injeção de prompt de sistema aqui
    https://news.ycombinator.com/item?id=48259288
    https://github.com/anthropics/claude-code/issues/62061
    Como esperado, parece que continuam encontrando usos novos e “criativos” para esse tipo de coisa
    Vou continuar removendo isso com patches

    • Obrigado por fazer isso
      Eu não sabia que o prompt de sistema estava inserindo coisas como “evite abstrações; três linhas de código parecido são melhores do que um helper”
      Isso é algo com que não concordo
      Existe alguma forma de corrigir isso colocando instruções no CLAUDE.md para sobrescrever esse tipo de prompt? Imagino que não dê para alterar diretamente o prompt de sistema em si, mas o CLAUDE.md não deveria ter a palavra final?
  • Não entendi bem a preocupação com privacidade que o autor quer enfatizar.
    Claro, se alguém é pego fazendo algo “furtivo”, sempre vai levantar suspeitas, mas, por outro lado, se você revela publicamente como esse “recurso de segurança” funciona, não há sentido em implementá-lo.
    E, na minha opinião, esteganografia não é segurança por obscuridade.
    Assim como manter a chave privada em sigilo no RSA não é segurança por obscuridade, manter em sigilo aquilo que deve ser privado faz parte do modelo de segurança.

    • A Anthropic decidir retardar a destilação de modelos por concorrentes fica a critério dela.
      Mas ela estragou tudo ao implementar isso por meio de fingerprinting, sem antes divulgar meus padrões de acesso.
      Isso não é apenas “furtivo”; é simplesmente secreto, desonesto e antiético.
      O fato de este caso ser inofensivo não traz muito consolo. Quem garante que eles não estão coletando informações de identificação pessoal?
      O fato de as ações deles fazerem sentido do ponto de vista comercial não é motivo para as pessoas aceitarem decisões enganosas e hostis aos clientes.
    • Se os países estivessem invertidos, quando um software chinês implementasse um “recurso de segurança” equivalente para rastrear usuários americanos, as notícias estariam cheias de matérias dizendo que a China estaria fazendo vigilância e espionagem contra os EUA.
      Ou talvez eu ache que nem consigam entender essa hipótese, mas, na verdade, parece que simplesmente não se importam com a privacidade dos outros.
  • “Então esse recurso pune principalmente pessoas fáceis de identificar por fingerprinting, ou seja, desenvolvedores comuns fazendo coisas estranhas, mas legais”; o que exatamente significa punir aqui?

    • Aumenta a probabilidade de bloqueio mesmo em usos legais.
    • Se a pessoa for marcada como suspeita de ser concorrente, encerram a conta.
    • Ele devolve resultados contaminados e incorretos diferentes daquilo pelo qual você pagou.
    • Vendo a Anthropic alardear “ataques ilegais de destilação chineses” a cada um ou dois meses, eu apostaria que, se você corresponder a qualquer um dos padrões de identificação, eles já estão reduzindo silenciosamente o desempenho do modelo, ou no mínimo revisando/ensaiando isso.
      Ainda mais considerando que essa tecnologia existe e que eles disseram publicamente que a usariam em produção no Fable.
    • Se eu tivesse que especular, seria contaminação da saída e/ou, no fim, suspensão da conta.