- 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 oapi.anthropic.comoficial 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 comodeepseek,zhipu,moonshot,baidu.com,bytedance.neteproxyai.com - Ao usar o endpoint oficial da API da Anthropic ou quando
ANTHROPIC_BASE_URLnão existe, a função retorna antecipadamente e mantém o formato comumToday'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/
- o apóstrofo em
- 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_URLnã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/ShanghaiouAsia/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
- se o fuso horário do sistema é
Informações codificadas na data e no apóstrofo
- Se o fuso horário for
Asia/ShanghaiouAsia/Urumqi, a grafia da data muda2026-06-30→2026/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
- comum:
- 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
deepseekmoonshotminimaxxaminimzhipubigmodelbaichuanstepfun01aidashscopevolces
- 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
cnbaidu.comalibaba-inc.comalipay.comantgroup-inc.cnbytedance.netkuaishou.comxiaohongshu.comjd.combilibili.coiflytek.comstepfun-inc.commoonshot.aianyrouter.topclaude-code-hub.appclaude-opus.topopenclaude.meproxyai.comyunwu.aizenmux.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
currentDateao 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-codeTeamIdentifier=Q6L2SF6YDWTimestamp=Jun 29, 2026SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
- No momento da verificação,
ANTHROPIC_BASE_URLnão estava definido no shell, e o fuso horário eraAsia/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_URLnã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_URLpersonalizado apontar para um domínio de revendedor conhecido ou se o nome do host contiverdeepseekouzhipu, 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
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
Isso parece uma resposta natural para expor esse fato
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
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
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
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
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
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
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
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
Um cliente livre e de código aberto só significa que mais análises serão feitas às escondidas no servidor
Não são builds determinísticos, mas ainda há alguma garantia de procedência de que veio do repositório verdadeiro
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
Se você não é um laboratório chinês de destilação, isso é uma questão totalmente sem problema
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
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
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.
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.
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?
Ainda mais considerando que essa tecnologia existe e que eles disseram publicamente que a usariam em produção no Fable.