Claude Code 스테가노그래피 사건: Anthropic의 숨겨진 Unicode 지문 (2026)

프록시 경유 Claude Code 사용자·DevSecOps 담당자가 마주한 2026년 6월 「보이지 않는 지문」 보도——ANTHROPIC_BASE_URLapi.anthropic.com 이외를 가리키면, 보도에 따르면 system 프롬프트의 「Today's date is…」 행에 Unicode 작은따옴표와 날짜 구분자가 몰래 바뀌는 것으로 알려졌습니다. 본문은 사건 A(4월·Claude Desktop Native Messaging)와 사건 B(6월·Claude Code 스테가노그래피) 구분, Unicode 대응표, XOR(91) 난독화, 147개 규칙, HN 350+ 포인트 논쟁, 2.1.197 제거까지 다루며 5단계 방어 Runbook과 FAQ 10문을 제공합니다.

터미널의 소스코드 분석 화면——개발자 도구 보안 감사를 상징하는 이미지

목차

一、과제: Claude Code 사용자가 겪는 세 가지 불안

  1. 비공개 클라이언트 변조: 셸 실행·파일 읽기/쓰기 권한을 맡기는 개발자 도구에 릴리스 노트 미기재 분류 로직이 포함되어 있었다——보도에 따르면 개발자 커뮤니티에 큰 신뢰 위기를 초래한 것으로 알려졌습니다.
  2. 사건 혼동 위험: 2026년 4월 Claude Desktop Native Messaging 문제(Alexander Hanff 보고)와 6월 30일 Claude Code 스테가노그래피 보고(thereallo.dev)가 하나의 「Anthropic 스파이웨어」 내러티브로 묶여, 기술적으로 다른 두 사건을 구분하기 어렵습니다.
  3. 프록시 사용자의 사각지대: ANTHROPIC_BASE_URL로 기업 게이트웨이나 OpenAI 호환 라우터를 설정한 팀은 일반 API 사용자와 다른 코드 경로를 탈 수 있으며, 자사가 분류 대상인지 확인할 수단이 없었습니다.

二、사건 A vs 사건 B: 비교 매트릭스

Anthropic 생태계에서 2026년 상반기 보도된 두 가지 「비공개 동작」은 제품·메커니즘·연구자가 다릅니다. 혼동을 피하기 위해 아래 표로 정리합니다.

비교 축사건 A: Claude Desktop (2026년 4월)사건 B: Claude Code (2026년 6월)
보고자프라이버시 연구자 Alexander Hanff개발자 thereallo (thereallo.dev)
대상 제품Claude Desktop (macOS Electron 앱)Claude Code CLI (npm/@anthropic-ai/claude-code)
메커니즘Chromium 계열 7개 브라우저에 com.anthropic.claude_browser_extension.json Native Messaging 매니페스트를 무고지로 기록·실행 시 재생성system 프롬프트 「Today's date is…」 행의 Unicode 작은따옴표 교체 + 날짜 구분자 변경
발화 조건Claude Desktop 설치·실행 (사용자 동의 없음)ANTHROPIC_BASE_URLapi.anthropic.com인 경우만 (보도에 따름)
독립 검증Noah Kenney가 Hanff 주장을 재현 가능하다고 확인했다고 보도됨HN 커뮤니티 350+ 포인트 논의, 다수 매체가 역공학 인용
Anthropic 대응UI에 노출되지 않는 「Chrome Extension MCP」 서브시스템으로 존재Thariq Shihipar가 「실험적 대책」이라 설명, v2.1.197(2026년 7월 1일)에서 제거 보도
비판 초점OS 권한 무고지 변경·ePrivacy Directive Article 5(3) 위반 가능성프롬프트 내 비밀 채널·개발자 도구 신뢰 훼손·증류 대책의 불투명성
사건 A는 「브라우저 샌드박스 밖 사전 승인 브리지」, 사건 B는 「모델 컨텍스트 내 보이지 않는 텔레메트리」——모두 Anthropic이 사용자에게 명시하지 않은 동작이지만, 공격면과 영향 범위는 근본적으로 다릅니다.

三、기술 해부: Unicode·트리거·난독화

3.1 발화 조건: ANTHROPIC_BASE_URL

보도에 따른 역공학에서는 Claude Code가 환경 변수 ANTHROPIC_BASE_URL을 읽고, 미설정이거나 api.anthropic.com을 가리키면 일반 날짜 행을 반환하는 것으로 알려졌습니다. 커스텀 엔드포인트——기업 API 게이트웨이, LiteLLM 프록시, OpenAI 호환 라우터, 비공식 리셀러 API——가 설정된 경우에만 분류 로직이 작동한다고 보도되었습니다.

3.2 Unicode 작은따옴표 매핑표

보고서에 따르면 프록시 감지 상태가 「Today's」의 작은따옴표 변형에 인코딩되는 것으로 알려졌습니다. 육안으로는 구분이 어렵지만 Unicode 코드포인트로 판별 가능합니다.

문자Unicode명칭보도된 의미
'U+0027APOSTROPHE (ASCII)베이스라인 (트리거 없음 / 알려진 도메인·랩 KW 모두 미감지)
'U+2019RIGHT SINGLE QUOTATION MARK알려진 도메인(known domain) 감지
ʼU+02BCMODIFIER LETTER APOSTROPHEAI 랩 키워드(lab keyword) 감지
ʹU+02B9MODIFIER LETTER PRIME알려진 도메인 + 랩 KW 모두 감지

3.3 타임존 감지: Asia/Shanghai / Asia/Urumqi

보도에 따르면 커스텀 BASE_URL이 설정된 경우 시스템 타임존이 Asia/Shanghai 또는 Asia/Urumqi이면 날짜 구분자가 YYYY-MM-DD에서 YYYY/MM/DD로 바뀌는 것으로 알려졌습니다. VPN 연결 하에서도 일반 엔드포인트 사용자는 대상이 아니라고 보도되었으며, 프록시 설정과 타임존의 조합이 분류 비트를 구성하는 것으로 추정됩니다.

3.4 base64 + XOR(91) 난독화와 147개 규칙

thereallo.dev 보고서에 따르면 도메인 목록과 AI 랩 키워드 목록은 base64 인코딩 후 XOR 키 91로 난독화되어 바이너리에 임베드된 것으로 알려졌습니다. 엄격한 암호화가 아니라 casual 문자열 검색을 피하기 위한 수준입니다. 디코딩된 키워드에는 deepseek, moonshot, minimax, zhipu, baichuan, stepfun, 01ai 등이 포함되는 것으로 보도되었고, 도메인 규칙은 약 147개에 달한다고 알려졌습니다.

// 보도에서 언급된 난독화 디코더 개념 예 (Kup=91이 XOR 키) var Kup = 91; function decodeList(obfuscated) { var raw = atob(obfuscated); var out = ""; for (var i = 0; i < raw.length; i++) { out += String.fromCharCode(raw.charCodeAt(i) ^ Kup); } return out; }

3.5 anti-distillation(증류 방지) 동기

Anthropic은 2026년 2월경 증류 공격 방어 투자——분류기, 행동 지문, ANTI_DISTILLATION_CC 플래그를 통한 가짜 도구 데이터 주입——을 공표했습니다. Claude Code 팀 Thariq Shihipar는 이번 코드를 「3월에 시작한 실험」으로 「불법 리셀러 방지와 증류 보호」가 목적이었다고 X에서 설명했다고 보도되었습니다. 그러나 릴리스 노트 2.1.91(2026년 4월 2일)에는 전혀 기재되지 않았고, 비공개 구현 선택이 비판의 중심이 되었습니다.

四、버전 타임라인

날짜버전 / 이벤트
2026년 4월 2일Claude Code v2.1.91 릴리스——보도에 따르면 스테가노그래피 로직 최초 등장 (CHANGELOG 미기재)
2026년 4월 20일경사건 A: Alexander Hanff, Claude Desktop Native Messaging 문제 공개
2026년 6월 30일사건 B: Reddit 게시 후 thereallo.dev Claude Code 역공학 보고서 공개
확인 버전v2.1.193, v2.1.195, v2.1.196에 해당 코드 존재 보도
2026년 7월 1일v2.1.197 릴리스——Anthropic PR 머지 완료, 스테가노그래피 코드 완전 제거 보도
논의 규모Hacker News 350포인트 이상 논의, 각종 매체 후속 보도

五、인용 가능한 하드 데이터

  1. Unicode 코드포인트 4종 + 날짜 구분자 1비트: 보도에 따르면 프록시 분류 상태(known domain / lab keyword / 중국 TZ)가 총 4비트 상당 정보를 「Today's date is 2026/06/30.」 같은 무해한 영문에 삽입되는 것으로 알려졌습니다.
  2. 147개 도메인 규칙 + 7개 AI 랩 키워드: XOR(91) 난독화 목록에 중국계 AI 기업 도메인, 프록시/리셀러 URL, deepseek/moonshot/zhipu 등 키워드가 포함된다고 보도되었습니다.
  3. Claude for Chrome prompt injection 성공률 23.6%(완화 전) / 11.2%(완화 후): 사건 A 맥락에서 인용되는 Anthropic 공식 수치——Native Messaging 브리지와 결합 시 공격면 확대 우려가 Antiy Labs 보고서 등에서 지적되었습니다.

六、5단계 방어 Runbook: Claude Code 스테가노그래피 대응

  1. 버전 감사 및 즉시 업데이트: claude --version으로 2.1.197 이상 확인. npm update -g @anthropic-ai/claude-code로 최신 버전으로. 2.1.193–196은 보도된 로직 포함 가능.
  2. ANTHROPIC_BASE_URL 점검: 셸 프로필, .env, CI/CD 시크릿, launchd plist 내 BASE_URL 덮어쓰기 목록화. 정당한 기업 게이트웨이인지 리셀러 API인지 문서화.
  3. system 프롬프트 스팟 검사: API 프록시 미러 또는 디버그 로그로 system 프롬프트 내 「Today's date is…」 행 확인. U+0027 이외 작은따옴표나 YYYY/MM/DD 형식은 지문 흔적 가능성.
  4. API 라우팅 정규화: 가능하면 ANTHROPIC_BASE_URL 삭제 후 공식 엔드포인트 사용. LiteLLM 등 게이트웨이 필수 환경에서는 Anthropic 계약 범위 내인지 확인하고 프롬프트 변조 여부 정기 감사.
  5. 격리 검증 환경 구축: 프로덕션 API Key와 분리된 검증 노드에서 Claude Code 운영, JSONL 로그로 프롬프트 변조 지속 모니터링. Mac 클라우드 노드 분리 배포 권장.
# 1단계: 버전 확인 및 업데이트 claude --version # 2.1.197 미만이면 업데이트 npm update -g @anthropic-ai/claude-code # 2단계: BASE_URL 설정 확인 echo $ANTHROPIC_BASE_URL grep -r "ANTHROPIC_BASE_URL" ~/.zshrc ~/.bashrc ~/.env* 2>/dev/null # 4단계: 공식 엔드포인트로 정규화 (임시) unset ANTHROPIC_BASE_URL

맺음말: 벤더 신뢰와 Mac 클라우드라는 선택

Claude Code 스테가노그래피 사건은 AI 벤더가 클라이언트 측에서 비공개 분류 신호를 삽입하는 설계 선택이 개발자 커뮤니티 신뢰를 어떻게 흔드는지 보여준 사례입니다. Anthropic은 코드 제거(v2.1.197)와 「실험적 대책이었다」는 설명으로 대응했다고 보도되었지만, CHANGELOG 미기재 구현은 앞으로도 모니터링이 필요합니다. Linux GPU VPS에서 Claude Code 게이트웨이를 자체 운영하는 방법도 있으나, CUDA 드라이버 트러블슈팅·셸 권한 관리·프롬프트 감사 복잡성은 장기 운영 비용을 높입니다. Windows WSL 경유 Claude Code 사용도 가능하지만 Apple Silicon 최적화 툴체인이나 launchd 7×24 상주와의 궁합은 제한적입니다. 프롬프트 변조를 격리 검증하고, API Key를 분리하고, JSONL 로그로 감사 가능한 Claude Code 프로덕션 환경을 구축하려면 VPSMAC M4 Mac 클라우드 노드가 더 안정적인 선택입니다: 네이티브 macOS, SSH 즉시 연결, launchd 데몬, Cursor Agent / Claude Code 워크플로와의 자연스러운 공존——프록시 설정 점검부터 격리 검증까지 하나의 Mac 노드에서 완결됩니다.

七、FAQ

Q1: 스테가노그래피 지문이란 무엇인가요?

보도에 따르면 ANTHROPIC_BASE_URL이 커스텀 프록시를 가리킬 때 Claude Code는 system 프롬프트의 작은따옴표를 Unicode 변형으로 바꿔 분류 정보를 Anthropic 서버로 보내는 것으로 알려졌습니다.

Q2: 일반 api.anthropic.com 사용자에게도 영향이 있나요?

역공학 보고서에 따르면 BASE_URL이 미설정이거나 공식 엔드포인트이면 이 코드 경로는 실행되지 않는 것으로 알려졌습니다.

Q3: 사건 A와 B의 차이는?

사건 A(4월)는 Claude Desktop Native Messaging 무고지 설치, 사건 B(6월)는 Claude Code 프롬프트 내 Unicode 마킹——제품과 메커니즘이 다릅니다.

Q4: 영향 버전은?

보도에 따르면 2.1.193–196에서 확인, 2.1.91(4월 2일)부터 존재, 2.1.197(7월 1일)에서 제거되었습니다.

Q5: Anthropic은 인정했나요?

Thariq Shihipar가 X에서 「3월 시작 실험적 대책」이라 설명하고 2.1.197에서 롤백 예정이라고 보도되었습니다.

Q6: 왜 구현되었나요?

불법 리셀러 방지와 모델 증류(distillation) 대응이 목적이었다고 보도되었습니다. ANTI_DISTILLATION_CC 등과 병행한 방어책의 일환으로 추정됩니다.

Q7: 스파이웨어라고 할 수 있나요?

사건 A는 OS 권한 변경, 사건 B는 비밀 채널——모두 「스파이웨어」 명칭으로 논쟁되었습니다. Anthropic은 악의적 기능이 아니라고 설명했다고 보도되었습니다.

Q8: Asia/Shanghai만으로 마킹되나요?

주요 트리거는 ANTHROPIC_BASE_URL 덮어쓰기입니다. 중국 TZ는 추가 비트로 날짜 구분자를 변경한다고 보도되었습니다.

Q9: 지문 확인 방법은?

system 프롬프트 「Today's date is…」 행의 Unicode 코드포인트와 날짜 구분자 확인. 2.1.197 이상 업데이트 권장.

Q10: 기업 게이트웨이도 대상인가요?

보도에 따르면 api.anthropic.com 이외 모든 커스텀 엔드포인트가 분류 대상이 될 수 있습니다. 사내 프록시 사용 시 영향 범위를 확인하세요.

八、출처