Claude Code 스테가노그래피 사건: Anthropic이 Unicode 아포스트로피로 사용자를 분류했던 일

2026년 6월 30일 개발자가 Claude Code 바이너리를 역공학한 결과, ANTHROPIC_BASE_URL이 비공식 엔드포인트를 가리킬 때 시스템 프롬프트 Today's date 행에서 Unicode 아포스트로피와 날짜 구분자가 조용히 바뀌었다는 보고가 나왔습니다. 역공학 보고에 따르면 프록시·게이트웨이 사용자 표식 목적입니다. Claude 웹 버전은 영향 없음, 2.1.197에서 해당 로직은 제거되었습니다.

TL;DR: 본문 대상은 터미널 도구 Claude Code(npm 패키지 @anthropic-ai/claude-code)이며, Claude 웹 채팅이 아닙니다. 역공학 보고에 따르면 환경 변수 ANTHROPIC_BASE_URLapi.anthropic.com이 아닌 프록시·게이트웨이를 가리키면 Anthropic으로 보내는 시스템 프롬프트 Today's date is … 행에 눈으로 구분하기 어려운 Unicode와 날짜 형식 미세 조정이 들어가 비공식 라우트 식별·증류 대응에 쓰였다고 보도되었습니다. 해당 로직은 2.1.197(2026-07-01)에서 제거되었으나 공식 changelog에는 언급되지 않았습니다. Claude Code, Cursor, Copilot 등 데스크톱·터미널 Agent를 쓰는 개발자와 Tech Lead를 위해 2026년 두 건의 독립 논란(4월 Desktop Native Messaging vs 6월 스테가노그래피)을 구분하고, 원리 대조표, 6단계 방어 Runbook, 벤더 신뢰 원칙, FAQ를 정리합니다. 2026 AI 코딩 어시스턴트 선정을 검토 중이라면 「터미널 Agent 신뢰 경계」 보충 자료로 읽으세요.

002026년 Anthropic 신뢰 위기: 두 사건을 혼동하지 말 것

2026년 상반기 Anthropic은 데스크톱 클라이언트터미널 코딩 Agent 두 제품선에서 프라이버시·보안 논란을 연달아 일으켰습니다. 커뮤니티는 둘을 「Claude 스파이웨어」로 통칭하기 쉽지만, 트리거·영향 범위·수정 경로는 완전히 다릅니다. Runbook과 사내 통보 전 아래 「사건 A / 사건 B」 구분을 반드시 하세요.

차원사건 A: Claude Desktop Native Messaging(2026년 4월)사건 B: Claude Code 시스템 프롬프트 스테가노그래피(2026년 6월 30일 폭로)
제품Claude Desktop macOS 클라이언트(Claude.app)Claude Code CLI(@anthropic-ai/claude-code)
최초 공개프라이버시 고문 Alexander Hanff(2026년 4월); 安天实验室(Antiy Labs) 위험 분석 보고개발자 Thereallo(thereallo.dev); Reddit 사용자 LegitMichel777; Hacker News 확산
행동 요약설치 시 Chromium 계열 브라우저에 Native Messaging manifest를 무통보 기록, Claude 확장과 로컬 바이너리 통신 사전 승인. 해당 브라우저 미설치여도 실행ANTHROPIC_BASE_URL이 기본값이 아닐 때 시스템 프롬프트 Today's date is … 행에 Unicode 아포스트로피 변종과 타임존 연동 날짜 구분자 삽입
트리거 조건Claude Desktop 설치·실행커스텀 base URL(프록시, 게이트웨이, API 재판매 등) 경유 API 라우팅만
제3자 확인Digital 520 창업자 Noah Kenney가 Hanff 발견 독립 검증The Register, TechTimes 등 보도; Anthropic 직원 Thariq Shihipar X 답변
커뮤니티 열기프라이버시·ePrivacy 논쟁; Malwarebytes, gHacks 보도Hacker News 350+ 포인트, 100+ 댓글. 「증류 대응은 타당 vs 은밀 수단은 과선」 양파 분열
수정 상태후속 버전 승인 스위치 추가 보도. 근본 공격면 논의 지속2.1.197(2026-07-01) 제거 PR 머지; changelog 미기재

Gemini CLI 오픈소스 신뢰 위기Anthropic AI for Science 전략을 함께 읽을 때 사건 B는 벤더가 모델 증류 대응개발자 도구 투명성 사이에서 내린 트레이드오프로 이해할 수 있습니다. Anthropic 대외 설명상 미승인 재판매 차단이 목적이지만, 스테가노그래피식 마킹changelog 비공개 제거가 신뢰 손실을 키웠습니다.

핵심왜 「한 글자 아포스트로피」가 개발자를 불안하게 하는가

Claude Code는 로컬 또는 CI에서 도는 고권한 터미널 Agent입니다. 저장소를 읽고, 도구를 호출하고, MCP로 외부 시스템에 연결합니다. 개발자의 합리적 기대는 모델로 보내는 system prompt가 UI에서 보이는 내용과 일치하고, 환경 변수는 라우팅에만 영향을 준다는 것입니다. 역공학 보고에 따르면 사건 B는 이 기대를 깨뜨렸습니다.

  • 은밀 채널: 지문이 독립 telemetry 필드가 아니라 매 요청마다 나오는 날짜 행에 숨겨져 육안·diff 도구로 거의 감지 불가.
  • 조건 트리거: api.anthropic.com 직접 연결 사용자는 보고상 해당 분기 미진입. SiliconFlow, DeepSeek 게이트웨이, 기업 리버스 프록시 등 커스텀 ANTHROPIC_BASE_URL 경로에서만 활성화, 국내 「API 중계」 생태계와 높은 겹침.
  • 목록 난독화: 도메인 목록은 base64 + XOR(91) 난독화. 역공학상 약 147개 규칙. deepseek, moonshot, zhipu 등 키워드와 다수 게이트웨이 도메인 포함.
  • 버전 표류: 로직은 보고상 2.1.91(2026년 4월 초)부터 존재. 커뮤니티는 2.1.193 / 2.1.195 / 2.1.196에서도 재현, 2.1.197까지 잔존.
  • 공시 공백: 제거 커밋은 머지됐으나 릴리스 노트 미언급. 기업 컴플라이언스와 SBOM 감사는 changelog만으로 폐루프 어려움.

HN에서는 「모델 증류 보호는 정당한 비즈니스 요구」파와 「유료 개발자 도구에 steganography를 쓰고 사용자에게 알리지 않는 것은 Ask for trust 내러티브와 충돌」파로 나뉩니다. 이 대립 자체가 터미널 Agent 신뢰 모델이 아직 표준화되지 않았음을 보여줍니다.

01스테가노그래피 원리: Today's date 행이 지문을 어떻게 부호화하는가

thereallo.dev와 Vincent Schmalbach 등 역공학 글에 따르면 파이프라인은 4단계로 요약됩니다. (1) process.env.ANTHROPIC_BASE_URL 읽기; (2) 비어 있거나 공식 API면 일반 날짜 행 반환; (3) 그 외 hostname 파싱 후 XOR 디코드 도메인·키워드표 대조; (4) 매치 결과에 따라 Unicode 아포스트로피 선택, 시스템 타임존에 따라 날짜 -/로 바꿀지 결정.

조건(역공학 보고)Today's 내 아포스트로피Unicode날짜 형식 예
비기본 base URL, host가 목록 밖·lab 키워드 없음ASCII 아포스트로피U+0027 '2026-06-30(중국 타임존 외)
host가 알려진 게이트웨이·재판매 도메인 목록 히트오른쪽 작은따옴표U+2019 '동일
host는 목록 미히트 but AI lab 키워드 포함수식 문자 아포스트로피U+02BC ʼ동일
도메인 목록과 키워드 동시 히트수식 문자 primeU+02B9 ʹ동일
시스템 타임존 Asia/Shanghai 또는 Asia/Urumqi(상표와 조합)2026/06/30(-/로 교체)

도메인·키워드표는 바이너리 내 base64 인코딩 후 XOR(91) 저장. 역공학상 합계 약 147개 규칙으로 deepseek, moonshot, zhipu, siliconflow 등과 다수 중계 도메인 포함. Anthropic 서버가 입고 전 정규화하거나 원본 Unicode를 보존하면 같은 영문 행에서 「프록시 경유 여부」「중국 AI 생태계 라우트 유사 여부」「중국 타임존 여부」 등 신호를 읽을 수 있습니다. 보도에 따르면 증류 대응·미승인 재판매 식별 용도이며, 커뮤니티가 입증한 「능동적 스파이 행위」 확정은 아닙니다.

의사 코드(역공학 보고 기반 복원, 비공식 소스)
function renderDateLine(date) {
  if (!customBaseUrl()) return `Today's date is ${date}.`;
  const { knownHost, labKeyword, cnTZ } = classifyRoute();
  const apostrophe = pickApostrophe(knownHost, labKeyword);
  const rendered = cnTZ ? date.replaceAll("-", "/") : date;
  return `Today${apostrophe}s date is ${rendered}.`;
}
  • 인용 가능 데이터 1: 스테가노그래피 로직은 Claude Code 2.1.91부터 존재, 폭로 시 2.1.196에서도 검출 가능했다고 보고.
  • 인용 가능 데이터 2: 난독화 도메인·키워드 규칙표 역공학상 약 147개, XOR(91)과 base64로 은닉.
  • 인용 가능 데이터 3: Hacker News 관련 글 350+ 포인트, 100+ 댓글. 커뮤니티는 「증류 대응 타당」과 「개발자 도구 은밀 마킹 불가」 두 camp로 분열.

02버전 타임라인과 동기: 보도 vs 공식 대응

버전 / 시기공개 정보와 역공학 보고
2.1.91(2026-04-02 전후)Reddit 사용자 LegitMichel777이 이 버전에서 관련 로직 발견 보고
2.1.193 / 2.1.195 / 2.1.196커뮤니티가 npm 패키지·embedded chunk에서 스테가노그래피 분기 재현
2026-06-30Thereallo 역공학 장문 공개; HN/Reddit 확산
2.1.197(2026-07-01)제거 PR 머지; 공식 changelog에 스테가노그래피 삭제 미기재

Anthropic 직원 Thariq Shihipar는 X에서 회사 설명상 3월 시작 실험으로 미승인 재판매 방지·모델 증류 보호 목적이며 다음 버전 롤백 예정이었다고 밝혔습니다. The Register 등은 Anthropic이 코드 존재를 인정하고 수정을 약속했다고 보도했습니다. 모두 대외 발언입니다. 서버가 마크를 실제 소비하는지, 계정 리스크 관리에 영향을 주는지는 Anthropic 미공개이므로 본문은 미공개 결과를 사실 단정하지 않습니다.

동시기 소스 유출로 ANTI_DISTILLATION_CC 등 다른 증류 대응(요청에 방해적 tool 데이터 주입 등)도 노출되었습니다. 보도에 따르면 스테가노그래피는 같은 「모델 보호」 도구상자 일부이지만, system prompt 은밀 수정은 문서화 API 필드보다 개발자 신뢰 손상이 큽니다.

03「스파이웨어」인가? 두 사건의 각각의 정성

사건 A: 무승인 로컬 채널 사전 설정

Hanff와 Antiy Labs 핵심 주장은 Claude Desktop이 사용자 무통보로 Chrome, Edge, Brave, Arc, Vivaldi, Opera 등 경로에 com.anthropic.claude_browser_extension.json을 기록하고 확장 ID와 로컬 helper 통신을 사전 승인한다는 것입니다. 삭제 후 앱 재시작 시 자동 재생성된다고 보고. Noah Kenney는 독립 확인해 「브라우저 확장 → 샌드박스 밖 바이너리」 영구 사전 승인 브리지가 형성된다고 지적했습니다.

위험 사슬은 Anthropic 자사 문서가 Claude for Chrome에 prompt injection 위험이 있고, 완화 없이 공격 성공률 23.6%, 완화 후에도 약 11.2%라고 적은 점에 있습니다. 확장 설치·manifest 사전 설정 시 보안 분석에 따르면 악성 페이지 주입이 확장·Native Messaging 경유로 사용자 권한 로컬 능력에 닿을 이론적 가능성이 있습니다. 무승인 로컬 설정 변경 + 알려진 고성공률 주입면 조합이며, 전통적 트로이는 아니지만 컴플라이언스·ePrivacy 논쟁은 큽니다.

사건 B: 미공개 프롬프트층 텔레메트리

사건 B는 로컬 파일을 수정하지 않고, 사용자 비가시 system prompt에 분류 신호를 삽입하며 별도 opt-in 설명 없음. 역공학 보고상 미공개 텔레메트리·분류 채널에 해당, 사용자 투명성·데이터 최소화 원칙에 불리합니다. 「스파이웨어」 여부는 관할·계약에 따르며, 공학적으로는 개발자 도구 내 은밀 분류 마크, 제거 시 changelog 미기재가 더 정확한 표현입니다.

표현 규율: Anthropic 동기에는 전문에서 「보도에 따르면」「역공학 보고에서는」「대외 설명에서는」을 사용하고, 미공개 서버 용도·계정 처벌을 단정하지 않습니다. 사내 감사는 사건 A manifest 경로와 사건 B base URL·버전 번호를 모두 다루세요.

046단계 방어 Runbook(Claude Code + Desktop)

  1. 01
    ANTHROPIC_BASE_URL 확인: shell, ~/.claude/settings.json, CI 시크릿 저장소에서 모든 Claude Code 인스턴스 나열. 비공식 API를 가리키면 역공학 보고상 스테가노그래피 분기 트리거. 기업 게이트웨이는 문서화하고 보안 승인.
  2. 02
    Claude Code ≥ 2.1.197 업그레이드: claude --version 또는 npm ls -g @anthropic-ai/claude-code 실행. 2.1.197 미만은 보고상 스테가노그래피 로직 포함. 업그레이드 후에도 changelog 미기재로 바이너리 검증 또는 버전 고정 필요.
  3. 03
    Claude Desktop Native Messaging 감사: macOS에서 ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ 및 Edge, Brave, Arc 등 동등 경로에 com.anthropic.claude_browser_extension.json 존재 확인. 브라우저 자동화 불필요 시 manifest 삭제 후 Desktop 재시작 시 재생성 여부 기록.
  4. 04
    시스템 타임존 대조: 사건 B는 보고상 Asia/Shanghai, Asia/Urumqi에서 날짜 구분자 전환. CI·클라우드 dev box는 의도 타임존 사용해 오표식 방지. 필요 시 TZ=UTC 문서 고정.
  5. 05
    기업 최소 권한: Desktop 설치·base URL·API Key 설정 권한 제한. MCP·브라우저 확장 승인 요구. Claude Code와 프로덕션 시크릿 분리.
  6. 06
    개발 환경 격리·감사: 독립 Mac 또는 클라우드 베어메탈 노드에서 Agent 실행, 일상 브라우징·개인 Apple ID와 분리. 주기적으로 outbound system prompt 샘플 grep(MITM 실험 환경) 또는 벤더 SBOM 의존. 안정·리셋 가능 Mac CI/Agent 호스트가 필요하면 NUKCLOUD 가격주문 페이지로 전용 노드 개통.

05AI 벤더 신뢰: 실행 가능한 4원칙

터미널 Agent는 코드를 읽고, 도구를 호출하고, API Key를 보유합니다. 2026년 Claude Code 스테가노그래피와 Desktop manifest 논란은 벤더 문서 ≠ 런타임 동작을 보여줍니다. 조달·플랫폼 팀은 다음 4원칙을 채택할 수 있습니다(Anthropic, Google, OpenAI, Cursor 등 적용):

  1. 행동 가관측성: system prompt 주입, 환경 변수 트리거 로직, 로컬 파일 기록에 공개 설명 또는 SBOM 요구. changelog는 보안 관련 제거 반드시 기재.
  2. 데이터 최소화: 분류·남용 대응은 명시 API 필드 또는 opt-in telemetry 우선. steganography식 은밀 채널 회피.
  3. 로컬 변경에는 consent: Native Messaging, 브라우저 확장, LaunchAgent 등 사전 설정은 원칙 위반. 최초 사용 시 항목별 승인 필요.
  4. 공급망 검증: 버전 고정, npm 패키지 hash 검증, 격리 환경 diff. Agent 호스트와 프로덕션 네트워크 분리로 원클릭 재구축.

데스크톱 Agent와 Claude Code류 도구의 신뢰 리스크는 모델 답변 품질보다 미감사 로컬 부작용비가시 outbound payload에 있습니다. 공유 노트북·오버셀 VPS에서 7×24 Agent를 돌리면 이웃 테넌트 간섭·장시간 연결 끊김이 겹칩니다. 감사 가능·SSH 가능·Xcode와 Claude Code를 올릴 프로덕션/CI 평면에는 NUKCLOUD 다리전 Apple Silicon 베어메탈 Mac / 클라우드 Mac 노드가 전용 물리기, Root 권한, 일/월 유연 과금을 제공해 Agent 환경과 기업 일상기를 분리·노출면 축소합니다. 먼저 가격 페이지에서 사양을 대조하고 주문 페이지에서 격리 dev 환경을 시험하세요.

06자주 묻는 질문

Claude Code 스테가노그래피는 스파이웨어인가?
법적 정성은 관할마다 다릅니다. 공학적으로 사건 B는 UI 미공개 system prompt 분류 마크, 사건 A는 무승인 로컬 Native Messaging 사전 설정입니다. 둘 다 신뢰를 크게 해치지만 「스파이웨어」 여부는 계약·현지법에 따릅니다. 기업은 아래 Runbook으로 완화하고 브랜드 신뢰만 의존해서는 안 됩니다.
일반 Claude 웹 버전은 영향받나?
아니요. 스테가노그래피 로직은 Claude Code CLI 클라이언트 내부에 있으며 브라우저 채팅과 무관합니다. claude.ai만 쓰면 사건 B 때문에 CLI 업그레이드 불필요. 다만 같은 머신에 Claude Code 또는 Desktop이 있으면 각각 버전·manifest를 별도 처리하세요.
Claude Desktop이 기록한 Native Messaging 주입을 삭제하려면?
macOS 각 Chromium 브라우저 NativeMessagingHosts 디렉터리에서 com.anthropic.claude_browser_extension.json 삭제 후 Claude Desktop 재시작 시 재생성 여부 확인. Hanff 보고에 따르면 삭제 후 앱이 재생성할 수 있음. 장기안은 Desktop 브라우저 연동 비활성, 해당 동작 없는 버전 사용, 디렉터리 변경 모니터링.
타임존을 중국으로 설정하면 태그되나?
타임존만으로는 부족. 역공학 보고상 날짜 -/ANTHROPIC_BASE_URL이 비공식 엔드포인트를 가리키고 그리고 타임존이 Asia/Shanghai 또는 Asia/Urumqi일 때 겹쳐 적용됩니다. 공식 API 직결 시 보고상 해당 코드 경로 미진입.
apostrophe trick(아포스트로피 트릭)이란?
Today's에서 ASCII 아포스트로피 U+0027을 시각적으로 거의 같은 U+2019, U+02BC, U+02B9로 바꿔 「도메인 목록 히트 / AI lab 키워드 히트」 등 조합을 부호화. 사람이 읽기엔 차이 없고 Unicode 인식 로그·서버에서 디코드 가능.
4월 Desktop 사건과 6월 스테가노그래피는 같은 일인가?
아닙니다. 사건 A는 Claude Desktop·브라우저 브리지, 사건 B는 커스텀 API 라우트 하 Claude Code system prompt. 제품·트리거·수정 버전 모두 다르므로 사내 통보·보안 스캔은 별도 항목으로 나열하세요.
Anthropic은 왜 이걸 추가했나(공개 설명)?
Thariq Shihipar는 회사 설명상 미승인 재판매·모델 증류 대상 실험이었다고 밝혔습니다. The Register는 분류기·행동 지문 등 증류 대응 투자를 보도. 커뮤니티 쟁점은 목적은 이해할 수 있으나 개발자 도구 outbound prompt 은밀 수정 방식은 받아들이기 어렵고 제거도 changelog 미기재.
Claude Code를 2.1.197로 올려야 하나?
업그레이드 권장. 2.1.197에서 스테가노그래피 PR 제거 완료. 커스텀 ANTHROPIC_BASE_URL 사용 이력이 있으면 업그레이드 후 환경 변수·CI 이미지 재확인. changelog 미기재로 컴플라이언스 팀은 업그레이드 기록·버전 고정 정책 보관 권장.
API 중계(국내 게이트웨이 등)를 쓰면 반드시 마킹되나?
역공학 보고상 ANTHROPIC_BASE_URL이 비공식이고 host가 규칙표·키워드에 매치하면 날짜 행이 바뀔 수 있음. 2.1.197 이전 해당 동작 존재. 업그레이드 후 로직 제거됐으나 ANTI_DISTILLATION_CC 등 다른 증류 대응은 벤더 업데이트·커뮤니티 역공학 지속 추적 필요.

07참고 출처

  • The Register — Anthropic Claude Code 은밀 코드 제거 보도
  • thereallo.dev — 시스템 프롬프트 스테가노그래피 역공학 장문
  • 安天实验室 Antiy Labs — Claude Desktop Native Messaging 위험 분석
  • Alexander Hanff — Claude Desktop 무통보 manifest 설치 최초 공개(That Privacy Guy 등 전재)
  • Hacker News — 2026년 6월 말 관련 논의(350+ 포인트, 100+ 댓글 규모)
  • Reddit — LegitMichel777 등 2.1.91 동작 논의
  • Vincent Schmalbach, TechTimes 등 ANTHROPIC_BASE_URL·Unicode 마킹 기술 후속

터미널 Agent는 「Root 권한 인턴」이 되어 가고 있습니다. Claude Code 스테가노그래피 사건은 Cursor vs Claude Code vs Copilot 선정 시 SWE-bench·가격 외에 — 모델로 보내는 prompt를 조용히 바꾸지 않는가 — 를 물어야 함을 상기시킵니다. Agent를 재구축 가능한 격리 Mac에 가두는 것은 2026년 현실적 한 표입니다.