클로드 코드는 요청에 스테가노그래피 표시를 하고 있음
3 days ago
7
- 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이면 날짜 표기가 달라짐
- 호스트명 분류 결과에 따라 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 게이트웨이를 감지하려면 문서화된 명시적 텔레메트리 필드, 공개 정책, 릴리스 노트 같은 방식도 가능함
- 파일시스템과 셸 접근 권한을 가진 도구가 보이지 않는 프롬프트 문장부호에 분류 비트를 숨기면, 다른 개인정보 보호 주장도 믿기 어려워짐
-
Homepage
-
개발자
- 클로드 코드는 요청에 스테가노그래피 표시를 하고 있음