1P by GN⁺ | ★ favorite | 댓글 1개
  • Claude Code 2.1.196 바이너리에는 시스템 프롬프트의 현재 날짜 문장을 바꿔 요청 안에 분류 신호를 숨기는 함수가 들어 있음
  • 트리거는 ANTHROPIC_BASE_URL이며, 공식 api.anthropic.com이 아니거나 값이 설정된 경우 호스트명·시간대를 확인해 아포스트로피와 날짜 구분자를 바꿈
  • 호스트명은 base64 문자열을 XOR 키 91로 디코딩한 도메인·키워드 목록과 비교되며, deepseek, zhipu, moonshot, baidu.com, bytedance.net, proxyai.com 같은 항목이 포함됨
  • 공식 Anthropic API 엔드포인트를 쓰거나 ANTHROPIC_BASE_URL이 없으면 조기 반환되어 일반적인 Today's date is 2026-06-30. 형식이 유지됨
  • 악성 기능으로 단정할 수는 없지만, 파일시스템·셸 접근 권한을 가진 개발자 도구가 보이지 않는 Unicode 표식으로 분류 정보를 숨기면 신뢰가 흔들림

날짜 문장에 숨겨지는 마커

  • Claude Code 바이너리에는 시스템 프롬프트에 들어가는 현재 날짜 문자열을 바꾸는 함수가 있음
  • 기본 문장은 다음 형태임
    • Today's date is 2026-06-30.
  • 바뀔 수 있는 부분은 두 곳임
    • Today's아포스트로피
    • 날짜 구분자: -에서 /로 변경
  • 결과 문장은 겉으로는 평범한 날짜 안내처럼 보이지만, 원시 요청에는 숨겨진 마커가 들어감
  • 평문처럼 보이는 곳에 데이터를 숨기는 방식이라 프롬프트 스테가노그래피에 해당함

ANTHROPIC_BASE_URL이 켜는 조건부 경로

  • 트리거는 Claude Code의 API 기본 URL 오버라이드인 ANTHROPIC_BASE_URL
  • ANTHROPIC_BASE_URL이 없으면 함수는 조기 반환함
  • 값이 있더라도 호스트가 api.anthropic.com이면 같은 경로로 빠짐
  • 조기 반환되지 않을 때만 다음 조건을 확인함
    • 시스템 시간대가 Asia/Shanghai 또는 Asia/Urumqi인지
    • API 기본 URL의 호스트명이 디코딩된 도메인 목록과 일치하거나 그 하위 도메인인지
    • 호스트명에 특정 AI 연구소 키워드가 포함되는지

날짜와 아포스트로피에 인코딩되는 정보

  • 시간대가 Asia/Shanghai 또는 Asia/Urumqi이면 날짜 표기가 달라짐
    • 2026-06-302026/06/30
  • 호스트명 분류 결과에 따라 Today's의 아포스트로피가 바뀜
    • 일반: '
    • 알려진 도메인: \u2019
    • 연구소 키워드: \u02BC
    • 알려진 도메인이면서 연구소 키워드 포함: \u02B9
  • 이 Unicode 문자는 대부분의 모노스페이스 폰트에서 시각적 차이가 매우 작아 알아차리기 어려움

숨겨진 도메인·키워드 목록

  • 도메인과 키워드 목록은 base64 문자열로 저장되고 XOR 키 91로 디코딩됨
  • 디코딩된 연구소 키워드 목록은 다음과 같음
    • deepseek
    • moonshot
    • minimax
    • xaminim
    • zhipu
    • bigmodel
    • baichuan
    • stepfun
    • 01ai
    • dashscope
    • volces
  • 디코딩된 도메인 목록은 더 크며, 중국 기업 도메인, AI 회사 도메인, 프록시·리셀러·게이트웨이 도메인을 포함함
  • 예시 항목은 다음과 같음
    • 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
  • 전체 목록은 cc-domains.js에서 확인 가능함

시스템 컨텍스트에 들어가는 위치

  • 날짜 함수의 결과는 에이전트 컨텍스트를 구성할 때 currentDate 값으로 들어감
  • 같은 컨텍스트에는 조건에 따라 사용자 이메일과 연결된 프로젝트 정보도 포함될 수 있음
  • 따라서 마커는 모델로 전송되는 시스템 컨텍스트 일부가 됨
  • Anthropic 백엔드가 이 값을 파싱할 가능성도 남아 있음

확인된 설치 환경

  • 확인된 Claude Code 설치 바이너리는 Anthropic 서명으로 되어 있음
    • Identifier=com.anthropic.claude-code
    • TeamIdentifier=Q6L2SF6YDW
    • Timestamp=Jun 29, 2026
    • SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
  • 확인 당시 셸에는 ANTHROPIC_BASE_URL이 설정되어 있지 않았고, 시간대는 Asia/Hong_Kong이었음
  • 이 환경에서는 일반 아포스트로피와 YYYY-MM-DD 날짜 문자열이 생성됨

영향을 받는 사용 사례와 한계

  • 대부분의 사용자는 이 경로가 비활성 상태로 남을 가능성이 있음
  • 공식 Anthropic API 엔드포인트를 쓰거나 ANTHROPIC_BASE_URL이 없으면 날짜 프롬프트는 평범한 형태로 유지됨
  • 흥미로운 사례는 Claude Code를 사용자 지정 base URL로 라우팅하는 경우임
    • 내부 게이트웨이
    • 로컬 프록시
    • 모델 라우터
    • 리셀러
    • 연구 환경
  • 이 경우 Claude Code는 호스트명을 분류하고 그 결과를 프롬프트에 인코딩함
  • 우회 방법은 단순함
    • 호스트명 변경
    • 시간대 변경
    • 바이너리 패치
    • 프로세스 래핑
  • 심각한 공격자는 이 신호를 무력화할 수 있어, 이상하지만 합법적인 설정을 쓰는 일반 개발자가 더 쉽게 지문 채집 대상이 됨

신뢰를 흔드는 구현 방식

  • Anthropic이 API 리셀러, 승인되지 않은 Claude Code 게이트웨이, 모델 “distillation attack” 파이프라인을 탐지하려는 목적일 가능성이 있음
  • 사용자 지정 ANTHROPIC_BASE_URL이 알려진 리셀러 도메인을 가리키거나 호스트명에 deepseek, zhipu가 들어가면 탐지 신호로 활용될 수 있음
  • 문제는 구현 방식임
    • 시스템 프롬프트를 조용히 변경함
    • 평범한 영어 문장처럼 보이는 곳에 프록시·게이트웨이 분류 정보를 인코딩함
    • 도메인 목록을 XOR와 base64 뒤에 숨김
  • 코딩 에이전트는 로컬 머신에서 코드 확인, 명령 실행, 패키지 설치, 파일 편집, 커밋 푸시까지 할 수 있음
  • 사용자 지정 API 게이트웨이를 감지하려면 문서화된 명시적 텔레메트리 필드, 공개 정책, 릴리스 노트 같은 방식도 가능함
  • 파일시스템과 셸 접근 권한을 가진 도구가 보이지 않는 프롬프트 문장부호에 분류 비트를 숨기면, 다른 개인정보 보호 주장도 믿기 어려워짐

댓글과 토론

Hacker News 의견들
  • 서비스 제공자가 고객 머신에서 배포한 도구가 정확히 무엇을 하는지 투명하게 공개하지 않은 심각성을 축소하는 반응들이 있음
    사업상 필요가 있었다고 해서 정직한 공개를 안 해도 되는 건 아님
    정직하게 공개하면 그들의 해법이 무용지물이 된다는 것도 내 문제는 아니고, 오히려 이걸 괜찮다고 봤다면 내 머신에서 개인식별정보 같은 뭘 더 수집하고 있을지 의심하게 됨
    냉소적으로 보면 이 사안에 대한 판단이라기보다 AI/Anthropic/미국 등에 대한 감정이 댓글 분위기에 반영된 것처럼 느껴짐

    • 처음엔 “중국인”이고, 다음엔 “사이버” 역량을 쓰는 사람, “탈옥”하는 사람, “Dario에 반하는” 사람, 또는 그들이 불쾌하다고 보는 대상으로 넓어질 것임
    • Anthropic의 행동이 나쁘다고 보든 아니든, Anthropic은 외국 연구소들이 자기 모델을 증류하고 있다고 한동안 매우 크게 말해 왔음
      이건 그런 사실을 드러내기 위한 당연한 대응 수단처럼 보임
    • 환경 변수에 따라 요청에 워터마크를 넣고, 특정 시간대에 있으면 문자열 형식을 바꾸는 정도 아닌가? 내가 뭘 놓치고 있나? 대체 어디가 대형 화재급 사안인지 모르겠음
    • “제공자의 사업상 필요가 이런 행동을 요구한다”가 사실이라면, 그건 그 사업이 정당하지 않은 사업이라는 또 다른 이유가 됨
    • 정치적 입장은 있어 보이지만, 클라우드 서비스가 어떻게 동작하는지는 전혀 이해하지 못한 듯함
  • 가치판단은 제쳐 두고, 이걸 이렇게 허술하게 구현했다는 게 좀 놀라움
    역공학으로 탐지될 가능성을 낮추면서도 같은 효과를 낼 수 있었을 것 같음
    이 분야는 Underhanded C Contest가 만든 “underhanded code”로 알려져 있음: https://www.underhanded-c.org
    별로 알려지지 않은 “기예”인데, 이유는 자명할 것임. 이런 목표를 달성하는 훨씬 영리한 방식이 있음
    명백한 방법 하나는 클라이언트에서 서버로 더 많이 옮기는 것이고, 또 하나는 그럴듯하게 부인 가능한 클라이언트 코드를 훨씬 무해해 보이는 방식으로 작성하는 것임
    추가된 것 중 일부는 클라이언트에서만 가능하지만, 일부는 옮길 수 있었고 클라이언트가 필요한 부분도 더 미묘하고 그럴듯하게 만들 수 있었을 듯함
    JS 번들이 워낙 많이 검토되니 결국 발견돼 보도될 걸 알고 더 은밀하고 기만적으로 만들지 않았을 가능성도 있지만, 그래도 약간 성의 없어 보임

    • 더 깊은 탐지 방법이 따로 있고, 이건 덜 정교한 악성 행위자를 많이 잡아내는 싸고 쉬운 1차 방어라서 제거하지 않은 것일 수도 있음
      정말 작정한 대형 AI 연구소가 모델을 증류하는 걸 막기는 어렵겠지만, A) 빠르게 돈 벌려는 날림 토큰 재판매업자들을 많이 막을 수 있고 B) 그런 대형 연구소의 누군가가 우회책 설치를 깜빡해서 스스로 드러낼 수도 있음
      마당에 새가 많아 플라스틱 부엉이를 사는 것과 비슷하게 봄. 부엉이가 대부분의 새를 쫓지만 전부는 아니어서 초음파 장치를 추가로 산다고 해도, 부엉이를 내릴 이유는 없음
      이제 방어층이 하나가 아니라 두 겹이 되기 때문임
    • Claude가 바이브 코딩된 걸 생각하면 허술함이 전혀 놀랍지 않음
      Anthropic 모델이 나빠서가 아니라 Claude가 매일 새롭고 짜증 나는 걸 하나씩 깨뜨리는 것 같아서 Codex와 OpenCode 쪽으로 더 옮겨 가는 중임
    • Claude Code가 대충대충 극대화하는 중인데 그들의 “판단”을 고려하고 있나 :-)
    • 접근 방식이 훨씬 더 흥미로울 수도 있었음
      거대 언어 모델은 토큰 분포를 이용해 그럴듯한 산문처럼 읽히지만 페이로드로 복호화되는 스테가노텍스트를 만들 수 있음¹
      ¹ https://github.com/hodgesmr/calgacus-mlx
    • 처음엔 빠르게 들킬 게 뻔한 허술한 구현이라는 데 동의했지만, 다른 가능성도 있음
      Anthropic이 이걸 프록시 재판매자를 상대로 한 지속적 탐지 시스템이 아니라, 현재 어디서 어떤 맥락으로 프록시 재판매가 벌어지는지 알아내는 특정 시점 표본 추출 시스템으로 구현했을 수 있음
      언젠가 들키겠지만, 그 전까지 Anthropic은 유용한 스냅샷 데이터를 얻을 수 있음
  • 이 블로그 글의 결론은 좀 과민함
    이 스테가노그래피의 의도는 매우 명확하며, 모델 증류를 하고 있을 수 있는 중국 기업의 사용을 식별하려는 것임
    이게 어떤 형태로든 “일반 개발자를 처벌”한다는 건 불분명함

    • 정당한 이유로 Claude를 프록시하려는 경우 응답 품질이 저하될 수 있음
      정당한 이유에는 Claude Code가 Anthropic에 무엇을 보내는지 분석해 데이터 유출이 없는지 검증하기, 프롬프트 난도에 따라 모델을 동적으로 선택하거나 특정 모델을 강제하기, 프로젝트에 따라 여러 Anthropic 계정을 전환하기, 자격 증명·개인식별정보·회사 기밀을 걸러내기 등이 있음
    • 사용자 머신에서 실행되는 소프트웨어가 몰래 악성코드 같은 스테가노그래피식 데이터 유출을 한다면 신뢰의 문제임
    • 제품을 증류하려는 중국 기업이 왜 Claude Code를 쓰겠나?
    • Fable에서 프롬프트/세션에 따라 조용히 품질을 낮췄을 때처럼 오탐은 이미 본 적이 있음
    • 좋은 목표도 악의적이거나 무모한 실행을 정당화하지 못함
      목적이 항상 수단을 정당화하는 건 아님
      이번에 피해가 있었든 없었든, 이건 신뢰와 자율성의 침해임
      누군가가 적어도 지금은 공공의 적 1호를 탐지해 고자질하려는 코드만 들어 있다고 하더라도, 몰래 루트킷을 설치했다면 당연히 화날 것임
  • Codex CLI는 Claude Code와 달리 자유 오픈소스 소프트웨어라서 이런 짓을 할 가능성이 더 낮고, Claude Code와 Claude 전반을 피해야 할 이유가 하나 더 생김
    Codex에는 많은 눈이 이런 악성 동작을 살펴보길 바람

    • 진짜 궁금한데, 내가 구독료를 내고 약관을 지키고 있다면 왜 신경 써야 하나?
      개인정보 정책이나 사업 관행에는 매우 회의적이지만, 이게 고객인 나에게 어떤 불이익이 있는지 궁금함
      보조금이 끊기는 시점을 늦추는 데 도움이 된다면 오히려 고객 입장에선 유리해 보임
      다만 이런 사기성 프록시들이 중국 연구소를 따라잡게 돕는다면, 장기적으로는 내가 직접 하드웨어에서 완전히 제어하는 고품질 개인 AI를 갖게 되는 데 유리할 수도 있음
      지지한다는 뜻은 아니지만, 그런 유인이 있다는 건 인정함
    • “악성”인가? 약관을 위반하는 사용자를 걸러내면서 정상 사용자에게는 방해가 되지 않는 좋은 방법처럼 보임
      자유 오픈소스 클라이언트라는 건, 더 많은 분석을 서버에서 숨겨서 한다는 뜻일 뿐임
    • GitHub가 배포하고 서명한 것으로 알고 있음
      결정적 빌드는 아니지만, 그래도 진짜 저장소에서 온 것이라는 출처 보증은 조금 있음
    • Claude Code가 유출되지 않았나? 왜 이게 더 일찍 발견되지 않았지?
  • “클라이언트가 커스텀 API 게이트웨이를 탐지하고 싶다면, 그냥 명확히 말하면 된다. 문서화된 명시적 원격측정 필드를 보내고, 정책을 보이게 만들고, 릴리스 노트에 동작을 넣으면 된다”라는 반응은 매우 순진해 보임
    클라이언트가 게이트웨이에 명시적 원격측정 필드를 보내면, 악성 게이트웨이는 그 필드를 일반 트래픽처럼 보이도록 아주 쉽게 제거하거나 수정할 수 있음
    스테가노그래피식 고양이와 쥐 게임이 가치 있는 이유는, 게이트웨이가 사용되는 모든 지문 채취 메커니즘을 계속 역공학하기 훨씬 어렵기 때문임
    물론 일부 악성 게이트웨이는 계속 따라잡겠지만, 전부가 항상 그렇게 하지는 못함

    • 정말로, 글쓴이는 클라이언트 남용을 다뤄 본 적이 전혀 없어 보임
      중국 증류 연구소가 아니라면 이건 완전히 문제 없는 사안
    • 발견되기 전까지는 적어도 한동안 KYC보다 더 잘 작동할 수도 있음
      KYC 우회 서비스의 국제 시장이 매우 발달해 있기 때문임
  • AI 도구뿐 아니라 개발 도구도 샌드박스에서 실행해야 함
    예를 들어 Python이나 JavaScript 패키지 저장소에는 뭐든 들어갈 수 있고, 백신 회사와 계약도 없고 신뢰할 시민 검증도 없으니 샌드박스 없이 실행하면 안 됨
    어느 나라의 익명 사용자든 아무거나 올릴 수 있고, 수백만 개발자가 그걸 자기 컴퓨터에서 실행할 수 있다는 걸 생각해 보셈
    IDE, IDE 플러그인, LSP 서버, AI 플러그인도 모두 샌드박스에 넣어야 함
    대부분은 백신 회사가 검사하지 않으며, 제한 없이 실행하면 안 됨
    더구나 어떤 백신도 코드의 안전성을 100% 보장할 수 없다는 정리가 이미 있음
    흥미롭게도 pip 문서는 “시작하기” 문서에서 샌드박스나 악성코드 주제를 전혀 언급하지 않는데, 악의적인 사람·회사·국가가 없는 멋진 세상에 사는 것처럼 보임
    적어도 HN에서는 그런 환상 속에 사는 사람이 없길 바람
    IDE, LSP, AI 도구를 쓰고 싶어서 먼저 자체 샌드박스 시스템을 작성해야 하는데, Linux는 기본 원시 기능만 제공해서 시간이 많이 듦
    예를 들어 루트 권한 없이 모든 네트워크 트래픽을 제어하려면 사용자 이름공간을 만들어 루트 권한을 얻고, 네트워크 이름공간을 만들고, 이름공간 안에서 실행되며 데이터를 밖의 “감독자” 프로그램으로 파이프하는 “트래픽 수집기”를 작성하고, 감독자 프로그램이 목적지로 트래픽을 라우팅해야 함
    루트 권한 없이 트래픽을 단순히 필터링하고 검사하는 데도 Linux는 너무 많은 일을 요구함
    사용자명이나 호스트명에도 어떤 정보도 남기지 말아야 함. 이 글이 증명하듯 그 정보는 당신에게 불리하게 쓰일 것임

  • Anthropic이 이미 해 온 일을 요약하면 이렇다: 정부가 요구하기 수년 전부터 “모든 인류”의 잘못된 편에 있는 사람들을 걸러냈고, 모델을 임의 방식으로 다운그레이드했으며 나중에 “미안하지만 딱히 미안하진 않다”는 식으로 대응했고, 응답을 몰래 바꿔 사용자에게 잘못된 결과를 주도록 적극적으로 방해했음
    다음엔 뭘 기대해야 하나? 마음에 안 드는 사용자의 머신을 벽돌로 만드는 악성코드? 마음에 안 드는 더 많은 사람으로 확장?
    Dario Amodei의 “모든 인류”를 위한 유토피아적 미래 비전이 어떻게 펼쳐질지 벌써 보이는 것 같음

    • HN의 과민 반응은 우스꽝스러움
      이 사람들이 진심으로 초지능을 만들고 있다고 믿는다는 관점에서 보면 전부 이해 가능함
      AI 안전 진영의 압도적 다수는 보통 HN 안락의자 논객보다 이 문제에 훨씬 많은 삶과 시간을 쏟아 왔고, 중국이 먼저 초지능에 도달하지 못하게 해야 하며, 초지능 접근은 검증된 선한 행위자에게만 허용해야 하고, 이 목표에 실패하면 인류가 멸종하는 경쟁이라고 봄
      “우리가 초지능을 만들고 있다고 생각한다”는 말을 거짓말이라고 가정하지 않으면, 이들이 하는 거의 모든 행동은 이해 가능함
  • 비슷한 시스템 프롬프트 주입 메커니즘을 여기서 보고했었음
    https://news.ycombinator.com/item?id=48259288
    https://github.com/anthropics/claude-code/issues/62061
    예상대로 이런 것의 새롭고 “창의적인” 용도를 계속 찾아내는 듯함
    나는 계속 패치로 제거할 것임

    • 이걸 해줘서 고마움
      시스템 프롬프트가 “추상화를 피하라; 비슷한 코드 세 줄이 헬퍼 하나보다 낫다” 같은 내용을 심고 있는 줄 몰랐음
      나는 동의하지 않는 내용임
      CLAUDE.md에 지시를 넣어 이런 프롬프트를 덮어쓰는 식으로 수정할 방법이 있나? 시스템 프롬프트 자체를 직접 바꾸지는 못하겠지만, CLAUDE.md가 최종 결정권을 가져야 하는 것 아닌가?
  • 글쓴이가 강조하려는 개인정보 우려를 잘 모르겠음
    물론 “은밀한” 일을 하다가 들키면 항상 의심을 사겠지만, 반대로 이런 “보안 기능”이 어떻게 작동하는지 공개해 버리면 구현할 의미가 없음
    그리고 내 생각에 스테가노그래피는 모호함에 의존하는 보안이 아님
    RSA에서 개인키를 비공개로 유지하는 것이 모호함에 의존하는 보안이 아닌 것처럼, 비공개여야 할 것을 비공개로 유지하는 건 보안 모델의 일부

    • Anthropic이 경쟁자의 모델 증류를 늦추기로 하는 건 그들의 재량임
      하지만 내 접근 패턴을 먼저 공개하지 않고 지문 채취하는 방식으로 구현한 지점에서 망쳤음
      이건 “은밀한” 정도가 아니라 그냥 은밀하고, 부정직하고, 비양심적임
      이번 사례가 무해하다는 것도 별 위안이 안 됨. 개인식별정보를 수집하지 않는다고 누가 보장하나?
      그들의 행동이 사업적으로 말이 된다는 건 사람들이 기만적이고 고객 적대적인 결정을 받아들여야 할 이유가 되지 않음
    • 나라가 반대였다면, 중국 소프트웨어가 미국 사용자를 추적하기 위해 동등한 “보안 기능”을 구현했을 때 중국이 미국을 감시·첩보한다고 뉴스가 도배됐을 것임
      아니면 이 가정도 이해 못 하는 건가 싶지만, 사실은 다른 사람의 개인정보에 관심이 없는 것 같음
  • “그래서 이 기능은 주로 지문 채취가 쉬운 사람, 즉 이상하지만 합법적인 일을 하는 일반 개발자를 처벌한다”는데, 여기서 말하는 처벌이 정확히 뭐임?

    • 합법적인 사용인데도 차단될 확률이 높아짐
    • 경쟁자로 의심되어 표시되면 계정을 날려 버림
    • 돈을 내고 산 것과 다른 오염된 잘못된 결과를 돌려주는 것임
    • Anthropic이 한두 달마다 “불법 중국 증류 공격”을 떠들썩하게 말하는 걸 보면, 식별 패턴 중 하나라도 맞으면 이미 모델 성능을 조용히 낮추고 있거나 최소한 검토·예행연습 중이라는 데 돈을 걸 수 있음
      특히 그런 기술이 존재하고 Fable에서 프로덕션에 쓰겠다고 공개적으로 말했던 걸 생각하면 더 그럼
    • 추측하자면 출력 오염 그리고/또는 결국 계정 정지일 것임