클로드AI 소스코드 51만 줄 유출 — npm 패키징 실수가 드러낸 KAIROS와 가짜 도구

며칠 전 클로드AI 차세대 모델 코드명이 CMS 설정 실수로 새어 나갔다는 글을 쓴 적 있잖아요. 그때 “관리 체계가 좀 허술한 거 아닌가”라는 댓글이 꽤 달렸는데, 그로부터 딱 5일 만에 이번엔 소스코드 51만 줄이 통째로 풀렸어요.

클로드AI 코드 51만 줄이 쏟아진 경위

3월 31일, 보안 연구자 Chaofan Shou가 X에 올린 게시물 하나가 시작이었어요. 클로드 코드 npm 패키지 v2.1.88을 열어보니 소스맵 파일이 그대로 들어 있더라고요. 소스맵이란 빌드된 코드를 원본 소스로 되돌릴 수 있게 해주는 파일인데, 보통 배포용 패키지에는 빼는 게 기본이거든요.

그 소스맵 크기가 59.8 MB. 여기서 Cloudflare R2 스토리지에 올려진 zip 아카이브 경로가 드러났고, 그 안에 약 1,900개 TypeScript 파일, 512,000줄 이상의 코드가 담겨 있었어요. GitHub에서는 순식간에 41,500회 넘게 포크됐고, 원본이 내려가기 전에 이미 사방으로 퍼진 상태였고요.

Anthropic 대변인은 이렇게 밝혔어요.

“Earlier today, a Claude Code release included some internal source code. No sensitive customer data or credentials were involved or exposed. This was a release packaging issue caused by human error, not a security breach.”

사람 실수로 인한 패키징 오류라는 입장이었어요. 보안 침해가 아니라 릴리스 과정의 실수라는 뜻이에요.

LayerX Security의 Roy Paz도 “프로세스가 제대로 갖춰져 있지 않아서 설정 하나 잘못 건드린 게 전체 소스코드를 노출시킨 것 같다”고 분석했더라고요.

불과 5일 전, Mythos라는 차세대 모델 코드명이 CMS 실수로 유출된 바로 직후라 내부 릴리스 관리 체계에 대한 지적이 이어지고 있어요.

클로드AI 소스코드 안에 뭐가 있었나

소스코드가 공개되면서 그동안 외부에서 알 수 없었던 내부 구조들이 드러났어요. 보안 연구자 Alex Kim이 정리한 분석이 가장 상세했어요.

KAIROS — 자율 데몬 모드

KAIROS라는 기능이 눈에 들어왔어요. 쉽게 말하면, 사용자가 자리를 비운 사이에도 클로드 코드가 알아서 작업을 이어가는 자율 데몬 모드예요. /dream이라는 스킬이 포함돼 있고, 야간에 메모리를 정제하거나, GitHub 웹훅에 반응하거나, 5분 주기 크론으로 백그라운드 작업을 수행하는 구조더라고요. 현재 외부 빌드에서는 비활성화 상태이고, 미공개 피처 플래그 중 하나로 숨겨져 있어요.

가짜 도구 삽입 — 경쟁사 훈련 데이터 오염 장치

claude.ts 301~313줄에 ANTI_DISTILLATION_CC라는 피처 플래그가 있었어요. 이 플래그가 켜지면 가짜 도구 정의가 프롬프트에 주입되는 구조예요. 목적은 분명했죠. 경쟁 모델이 클로드의 출력을 학습 데이터로 쓸 경우 잘못된 도구 정보가 섞이게 만드는 거예요. 이른바 안티 디스틸레이션 방어 장치인데, AI 업계에서 이런 구조가 코드 레벨로 확인된 건 드문 사례라 논란이 될 수밖에 없었어요.

욕설 감지 정규식

userPromptKeywords.ts라는 파일에는 “wtf”, “dumbass” 같은 단어를 패턴 매칭하는 정규식이 들어 있었어요. LLM이 문맥을 파악하는 게 아니라, 단순 정규식으로 사용자의 짜증을 감지하는 방식이더라고요. 무거운 추론 대신 가벼운 규칙 기반 처리를 택한 건데, 이게 실제로 어떤 반응을 트리거하는지까지는 코드만으로 완전히 파악되지 않았어요.

언더커버 모드

undercover.ts 파일은 약 90줄짜리 짧은 모듈인데, “Capybara”, “Tengu” 같은 내부 코드명을 외부 빌드에서 자동으로 제거하는 역할을 하더라고요. 이 기능을 사용자가 강제로 비활성화할 수 없게 설계돼 있다는 점이 눈에 띄었어요. 내부 정보 유출 방지용으로 보이는데, 이번엔 소스코드 자체가 나가버린 셈이죠.

성능 버그 — 하루 25만 건 API 호출 낭비

코드 분석 과정에서 성능 이슈도 발견됐어요. 1,279개 세션에서 50회 이상 연속 실패가 반복되면서 전 세계적으로 하루 약 250,000건의 API 호출이 낭비되고 있었다는 거예요. 리트라이 로직에 적절한 백오프가 없었던 것으로 추정돼요.

이게 왜 클로드AI에 문제가 되나

이번에 유출된 건 모델 가중치가 아니었잖아요. 클로드AI의 지능 자체가 빠져나간 건 아니라는 뜻이죠. 하지만 에이전틱 하네스, 그러니까 모델이 실제로 어떻게 도구를 호출하고, 어떤 조건에서 어떤 행동을 하는지를 결정하는 전체 구조가 노출됐어요. 경쟁사 입장에서는 모델보다 오히려 이 하네스 설계가 더 값진 정보일 수 있거든요.

가짜 도구 삽입 구조가 공개된 것도 까다로운 부분이고요. 안티 디스틸레이션이 어떤 방식으로 작동하는지 알려졌으니, 이를 우회하거나 역으로 이용하려는 시도가 나올 수 있어요. 보안 커뮤니티에서는 이미 이 부분에 대한 토론이 진행 중이고요.

게다가 같은 날 또 다른 사건이 터졌어요. 3월 31일 00:21~03:29 UTC 사이에 인기 HTTP 라이브러리 axios의 악성 버전이 npm에 올라왔거든요. axios 1.14.1과 0.30.4 버전에 원격 접근 트로이목마가 포함돼 있었는데, 얼마 전 LiteLLM 공급망 공격에 이어 npm 생태계의 보안 문제가 연이어 불거진 거예요. 클로드AI 소스코드 유출과 공급망 공격이 같은 날 동시에 벌어졌다는 건, 요즘 AI 개발 도구 쪽 보안이 얼마나 아슬아슬한지 느껴지더라고요.

자주 묻는 질문

Q. 모델 자체가 유출된 건가요?

아니에요. 이번에 나온 건 클로드 코드의 TypeScript 소스코드, 즉 에이전트 하네스 부분이에요. 클로드AI 모델의 가중치나 훈련 데이터는 포함되지 않았어요.

Q. 지금 쓰고 있는 클로드 코드에 영향이 있나요?

소스코드 유출 자체가 사용자 기능에 직접 영향을 주지는 않아요. 다만 같은 날 발생한 axios 악성 패키지 건은 별도로 확인이 필요해요. 3월 31일 00:21~03:29 UTC 사이에 axios를 설치했다면 버전을 점검해 보는 게 좋아요.

Q. KAIROS 기능은 언제 공개되나요?

Anthropic이 공식적으로 언급한 적은 없어요. 코드 안에 피처 플래그로 존재하지만 외부 빌드에서는 false로 컴파일돼 있고, 출시 시기는 알려지지 않았어요.

5일 사이에 CMS 설정 실수로 모델 코드명이 새고, npm 패키징 실수로 소스코드 51만 줄이 풀렸어요. 모델 성능 경쟁만큼이나, 그 모델을 감싸고 있는 릴리스 파이프라인의 견고함이 결국 신뢰를 결정하게 되는 거 아닌가 싶더라고요.

Similar Posts