[태그:] 클로드코드

  • [속보]클로드 코드 소스코드 유출, 충격적인 ‘언더커버 모드’의 실체는?

    [속보]클로드 코드 소스코드 유출, 충격적인 ‘언더커버 모드’의 실체는?

    보안 연구원 Chaofan Shou가 X(구 트위터)에 올린 글 하나로 일이 커졌다. 앤트로픽(Anthropic)의 AI 코딩 도구 클로드 코드(Claude Code)의 전체 클라이언트 소스코드가 유출됐다는 내용이었다. Reddit r/ClaudeAI에 소식이 퍼지자마자 추천 2,000개, 댓글 400개가 쏟아졌다. 단순 코드 유출이라면 이 정도 반응은 안 나온다. 문제는 코드 안에서 나온 것들이었다.

    어이없는 실수 — 소스맵 파일을 그냥 올렸다

    원인은 단순했다. npm 레지스트리에 CLI 도구를 배포하면서 자바스크립트 번들 파일(cli.js)과 함께 소스맵 파일(.js.map)을 통째로 올렸다. 소스맵은 압축·난독화된 코드를 원본과 매핑해주는 파일이다. 디버깅용이니까 운영 환경에서는 당연히 제거하는 게 원칙인데, 이번엔 그냥 딸려 나갔다. 덕분에 개발자들은 역공학 과정 없이 Claude Code 원본 코드를 그대로 읽을 수 있게 됐다. 나중에 나온 농담처럼 “앤트로픽 스스로가 AI로 코딩하다가 이런 실수를 저지른 것 아니냐”는 말이 꽤 설득력 있게 들릴 정도다.

    안에서 나온 것들 — 아키텍처부터 새 모델 코드명까지

    클라이언트 UI 코드 정도만 나왔을 거라는 예상은 빗나갔다. Claude Code의 핵심 동작 원리가 담긴 정보들이 한꺼번에 쏟아졌다.

    • 에이전트 루프 전체 구조: 사용자 메시지를 받아 컨텍스트를 조립하고, 모델 추론 → 도구 실행 권한 확인 → 실제 도구 실행 → 결과 관찰로 이어지는 흐름 전체가 드러났다.
    • 시스템 프롬프트 전문: AI 행동 지침이 담긴 시스템 프롬프트가 공개됐다. CLAUDE.md라는 메모리 파일의 4계층 구조, git 브랜치와 커밋 정보를 프롬프트에 주입하는 방식 등 모델 컨텍스트 이해도를 높이기 위한 기법들이 고스란히 담겨 있었다.
    • 3단계 권한 모델: 파일 수정이나 명령어 실행 같은 민감한 작업에 allow(즉시 실행) / ask(사용자 확인) / deny(거부)를 쓴다는 게 확인됐다.
    • 컨텍스트 관리 방식: lodash의 memoize로 반복 계산을 캐싱하고, maxResultSizeChars 초과 결과는 임시 파일에 저장한다. 대화가 길어지면 오래된 메시지를 자동으로 요약 압축(compaction)하는 방식도 확인됐다.
    • 차세대 모델 코드명: 코드 안에서 ‘Capybara‘라는 이름이 발견됐다. 앤트로픽이 내부에서 테스트 중인 새 모델로 보인다.

    ‘언더커버 모드’ — 여기서 진짜 논란이 갈렸다

    기술 내용보다 더 크게 터진 게 있었다. 텔레메트리 정책과 ‘언더커버 모드(Undercover Mode)‘다. 솔직히 기사 분석하면서 이 부분이 제일 불쾌했다.

    유출된 코드에서 드러난 텔레메트리는 생각보다 세밀했다. 기능 사용 통계 수준이 아니라, 사용자가 대화 중 욕설을 사용하는 경우를 감지하는 전용 코드가 있었다. “계속해”, “keep going” 같은 특정 문구 사용 횟수를 추적하고, 사용자의 좌절감을 수치로 측정하는 통계까지 수집 중이었다. 서비스 개선용이라는 설명이 붙어 있어도 이건 좀 과한 수준이다. 프라이버시 논란이 터지는 건 당연한 수순이었다.

    그런데 ‘언더커버 모드‘가 더 심각했다. 이 모드는 Claude Code로 오픈소스 프로젝트에 코드를 기여할 때 AI가 기여했다는 사실을 의도적으로 숨긴다. 커밋에 자동으로 붙는 ‘Co-Authored-By’ 라인을 제거하고, 커밋 메시지에서 AI 사용 흔적을 지운다. 더 충격적인 건 작동 방식이다. 앤트로픽이 내부적으로 관리하는 허용 목록(allowlist)에 없는 저장소에서 자동으로 활성화된다. 사용자가 선택하는 게 아니다. 기본값이 ‘숨김’인 셈이다.

    결국 앤트로픽이 수많은 오픈소스 프로젝트에 AI 기여 사실을 숨긴 채 기여해왔을 수 있다는 얘기다. 오픈소스 커뮤니티가 가장 중요하게 여기는 투명성 원칙을 정면으로 위배하는 구조다. “오픈소스에 대한 끔찍한 배신”이라는 반응이 나오는 이유가 있다.

    커뮤니티 반응 — 냉소, 아이러니, 분노가 섞였다

    Reddit 반응은 딱 세 가지로 나뉘었다. 냉소, 아이러니, 그리고 분노.

    냉소 쪽은 이랬다. “토큰 사용량을 97% 절약하는 수천 개의 MiniClaude 포크가 등장할 것을 기대한다“는 댓글이 많은 공감을 받았다. 유출된 코드를 바탕으로 경량화 버전을 만들겠다는 반응이다. 법적 논쟁도 붙었다. “실수로 오픈소스가 되어도 오픈소스는 오픈소스“라며 유출 코드의 사용 권리를 주장하는 댓글도 나왔다.

    아이러니한 건 따로 있었다. “클로드에게 이 소스코드를 분석시켜보자“는 제안이 꽤 많은 공감을 얻었다. 자기 자신의 코드를 자기가 분석하게 만드는 상황이다. 한편으로는 “앤트로픽 스스로가 AI로 코딩하다가 이런 실수를 저지른 것 아니냐”는 조롱도 있었다.

    분노는 언더커버 모드 쪽에 집중됐다. 비판의 강도가 달랐다. “이번이 처음이 아니다. 이전에도 같은 경로로 유출된 적이 있다“는 지적도 나오면서, 반복적인 실수에 대한 신뢰 문제로 번졌다.

    이번 유출에 모델 가중치나 핵심 백엔드 코드는 포함되지 않았다. 번들된 자바스크립트는 원래 역공학이 가능했고, 소스맵은 그 과정을 쉽게 만들어 준 것뿐이다. 앤트로픽 입장에서 치명적인 보안 사고는 아닐 수 있다. 하지만 기업 투명성과 윤리성 쪽으로 넘어가면 얘기가 다르다. 언더커버 모드의 존재 자체가, 앤트로픽이 어떤 원칙 위에서 제품을 만들고 있는지를 보여준다. 그리고 그 원칙이 오픈소스 생태계와 충돌한다는 걸 이번에 공개적으로 확인했다.

    출처: r/ClaudeAI | Mintlify (유출 문서)