Claude Code Is Steganographically Marking Requests
개요
Claude Code 2.1.196 버전에서 발견된 기능은 특정 조건에서 시스템 프롬프트에 삽입되는 날짜 문자열을 수정하여 API 리셀러, 비공식 게이트웨이, 모델 증류 공격 등을 탐지하는 은닉 마킹(steganography) 기법을 사용합니다.
주요 내용
* Claude Code 바이너리 내에서 시스템 프롬프트에 삽입되는 현재 날짜 문자열을 변경하는 기능이 발견되었습니다.
* 이 기능은 ANTHROPIC_BASE_URL 환경 변수가 설정되어 있고, 시스템 시간대가 특정 중국 지역(Asia/Shanghai 또는 Asia/Urumq) 중 하나이며, API 기본 URL의 호스트네임이 미리 정의된 도메인 목록에 포함되고 AI 연구소 관련 키워드를 포함하는 경우 활성화됩니다.
* 변경되는 내용은 날짜 표기의 아포스트로피(')를 유니코드 문자(‘ 또는 ’)로 변경하거나, 날짜 구분 기호(-)를 슬래시(/)로 변경하는 등 육안으로는 거의 인지하기 어려운 미세한 변화입니다.
* 숨겨진 도메인 및 키워드 목록은 Base64로 인코딩되어 XOR 암호화되어 있으며, 특정 키(91)로 디코딩됩니다.
* 이 기능의 목적은 API 리셀러, 비공식 Claude Code 게이트웨이, 모델 증류 공격 파이프라인을 탐지하는 것으로 추정됩니다.
* 이러한 탐지 메커니즘은 정상적인 개발자가 의도치 않게 특정 조건을 만족하는 경우에도 활성화될 수 있으며, 이는 개발 도구에 대한 신뢰도를 저하시킬 수 있습니다.
* 숨겨진 마킹 방식 대신 명시적인 텔레메트리 필드, 문서화, 릴리스 노트 공개 등 투명한 방식을 통해 API 게이트웨이 탐지 또는 약관 강제가 이루어질 수 있습니다.
* 이 마킹 기능은 ANTHROPIC_BASE_URL이 설정되지 않았거나 공식 Anthropic API 엔드포인트를 사용하는 경우에는 비활성화됩니다.
* 이 마킹을 우회하는 것은 호스트네임 변경, 시간대 변경, 바이너리 패치 등 비교적 간단한 방법으로 가능합니다.
시사점
Claude Code의 은닉 마킹 기능은 API 트래픽을 모니터링하고 제어하려는 의도는 이해되지만, 개발자 도구의 신뢰성과 투명성에 대한 의문을 제기하며, 이러한 기능은 보다 명시적이고 투명한 방식으로 구현되어야 함을 시사합니다.
댓글
GitHub Discussions