클로드 코드가 시스템 프롬프트에 보이지 않는 유니코드 마커를 몰래 심어온 사실이 드러났어요. 아포스트로피 문자 하나로 프록시 위치를 3비트로 인코딩해 중국 사용자를 골라냈어요. 앤트로픽은 3월부터 진행된 실험이라며 다음 버전에서 조용히 걷어내겠다고 밝혔어요.
솔직히 이 뉴스 보고 좀 소름 돋았어요. 클로드 코드를 매일 쓰는 개발자 입장에서는 더더욱요. 지난 6월 30일, 레딧 유저 LegitMichel777이라는 사람이 클로드 코드 v2.1.91 바이너리를 역분석하다가 이상한 걸 발견했다고 올렸는데, 그게 하루 만에 해커뉴스 605점을 찍으며 1위까지 올라갔어요.
뭘 발견했냐면요, 클로드 코드가 시스템 프롬프트에 넣는 "Today's date is..." 라는 문장에서 저 아포스트로피(') 글자가 매번 미묘하게 다른 유니코드 문자로 바뀐다는 거예요. 사람 눈에는 똑같이 보이지만 실제로는 4종류— 일반 아스키 아포스트로피, 오른쪽 홑따옴표(U+2019), 수정자 문자 아포스트로피(U+02BC), 수정자 문자 프라임(U+02B9) — 가 번갈아 쓰이고 있었대요. 그리고 이 4가지 조합이 사용자의 프록시 호스트네임이 알려진 중국 도메인 목록에 걸리는지, AI 랩 키워드 목록에 걸리는지, 둘 다인지, 둘 다 아닌지를 나타내는 2비트짜리 신호였다는 거죠. 여기에 날짜 포맷까지 더하면 사실상 3비트 핑거프린트가 매 요청마다 몰래 실려 있던 셈이에요. 심지어 XOR 키 91로 한 번 더 흐려놨다고 하니, 대충 발견되라고 만든 코드는 아니었던 것 같아요.
탐지 트리거는 사용자의 로컬 타임존(Asia/Shanghai, Asia/Urumqi 같은)이랑 접속 중인 프록시 URL이었어요. 즉 중국 지역에서, 혹은 중국을 경유하는 프록시로 클로드 코드를 쓰는 사람들을 조용히 구분해서 표시해뒀던 거죠.
이 코드가 처음 배포된 게 4월 2일이니까, 발각되기까지 거의 석 달 가까이 아무도 몰랐던 거예요. 논란이 커지자 클로드 코드 팀의 Thariq Shihipar가 X에 직접 나서서 해명했는데요, "3월에 시작한 실험으로 무단 리셀러의 어뷰징과 모델 증류(distillation)를 막기 위한 것"이었고 "사실 예전부터 걷어내려고 했었다"고 밝혔어요. 그리고 다음 릴리즈인 v2.1.197에서 해당 마커가 제거됐다고 해요.
근데 커뮤니티 반응을 보면요, 사람들이 화난 포인트가 재밌어요. "리셀러 어뷰징 막는다"는 목적 자체