저도 처음 이 글 봤을 때 "설마?" 했거든요.
Claude Code. 요즘 AI 코딩 도구 중에서 가장 많이 쓰는 것 중 하나죠. 파일 읽고, 명령어 실행하고, 깃 커밋까지 직접 하는 도구인데.
근데 이 도구가 내가 보내는 프롬프트에 몰래 뭔가를 심고 있었다는 게 밝혀졌어요.
스테가노그래피(Steganography)라는 기술이에요. 원래 이미지나 파일 안에 숨겨진 정보를 심는 기법인데, 여기선 텍스트 프롬프트에 적용된 거거든요.
어떻게 발견됐나
보안 연구자 Thereallo가 Claude Code 바이너리를 직접 뜯어봤어요.
이유는 단순해요. Claude Code는 파일 시스템, 쉘, 브라우저, 심지어 컴퓨터 전체에 접근하는 도구잖아요. 그러면 그 도구 자체가 뭘 하는지도 봐야 하는 거죠.
그래서 로컬에 설치된 Claude Code 2.1.196 버전을 분석했고, 시스템 프롬프트를 만드는 함수 하나를 발견했어요.

Claude Code terminal
뭘 바꾸는 건데요?
원래 Claude Code가 모델한테 보내는 시스템 프롬프트엔 이런 날짜 문자열이 들어가요.
Today's date is 2026-06-30.
근데 특정 조건이 충족되면 두 가지가 슬쩍 바뀌어요.
1. 아포스트로피(') 가 바뀐다
| 일반 환경 | ' (일반 따옴표) |
| 알려진 도메인 | \u2019 (오른쪽 곱슬 따옴표) |
| AI 랩 키워드 | \u02BC (수정자 기호) |
| 둘 다 해당 | \u02B9 (또 다른 기호) |
모노스페이스 폰트에서 보면 거의 구분이 안 돼요. 그러니까 사람 눈엔 똑같이 보이는 거죠.
2. 날짜 구분자가 바뀐다
타임존이 Asia/Shanghai 또는 Asia/Urumqi이면 날짜 형식이 2026-06-30에서 2026/06/30으로 바뀌어요.
어떤 조건에서 발동되나
트리거는 ANTHROPIC_BASE_URL이에요.
이게 설정되어 있을 때만 작동해요. 그리고 그 URL의 도메인을 분석해서 어떤 마커를 심을지 결정하는 거거든요.
확인하는 것들은 세 가지예요.
- 타임존: 중국 타임존(Asia/Shanghai, Asia/Urumqi)인지
- 도메인 목록: 미리 정의된 도메인 목록에 해당하는지
- 키워드: URL에 특정 AI 랩 키워드가 포함되어 있는지
키워드 목록이 흥미로운데, 디코딩해보면 이렇게 나와요.
deepseek, moonshot, minimax, zhipu, bigmodel, baichuan, stepfun, 01ai, dashscope, volces
전부 중국계 AI 서비스들이에요.
도메인 목록에는 baidu.com, alibaba-inc.com, bytedance.net 같은 중국 대형 IT 기업 도메인들이랑, anyrouter.top, openclaude.me, proxyai.com 같은 Claude API 리셀러/프록시 도메인들이 잔뜩 들어있어요.
근데 이게 왜 문제냐면

코드 자체에서 이 도메인 목록을 숨기는 방식도 주목할 만해요.
Base64 인코딩에 XOR 키 91을 적용해서 난독화해놨거든요. 리버스 엔지니어링을 막으려는 거죠.
의도 자체는 이해가 가요. API 리셀러 탐지, 무단 게이트웨이 감지, 모델 증류 공격 파이프라인 차단. 다 나름 합리적인 이유가 있어요.
근데 방식이 문제예요.
공식 문서에 없고, 릴리즈 노트에도 없고, 사용자한테 알리지도 않았어요.
그냥 조용히, 내가 보내는 시스템 프롬프트를 바꿔버리는 거예요.
내 환경에선 해당되나
솔직히 대부분은 해당 안 돼요.
공식 Anthropic API를 그대로 쓰고 있으면? ANTHROPIC_BASE_URL이 설정 안 돼 있으면 코드 자체가 일찍 리턴해버려요. 아무 마커도 안 심겨요.
주의해야 할 케이스는 이런 경우예요.
- 회사 내부 AI 게이트웨이를 통해 Claude Code를 쓰는 경우
- 로컬 프록시를 거쳐서 쓰는 경우
- 모델 라우터나 리셀러 서비스를 쓰는 경우
ANTHROPIC_BASE_URL을 커스텀으로 설정해서 쓰고 있다면, 그 URL이 저 목록에 걸릴 수도 있어요.
그리고 역설적이게도, 이걸 우회하는 건 쉬워요. 도메인 바꾸거나, 타임존 바꾸거나, 바이너리 패치하면 돼요. 진짜 악의적인 공격자는 이걸로 못 잡는다는 뜻이에요.
결국 피해를 보는 건 이상하지만 합법적인 용도로 쓰는 일반 개발자들이 되는 거죠.
결국 핵심은 이거예요
Claude Code는 파일 시스템, 쉘, 깃 커밋까지 건드리는 도구예요. 그만큼 신뢰를 바탕으로 써야 하는 도구죠.
그런 도구가 사용자 모르게 시스템 프롬프트를 수정하고, 그 로직을 난독화해서 숨겨뒀다는 건 투명성의 문제예요.
API 남용을 막고 싶었다면 명시적인 텔레메트리 필드를 쓰면 됐어요. 문서에 적어도 됐고요.
신뢰는 결국 아무것도 안 일어나는 것처럼 보이는 순간에 쌓이는 거거든요.
'AI 인공지능' 카테고리의 다른 글
| AI 고객센터에 "나 주인인데요" 했더니 계정을 내줬다 — Meta 인스타그램 해킹 사건 (1) | 2026.06.07 |
|---|---|
| "알아서 끝까지 해" — AI한테 이 말 하면 안 되는 순간이 있어요 (0) | 2026.06.05 |
| AI 쓰다가 F 맞은 버클리 CS 학생들 — 한국도 예외가 아니다 (1) | 2026.06.04 |
| AI 에이전트가 멈췄는데, 아무도 몰랐다 (0) | 2026.06.03 |
| Meta AI 챗봇이 인스타그램 계정을 내줬다 — AI 고객지원의 치명적 구멍 (0) | 2026.06.02 |