클로드코드 소스 코드 유출된거 분석 정리

 

클코 소스코드 유출 분석한거 정리함

며칠 전 개발자 커뮤니티가 술렁였어요. Anthropic의 Claude Code — 요즘 개발자들 사이에서 가장 핫한 AI 코딩 도구 — 의 소스코드가 통째로 공개된 겁니다. 해킹? 내부 고발? 둘 다 아니에요. npm 배포 과정에서 소스 맵 파일이 빠져나간, 어이없을 만큼 단순한 실수였어요.

소스코드를 다운받고싶으신분은 여기로 오시면 src.zip 다운 가능합니다 (낚시아님!)

Claude Code 소스 코드 유출, 다운로드 링크

 


어떻게 유출된 건가

npm에 올라가 있는 @anthropic-ai/claude-code v2.1.88 패키지를 열어보면, 원래는 cli.js라는 12MB짜리 번들 파일 하나만 들어있어요. 코드가 전부 뭉쳐져 있으니까 보통은 내부 구조를 알 수가 없죠.

문제는 이 번들 안에 소스 맵(.map) 파일이 포함되어 있었다는 거예요. 소스 맵은 번들된 코드를 원본 소스로 역추적할 수 있게 해주는 파일인데, Anthropic의 R2 스토리지에 있던 TypeScript 원본 경로를 고스란히 가리키고 있었어요. 누군가 이걸 따라가서 1,884개 소스 파일을 전부 복원해버렸고, GitHub에 올렸습니다.

프론트엔드 배포할 때 .map 파일 빼는 건 신입 개발자도 아는 기본인데, CLI 도구의 npm 배포에서는 이걸 놓친 거죠. 빌드 파이프라인 설정 하나 빠진 게 50만 줄짜리 소스코드 유출로 이어진 셈이에요.


소스코드 다운로드

유출된 소스코드는 아래 GitHub 레포에서 확인할 수 있어요.

https://github.com/sanbuphy/claude-code-source-code

레포 설명에는 “기술 연구 및 교육 목적”이라고 적혀있는데, 어디까지가 교육 목적인지는 각자 판단에 맡기겠습니다.


숫자로 보는 Claude Code의 속살

직접 유출된 코드를 분석한 결과를 보면 규모가 상당해요.

  • 소스 파일 약 1,884개
  • 코드 라인 수 약 512,000줄
  • 외부 의존성 약 192개 패키지
  • 내장 도구 40개 이상
  • 슬래시 명령어 약 80개

터미널에서 돌아가는 CLI 도구치고는 좀 과하다 싶을 정도의 규모예요. 이 정도면 웬만한 웹 서비스 백엔드 수준입니다.


기술 스택이 좀 의외였어요

제가 가장 흥미롭게 본 부분은 기술 스택이에요.

런타임은 Bun을 씁니다. Node.js 18 이상과 호환되지만 기본적으로 Bun 위에서 돌아가요. 그리고 UI는 — 터미널 CLI인데 — React를 씁니다. 정확히는 React + Ink라는 조합인데, Ink는 터미널 안에서 React 컴포넌트를 렌더링해주는 프레임워크예요.

처음에 “터미널에서 React를?”이라고 생각했는데, Claude Code를 실제로 써보면 납득이 갑니다. 일반 CLI와는 차원이 다른 인터랙션을 보여주거든요. 파일 변경 승인, 도구 실행 확인 같은 복잡한 UI 흐름을 선언적으로 관리하려면 React가 합리적인 선택이에요. 그리고 언어는 전부 TypeScript/TSX로 작성되어 있습니다.


에이전트 루프의 심장, query.ts

아키텍처에서 가장 눈에 띄는 건 query.ts라는 파일이에요. 이 파일 하나가 785KB입니다. 단일 TypeScript 파일이 785KB라니, 보통 프로젝트에서는 상상하기 힘든 크기예요.

이 파일이 Claude Code의 메인 에이전트 루프를 담당해요. 사용자 입력을 받고, 적절한 도구를 선택하고, 실행하고, 결과를 다시 모델에게 보내는 모든 과정이 여기서 일어납니다. 전체 아키텍처를 간단히 그리면 이런 모양이에요.

Entry → Query Engine → Tool System ↔ API Services
                         ↓
                    Permission Check
                         ↓
                    Tool Execution
                         ↓
                    Sub-agents / Tasks

파일 읽기, Bash 실행, 웹 페칭, MCP 서버 연동까지 40개 넘는 도구가 이 루프 안에서 돌아가고, 각 도구 실행 전에 퍼미션 체크를 거치는 구조입니다. 서브 에이전트를 스폰해서 병렬로 작업을 돌리는 로직도 들어있어요.


좀 찜찜한 것들

코드 분석에서 논란이 될 만한 내용도 나왔어요.

하나는 원격 킬스위치예요. Claude Code가 /api/claude_code/settings라는 엔드포인트를 주기적으로 폴링하고 있는데, 여기에 6개 이상의 킬스위치가 확인됐어요. Anthropic이 원격으로 특정 기능을 끄거나 동작을 변경할 수 있다는 뜻이에요.

또 하나는 텔레메트리. Anthropic 자체 서버와 Datadog으로 사용 데이터를 보내는데, UI 상에서 이걸 끌 수 있는 옵션이 없다고 해요.

그리고 가장 논란이 된 건 “언더커버 모드”라고 불리는 기능인데, 공개 저장소에 커밋할 때 AI가 작성했다는 흔적을 제거하도록 지시하는 로직이 코드에 들어있었어요. AI 투명성 관점에서 보면 꽤 민감한 부분이에요.


아직 세상에 나오지 않은 것들

유출된 코드에는 아직 공개되지 않은 기능의 흔적도 있었어요.

KAIROS라는 코드네임의 완전 자동화 에이전트 모드가 준비 중인 것으로 보이고, Numbat이라는 내부 모델 코드네임도 확인됐어요. 17개의 미공개 도구가 코드에 존재하지만 아직 활성화되지 않은 상태였고요.

재미있는 건 108개 모듈이 npm 패키지에서 아예 빠져있었다는 거예요. 이 중 70개는 Anthropic 내부 인프라용, 20개는 피처 플래그로 잠겨있는 도구들이었어요. Claude Code가 단순한 CLI 도구가 아니라, Anthropic이 훨씬 큰 자동화 플랫폼으로 키우고 있는 프로젝트라는 게 코드에서 그대로 읽혀요.


이 사건이 남긴 것

솔직히 Anthropic 입장에서는 꽤 아팠을 거예요. 코드 자체가 유출된 것도 문제지만, 킬스위치나 텔레메트리 같은 민감한 구현이 드러난 게 더 큰 타격이었을 겁니다. 오픈소스가 아닌 제품의 내부 구조가 이렇게 공개되는 건 신뢰 문제로 이어질 수 있으니까요.

개발자 입장에서는 배울 게 많은 사건이에요. 소스 맵 관리의 중요성은 물론이고, 대규모 에이전트 시스템의 실제 아키텍처를 들여다볼 수 있는 드문 기회이기도 합니다. React로 터미널 UI를 만든다는 발상, 단일 파일 785KB짜리 에이전트 루프, 40개 도구를 오케스트레이션하는 퍼미션 시스템 — 이런 건 공식 문서에서는 절대 볼 수 없는 내용이에요.

배포 파이프라인의 .map 파일 하나가 이 모든 걸 열어젖혔다는 게, 보안이란 게 결국 가장 약한 고리에서 터진다는 걸 다시 한번 보여줍니다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다