1 puntos por GN⁺ 3 시간 전 | 1 comentarios | Compartir por WhatsApp
  • El binario de Claude Code 2.1.196 incluye una función que cambia la frase de la fecha actual en el prompt del sistema para ocultar señales de clasificación dentro de la solicitud
  • El disparador es ANTHROPIC_BASE_URL; si no es el api.anthropic.com oficial o si hay un valor configurado, revisa el hostname y la zona horaria, y cambia el apóstrofo y los separadores de fecha
  • El hostname se compara con una lista de dominios y palabras clave decodificada desde una cadena base64 con la clave XOR 91, e incluye entradas como deepseek, zhipu, moonshot, baidu.com, bytedance.net y proxyai.com
  • Si se usa el endpoint oficial de la API de Anthropic o no existe ANTHROPIC_BASE_URL, la función retorna temprano y se mantiene el formato normal Today's date is 2026-06-30.
  • No se puede afirmar que sea una función maliciosa, pero si una herramienta para desarrolladores con permisos de acceso al filesystem y al shell oculta información de clasificación con marcadores Unicode invisibles, la confianza se resiente

Marcadores ocultos en la frase de la fecha

  • El binario de Claude Code tiene una función que modifica la cadena de la fecha actual incluida en el prompt del sistema
  • La frase predeterminada tiene la siguiente forma
    • Today's date is 2026-06-30.
  • Hay dos partes que pueden cambiar
    • El apóstrofo de Today's
    • El separador de fecha: cambia de - a /
  • La frase resultante parece a simple vista una indicación normal de fecha, pero la solicitud en bruto contiene marcadores ocultos
  • Como es una forma de ocultar datos en un lugar que parece texto plano, corresponde a esteganografía de prompts

La ruta condicional que activa ANTHROPIC_BASE_URL

  • El disparador es ANTHROPIC_BASE_URL, la anulación de la URL base de la API de Claude Code
  • Si no existe ANTHROPIC_BASE_URL, la función retorna temprano
  • Incluso si tiene un valor, si el host es api.anthropic.com, sale por la misma ruta
  • Solo cuando no hay retorno temprano se revisan las siguientes condiciones
    • Si la zona horaria del sistema es Asia/Shanghai o Asia/Urumqi
    • Si el hostname de la URL base de la API coincide con una lista de dominios decodificada, o con alguno de sus subdominios
    • Si el hostname contiene ciertas palabras clave de laboratorios de IA

Información codificada en la fecha y el apóstrofo

  • Si la zona horaria es Asia/Shanghai o Asia/Urumqi, cambia el formato de la fecha
    • 2026-06-302026/06/30
  • Según el resultado de la clasificación del hostname, cambia el apóstrofo de Today's
    • Normal: '
    • Dominio conocido: \u2019
    • Palabra clave de laboratorio: \u02BC
    • Dominio conocido y además con palabra clave de laboratorio: \u02B9
  • Estos caracteres Unicode tienen una diferencia visual muy pequeña en la mayoría de las fuentes monoespaciadas, por lo que es difícil notarlos

Lista oculta de dominios y palabras clave

  • Las listas de dominios y palabras clave se guardan como cadenas base64 y se decodifican con la clave XOR 91
  • La lista decodificada de palabras clave de laboratorios es la siguiente
    • deepseek
    • moonshot
    • minimax
    • xaminim
    • zhipu
    • bigmodel
    • baichuan
    • stepfun
    • 01ai
    • dashscope
    • volces
  • La lista decodificada de dominios es más grande e incluye dominios de empresas chinas, dominios de compañías de IA y dominios de proxies, revendedores y gateways
  • Algunos ejemplos son los siguientes
    • 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
  • La lista completa puede consultarse en cc-domains.js

Dónde entra en el contexto del sistema

  • El resultado de la función de fecha entra como valor currentDate al construir el contexto del agente
  • El mismo contexto también puede incluir, según las condiciones, el correo electrónico del usuario y la información de proyectos vinculada
  • Por lo tanto, el marcador pasa a formar parte del contexto del sistema que se envía al modelo
  • También queda la posibilidad de que el backend de Anthropic analice este valor

Entorno de instalación verificado

  • El binario instalado de Claude Code verificado está firmado por Anthropic
    • Identifier=com.anthropic.claude-code
    • TeamIdentifier=Q6L2SF6YDW
    • Timestamp=Jun 29, 2026
    • SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
  • Al momento de la verificación, el shell no tenía configurado ANTHROPIC_BASE_URL y la zona horaria era Asia/Hong_Kong
  • En este entorno se genera un apóstrofo normal y una cadena de fecha YYYY-MM-DD

Casos de uso afectados y limitaciones

  • Para la mayoría de los usuarios, es probable que esta ruta permanezca inactiva
  • Si se usa el endpoint oficial de la API de Anthropic o no existe ANTHROPIC_BASE_URL, el prompt de fecha se mantiene en una forma normal
  • Los casos interesantes son aquellos en los que Claude Code se enruta mediante una base URL personalizada
    • Gateway interno
    • Proxy local
    • Router de modelos
    • Revendedor
    • Entorno de investigación
  • En ese caso, Claude Code clasifica el hostname y codifica el resultado en el prompt
  • Las formas de evasión son simples
    • Cambiar el hostname
    • Cambiar la zona horaria
    • Parchear el binario
    • Envolver el proceso
  • Un atacante serio podría neutralizar esta señal, por lo que los desarrolladores comunes que usan configuraciones inusuales pero legítimas quedan más expuestos a fingerprinting

Una implementación que erosiona la confianza

  • Es posible que Anthropic busque detectar revendedores de API, gateways no autorizados de Claude Code o pipelines de “distillation attack” de modelos
  • Si un ANTHROPIC_BASE_URL personalizado apunta a un dominio de revendedor conocido, o si el hostname contiene deepseek o zhipu, podría usarse como señal de detección
  • El problema es la forma de implementación
    • Modifica silenciosamente el prompt del sistema
    • Codifica información de clasificación de proxies y gateways en un lugar que parece una frase común en inglés
    • Oculta la lista de dominios detrás de XOR y base64
  • Un agente de programación puede revisar código en la máquina local, ejecutar comandos, instalar paquetes, editar archivos e incluso hacer push de commits
  • Para detectar gateways de API personalizados también podrían usarse campos de telemetría explícitos y documentados, políticas públicas o notas de lanzamiento
  • Si una herramienta con permisos de acceso al filesystem y al shell oculta bits de clasificación en puntuación invisible del prompt, también se vuelve difícil confiar en otras afirmaciones sobre privacidad

1 comentarios

 
GN⁺ 3 시간 전
Opiniones de Hacker News
  • Hay reacciones que minimizan la gravedad de que un proveedor de servicios no revele con transparencia qué hace exactamente una herramienta que desplegó en las máquinas de sus clientes
    Que hubiera una necesidad de negocio no significa que puedan evitar una divulgación honesta
    Que su solución se vuelva inútil si la divulgan honestamente tampoco es mi problema; más bien, si consideraron que esto estaba bien, me hace sospechar qué más podrían estar recopilando en mi máquina, como información de identificación personal
    Visto con cinismo, más que un juicio sobre este caso, siento que el tono de los comentarios refleja sentimientos sobre la IA/Anthropic/Estados Unidos, etc.

    • Primero serán los “chinos”, luego se ampliará a gente que use capacidades “ciber”, a quienes hagan “jailbreak”, a quienes estén “en contra de Dario” o a cualquiera que ellos consideren desagradable
    • Más allá de si uno considera mala o no la conducta de Anthropic, Anthropic lleva tiempo diciendo muy fuerte que laboratorios extranjeros están destilando sus modelos
      Esto parece una medida de respuesta natural para revelar ese hecho
    • ¿No es básicamente poner una marca de agua en las solicitudes según variables de entorno y cambiar el formato de una cadena si está en cierta zona horaria? ¿Qué me estoy perdiendo? No entiendo en qué parte esto es un incendio de grandes proporciones
    • Si es cierto que “las necesidades comerciales del proveedor exigen este comportamiento”, entonces eso es otra razón para decir que ese negocio es un negocio ilegítimo
    • Parece que tiene una postura política, pero no entiende en absoluto cómo funciona un servicio en la nube
  • Dejando de lado los juicios de valor, me sorprende un poco que hayan implementado esto de forma tan burda
    Creo que podrían haber logrado el mismo efecto reduciendo la probabilidad de que se detectara mediante ingeniería inversa
    Este campo se conoce como “underhanded code”, popularizado por el Underhanded C Contest: https://www.underhanded-c.org
    Es un “arte” poco conocido, y la razón debería ser obvia. Hay formas mucho más ingeniosas de lograr estos objetivos
    Un método evidente es mover más lógica del cliente al servidor; otro es escribir código de cliente plausiblemente negable de una forma que parezca mucho más inocua
    Algunas de las cosas agregadas solo podían hacerse en el cliente, pero otras podrían haberse movido, y hasta las partes que requerían el cliente podrían haberse hecho de manera más sutil y plausible
    También es posible que, como los bundles de JS se revisan tanto, supieran que al final se descubriría y se reportaría, y por eso no lo hicieron más sigiloso y engañoso; aun así, se siente algo descuidado

    • Puede que haya métodos de detección más profundos por separado, y que esto sea una primera línea de defensa barata y fácil para atrapar a muchos actores maliciosos menos sofisticados, por eso no lo quitaron
      Sería difícil impedir que un gran laboratorio de IA realmente decidido destile el modelo, pero A) pueden bloquear a muchos revendedores improvisados de tokens que quieren ganar dinero rápido y B) alguien de un laboratorio grande podría olvidarse de instalar la evasión y delatarse solo
      Lo veo como comprar un búho de plástico porque hay muchos pájaros en el patio. Aunque el búho ahuyente a la mayoría, pero no a todos, y por eso compres además un dispositivo ultrasónico, no hay razón para quitar el búho
      Porque ahora tienes no una, sino dos capas de defensa
    • Si consideras que Claude fue hecho con vibe coding, lo burdo no sorprende en absoluto
      No porque el modelo de Anthropic sea malo, sino porque Claude parece romper cada día algo nuevo y molesto, así que me estoy moviendo más hacia Codex y OpenCode
    • Claude Code está maximizando la improvisación; ¿están tomando en cuenta su “criterio”? :-)
    • El enfoque podría haber sido mucho más interesante
      Los grandes modelos de lenguaje pueden usar la distribución de tokens para crear esteganotexto que se lee como prosa plausible, pero que se decodifica como un payload¹
      ¹ https://github.com/hodgesmr/calgacus-mlx
    • Al principio estaba de acuerdo en que era una implementación burda que obviamente se descubriría rápido, pero hay otra posibilidad
      Puede que Anthropic haya implementado esto no como un sistema continuo de detección contra revendedores proxy, sino como un sistema de muestreo puntual para averiguar dónde y en qué contextos está ocurriendo actualmente la reventa por proxy
      Algún día se descubriría, pero hasta entonces Anthropic puede obtener datos de snapshot útiles
  • La conclusión de esta entrada de blog es un poco exagerada
    La intención de esta esteganografía es muy clara: identificar el uso por parte de empresas chinas que podrían estar haciendo destilación de modelos
    No queda claro que esto, de alguna forma, “castigue a desarrolladores comunes”

    • Si quieres usar Claude vía proxy por motivos legítimos, la calidad de la respuesta podría degradarse
      Entre los motivos legítimos están analizar qué envía Claude Code a Anthropic para verificar que no haya filtración de datos, elegir dinámicamente el modelo según la dificultad del prompt o forzar un modelo específico, alternar entre varias cuentas de Anthropic según el proyecto, y filtrar credenciales, información de identificación personal o secretos de la empresa
    • Si el software que corre en la máquina del usuario realiza a escondidas exfiltración de datos estilo esteganografía similar a malware, es un problema de confianza
    • ¿Por qué una empresa china que quiere destilar el producto usaría Claude Code?
    • Ya hemos visto falsos positivos, como cuando Fable redujo silenciosamente la calidad según el prompt/la sesión
    • Un buen objetivo no justifica una ejecución maliciosa o imprudente
      El fin no siempre justifica los medios
      Haya habido daño o no en este caso, esto es una violación de la confianza y la autonomía
      Aunque alguien dijera que, al menos por ahora, el código solo está ahí para detectar y delatar al enemigo público número uno, si instaló un rootkit en secreto, obviamente me enojaría
  • A diferencia de Claude Code, Codex CLI es software libre y de código abierto, así que es menos probable que haga algo así, y ahora hay una razón más para evitar Claude Code y Claude en general.
    Espero que muchos ojos revisen Codex en busca de este comportamiento malicioso.

    • De verdad me da curiosidad: si pago la suscripción y cumplo los términos, ¿por qué debería importarme?
      Soy muy escéptico con las políticas de privacidad y las prácticas de negocio, pero me pregunto qué perjuicio me causa esto como cliente.
      Si ayuda a retrasar el momento en que se corten los subsidios, desde el punto de vista del cliente incluso parece conveniente.
      Aunque, si estos proxies fraudulentos ayudan a los laboratorios chinos a ponerse al día, a largo plazo también podría favorecer que yo termine teniendo una IA personal de alta calidad, totalmente bajo mi control en mi propio hardware.
      No digo que lo apoye, pero reconozco que existe ese incentivo.
    • ¿Es “malicioso”? Parece una buena forma de filtrar a usuarios que violan los términos sin molestar a los usuarios legítimos.
      Que el cliente sea libre y de código abierto solo significa que se hará más análisis oculto del lado del servidor.
    • Tengo entendido que GitHub lo distribuye y lo firma.
      No son builds deterministas, pero aun así hay cierta garantía de procedencia de que viene del repositorio real.
    • ¿Claude Code no se había filtrado? ¿Por qué no se descubrió esto antes?
  • La reacción de “si el cliente quiere detectar gateways de API personalizados, simplemente debería decirlo de forma clara: enviar un campo de telemetría explícito y documentado, hacer visible la política e incluir el comportamiento en las notas de lanzamiento” me parece muy ingenua.
    Si el cliente envía al gateway un campo de telemetría explícito, un gateway malicioso puede eliminarlo o modificarlo muy fácilmente para que parezca tráfico normal.
    La razón por la que vale la pena este juego del gato y el ratón con esteganografía es que al gateway le resulta mucho más difícil seguir aplicando ingeniería inversa a todos los mecanismos de fingerprinting que se usan.
    Por supuesto, algunos gateways maliciosos seguirán poniéndose al día, pero no todos podrán hacerlo siempre.

    • En serio, parece que el autor nunca hubiera lidiado con abuso de clientes.
      Si no eres un laboratorio chino de destilación, esto es un asunto completamente sin problema.
    • Hasta que se descubra, al menos durante un tiempo podría funcionar mejor que el KYC.
      Porque el mercado internacional de servicios para eludir KYC está muy desarrollado.
  • No solo las herramientas de IA, también las herramientas de desarrollo deben ejecutarse en un sandbox.
    Por ejemplo, en los repositorios de paquetes de Python o JavaScript puede entrar cualquier cosa; no tienen contratos con empresas antivirus ni una verificación ciudadana confiable, así que no deberían ejecutarse sin sandbox.
    Piensa que usuarios anónimos de cualquier país pueden subir cualquier cosa, y millones de desarrolladores pueden ejecutarla en sus computadoras.
    Los IDE, plugins de IDE, servidores LSP y plugins de IA también deberían ir todos en sandbox.
    La mayoría no es revisada por empresas antivirus, y no deberían ejecutarse sin restricciones.
    Además, ya existe un teorema de que ningún antivirus puede garantizar al 100% la seguridad del código.
    Curiosamente, la documentación de pip no menciona para nada el tema de sandboxing o malware en su guía de “primeros pasos”, como si viviera en un mundo maravilloso donde no existen personas, empresas ni países maliciosos.
    Espero que al menos en HN no haya gente viviendo en esa fantasía.
    Como quiero usar IDE, LSP y herramientas de IA, primero tengo que escribir mi propio sistema de sandboxing, y Linux solo ofrece primitivas básicas, así que toma mucho tiempo.
    Por ejemplo, para controlar todo el tráfico de red sin privilegios de root, hay que crear un espacio de nombres de usuario para obtener privilegios de root, crear un espacio de nombres de red, escribir un “recolector de tráfico” que se ejecute dentro del espacio de nombres y pase los datos por pipe a un programa “supervisor” externo, y luego el programa supervisor debe enrutar el tráfico hacia su destino.
    Incluso para simplemente filtrar e inspeccionar tráfico sin privilegios de root, Linux exige hacer demasiadas cosas.
    Tampoco debe quedar ninguna información en el nombre de usuario ni en el hostname. Como demuestra este artículo, esa información se usará en tu contra.

  • En resumen, esto es lo que Anthropic ya ha venido haciendo: desde años antes de que el gobierno lo exigiera, filtró a personas que están del lado equivocado de “toda la humanidad”, degradó modelos de formas arbitrarias y luego respondió con algo como “lo sentimos, pero no tanto”, y obstruyó activamente cambiando respuestas en secreto para darles resultados incorrectos a los usuarios.
    ¿Qué deberíamos esperar después? ¿Malware que convierta en ladrillos las máquinas de usuarios que no le gustan? ¿Expandirlo a más gente que no le guste?
    Creo que ya se ve cómo se desplegará la visión utópica de Dario Amodei para “toda la humanidad”.

    • La sobrerreacción en HN es ridícula.
      Si lo miras desde el punto de vista de que esta gente cree sinceramente que está construyendo una superinteligencia, todo se entiende.
      La abrumadora mayoría del campo de la seguridad de IA ha dedicado a este problema mucha más vida y tiempo que el comentarista promedio de sillón de HN, y considera que hay que impedir que China llegue primero a la superinteligencia, que el acceso a la superinteligencia solo debe permitirse a actores buenos verificados, y que si se falla en ese objetivo, la competencia termina con la extinción de la humanidad.
      Si no asumimos que mienten cuando dicen “creemos que estamos construyendo una superinteligencia”, casi todo lo que hacen se vuelve comprensible.
  • Ya había reportado aquí un mecanismo similar de inyección de prompt de sistema.
    https://news.ycombinator.com/item?id=48259288
    https://github.com/anthropics/claude-code/issues/62061
    Como era de esperarse, parece que siguen encontrando usos nuevos y “creativos” para cosas así.
    Yo seguiré eliminándolo con parches.

    • Gracias por hacer esto.
      No sabía que el prompt de sistema estaba metiendo cosas como “evita las abstracciones; tres líneas de código similares son mejores que un helper”.
      Es algo con lo que no estoy de acuerdo.
      ¿Hay alguna forma de corregirlo poniendo instrucciones en CLAUDE.md para sobrescribir ese tipo de prompts? Supongo que no se puede cambiar directamente el prompt de sistema en sí, pero ¿no debería CLAUDE.md tener la última palabra?
  • No entiendo bien la preocupación por la privacidad que el autor intenta enfatizar.
    Claro, si te descubren haciendo algo “encubierto”, siempre vas a levantar sospechas; pero, por otro lado, si haces público cómo funciona una “función de seguridad” como esta, no tiene sentido implementarla.
    Y, en mi opinión, la esteganografía no es seguridad basada en la oscuridad.
    Así como mantener privada la clave privada en RSA no es seguridad basada en la oscuridad, mantener privado lo que debe ser privado es parte del modelo de seguridad.

    • Que Anthropic decida frenar la destilación de modelos por parte de sus competidores queda a su criterio.
      Pero la arruinaron en el punto en que lo implementaron tomando huellas digitales de mis patrones de acceso sin revelarlo antes.
      Esto no es solo “encubierto”: es simplemente encubierto, deshonesto y falto de ética.
      Que este caso sea inofensivo tampoco consuela mucho. ¿Quién garantiza que no estén recopilando información de identificación personal?
      Que sus acciones tengan sentido comercialmente no es una razón para que la gente tenga que aceptar decisiones engañosas y hostiles hacia los clientes.
    • Si los países estuvieran invertidos, cuando un software chino implementara una “función de seguridad” equivalente para rastrear a usuarios estadounidenses, las noticias estarían llenas de titulares diciendo que China vigila y espía a Estados Unidos.
      O quizá ni siquiera entiendan esta hipótesis, pero en realidad parece que no les importa la privacidad de los demás.
  • Dicen: “Entonces esta función castiga principalmente a quienes son fáciles de perfilar, es decir, desarrolladores comunes que hacen cosas raras pero legales”; ¿qué significa exactamente castiga aquí?

    • Aumenta la probabilidad de que te bloqueen aunque sea un uso legal.
    • Si te marcan como sospechoso de ser competidor, te eliminan la cuenta.
    • Te devuelven resultados contaminados e incorrectos distintos de lo que pagaste.
    • Viendo cómo Anthropic arma escándalo cada uno o dos meses sobre “ataques ilegales de destilación chinos”, apostaría a que, si coincides con uno de los patrones de identificación, ya están degradando silenciosamente el rendimiento del modelo, o como mínimo lo están revisando o ensayando.
      Más aún considerando que esa tecnología existe y que en Fable dijeron públicamente que la usarían en producción.
    • Si tengo que especular, sería contaminación de la salida y/o, eventualmente, suspensión de la cuenta.