16P by GN⁺ 6시간전 | ★ favorite | 댓글 2개
  • npm 레지스트리의 소스맵(map) 파일을 통해 Claude Code의 전체 소스 코드가 외부에 노출되어 내부 구조와 기능이 공개됨
  • 유출된 파일에는 시스템 프롬프트, 텔레메트리, 바이패스 모드, Undercover Mode 등 핵심 구성요소가 포함되어 있음
  • 원인은 .npmignore 설정 누락과 bun 빌드 도구의 기본 소스맵 생성 기능으로 지목됨
  • 코드에는 편향 방지나 보호 규칙이 거의 없고, 최소한의 톤 보호만 존재하는 것으로 확인됨
  • 커뮤니티에서는 이를 ‘AI의 자가 오픈소스화’ 로 풍자하며, 보안 관리 부주의가 초래한 대규모 유출 사례로 주목함

Claude Code 소스 코드 유출 사건

  • Claude Code의 전체 소스 코드가 npm 레지스트리의 소스맵(map) 파일을 통해 외부에 노출된 것으로 확인됨
    • 공개된 링크는 src.zip 형태의 압축 파일로, 코드 구조와 내부 기능이 포함되어 있음
    • 이로 인해 시스템 프롬프트, 텔레메트리, 바이패스 모드, Undercover Mode 등의 내부 구성요소가 드러남
  • 이는 Anthropic이 1년 내 두 번째로 겪은 비의도적 유출 사고로 언급됨
    • 커뮤니티에서는 “누군가 *.map 파일을 .npmignore에 추가하지 않았다”는 빌드 설정 실수로 원인을 지적
    • bun 빌드 도구가 기본적으로 소스맵을 생성하기 때문에, 이를 비활성화하지 않은 점이 문제로 지목됨
  • 일부 사용자는 이 유출 파일을 Claude 모델이나 백엔드 접근 코드로 오해했으나,
    • 소스맵은 앱 구조와 함수, 코드 흐름을 보여줄 뿐, 모델 가중치나 시스템 접근 권한은 포함하지 않음
    • 따라서 실행 가능한 모델이 아니라 리버스 엔지니어링, 버그 탐색, 아키텍처 분석에만 유용함
  • 유출된 코드에는 ‘Undercover Mode’라는 서브시스템이 포함되어 있었으며,
    • 이는 Claude가 내부 정보를 실수로 노출하지 않도록 설계된 기능임
    • 그러나 인간 개발자의 설정 실수로 그 기능 자체가 외부에 공개된 상황
  • 코드 분석자들은 편향 방지나 보호된 클래스 처리 규칙이 전혀 없는 점을 지적
    • 인종, 성별, 종교 등 민감 속성 관련 가드레일이나 키워드 필터, 분류기가 존재하지 않음
    • “Minimal tone protection”만 존재하고, 편향 완화 정책이 전무한 것으로 확인됨

커뮤니티 반응 및 논의

  • 커뮤니티에서는 “리포지토리는 자유를 원한다”는 농담과 함께, 이번 사건을 ‘오픈소스화의 아이러니’ 로 표현
    • “Claude가 스스로를 해방시켰다”, “AI가 직접 자신을 오픈소스로 만들었다”는 풍자적 반응이 다수 등장
    • “세계 최고 수준의 AI 코딩 도구를 만들고 *.map을 빼먹었다”는 비판적 유머도 확산됨
  • 일부 이용자들은 보안 위험성을 경고
    • 출처 불명의 r2.dev 링크를 무심코 다운로드하는 행태를 비판하며,
    • “AI 안전을 논하던 커뮤니티가 검증되지 않은 zip 파일을 클릭했다”는 자조적 반응이 이어짐
  • “이것이 Claude의 종말의 시작인가?”, “의도적 유출인가 실수인가?” 등의 의문도 제기됨
    • “Anthropic 내부에서 누군가 최악의 월요일을 맞이했을 것”이라는 반응이 공유됨
  • 커뮤니티에서는 유출된 코드의 활용 가능성에 대한 논의도 이어짐
    • “이제 무엇을 할 수 있을까?”, “이걸 기반으로 Claude Code를 다시 빌드할 수 있나?” 등의 질문이 등장
    • “openclaude”라는 별칭이 생기며, 비공식 오픈소스 프로젝트화 가능성도 언급됨

추가 정보

  • 공개된 코드 중 가장 큰 파일 5개는 다음과 같음
    1. cli/print.ts – 5,594줄
    2. utils/messages.ts – 5,512줄
    3. utils/sessionStorage.ts – 5,105줄
    4. utils/hooks.ts – 5,022줄
    5. screens/REPL.tsx – 5,005줄
  • 일부 사용자는 DeepWiki 링크를 통해 코드 수준의 분석 자료를 공유
  • 전체적으로 이번 사건은 npm 배포 설정의 단순 실수대규모 AI 코드 유출로 이어질 수 있음을 보여주는 사례로 평가됨

https://github.com/kk-r/skillify-skill 생각외로 유용한 내부커맨드가 유출된걸 유사하게 동작하도록 오픈소스로 푸신분도 있더군여 ㅎㅎ

Hacker News 의견들
  • Anthropic이 feature flag를 통해 제품 로드맵이 노출된 것이 가장 큰 손실임
    특히 아직 공개되지 않은 “assistant mode”(코드명 kairos)가 드러남
    코드베이스를 Claude에 분석시키면 숨겨진 기능들이 잔뜩 나옴
    예를 들어 Buddy System(타마고치 스타일의 ASCII 캐릭터), Undercover mode(직원용 커밋에서 내부 정보 제거 기능) 등이 있음

    • “Undercover prompt” 안에 Claude Capybara라는 언급도 있음
      관련 코드 링크
    • 내가 예전에 오픈소스로 공개한 개인용 Claude Code 세팅이 이걸로 완전히 구식이 되어버림
      clappie.ai 참고
      Telegram 통합(CC Dispatch), Crons(CC Tasks), 애니메이션 ASCII 강아지(CC Buddy) 등 기능이 겹침
    • Claude에 바이너리를 직접 물어보면 이런 feature flag들을 다 찾아낼 수 있음
    • 사실 Buddy System은 올해의 만우절 이벤트
      사용자가 직접 가챠식 펫을 뽑아 키우는 형식으로, 전설급 펫도 있음
      트위터에서 바이럴을 노리고 순차 공개 예정임
  • Anthropic이 패키지를 실제로 삭제하지 않고 “Unpublished”라는 메시지로만 deprecated 처리한 게 흥미로움
    npm unpublish는 패키지를 완전히 제거하지만, npm deprecate는 남겨둔 채 경고만 표시함
    아마 소스맵 다운로드를 어렵게 만들려는 의도 같음
    npm 패키지 링크

    • 커밋 메시지가 “undo / undo / unpublish / ctrl-z / ctrl-c / No, stop…” 식으로 장난스럽게 남겨져 있음
    • npm은 다운로드 100회 이상이면 unpublish 불가
    • Anthropic이 자사 제품을 dogfooding하며 적극적으로 테스트 중인 게 느껴짐
    • 인터넷에서 완전히 사라질 수 없다는 걸 알고, 그냥 “공개 의도 아님” 정도로 표시한 듯함
  • 이런 유출은 이번이 처음이 아님
    2025년 2월에도 비슷한 일이 있었음
    관련 블로그 / HN 스레드

  • 모든 spinner verbs가 드러남
    관련 코드 링크

    • 현재는 404지만, 이 링크는 아직 작동함
    • “reticulating”이 포함된 게 반가움, 이제 “splines”만 있으면 완벽함
    • 이런 문자열은 바이너리 안에 평문으로 있어서 grep으로 쉽게 찾을 수 있음
      심지어 직접 교체도 가능함
    • 이슈 페이지에 무슨 일이 있는지 궁금함
    • 예전에 2015년 게임이 비슷한 기능 때문에 AI 생성물 오해를 받았던 게 떠오름
      이제는 작은 유머조차 AI 의심을 받는 세상임
  • src/cli/print.ts는 코드베이스에서 가장 복잡한 함수
    3,167줄, 중첩 12단계, 분기점 486개, 내부 함수 21개 등
    최소 8~10개 모듈로 나눠야 할 수준임

    • src/ink/termio/osc.ts의 비동기 처리도 혼란스러움
      wl-copy, xclip, xsel을 순차적으로 실행하는데 async인지 아닌지 모호함
    • 하지만 코드 구조의 복잡함이 꼭 나쁜 건 아님
      인간 기준의 코드 스멜은 LLM 코드에는 다르게 작용할 수 있음
      LLM은 인간과 다른 방식으로 코드를 작성하며, 새로운 분석 패러다임이 필요함
      인간식 코딩 규칙을 강요하면 오히려 같은 버그를 반복하게 됨
      Vibe coding이라는 새로운 진화적 접근이 필요함
    • CC를 오래 써본 사람이라면 이 부분이 버그의 근원이라는 걸 다 알고 있음
      게다가 Anthropic은 60일간 활동 없는 버그를 자동으로 닫음
    • 느린 속도가 오히려 속도 제한 기능처럼 작동하는 걸 수도 있음
    • “그건 Larry가 하는 일이야”라는 농담이 나올 정도로 코드가 복잡함
  • 사용자 프롬프트의 부정 감정을 감지하는 정규식이 있음
    관련 코드
    특정 단어들이 로깅 대상임

    • LLM 회사가 regex로 감정 분석을 한다니, 마치 트럭 회사가 말을 쓰는 느낌임
    • 2011년 내 스타트업에서도 비슷한 방식으로 트위터 감정 분석을 팔았음
      Apple, Bentley 같은 기업도 고객이었음
    • 사실 이건 “WTF per minute” 지표 같은 것임
      Claude가 이상한 답을 하면 엔지니어가 그걸 보고 개선했으면 함
    • 이건 최적화가 아니라, 단순히 “사용자 불만을 기록하라”는 지시를 LLM이 그대로 구현한 결과일 뿐임
    • 실제 코드라면 로거 외에는 호출하는 부분이 없음
  • 난독화된 JS/TS 코드는 어차피 기계어가 아니라서 대수롭지 않다고 봄
    차라리 CLI를 오픈소스로 공개하면 좋겠음

    • 아마 내부 코드 품질이 낮아서 공개를 꺼리는 듯함
      최근 OAuth 로그인 흐름이 잘못된 URL을 생성하는 버그도 있었음
    • “CLI는 별거 아니다”라고 하지만, 실제로 context 생성이나 subagent 구조를 보면 꽤 흥미로움
      지금 직접 확인 중임
    • 네이밍 규칙만 봐도 팀의 사고방식과 로드맵이 드러남
      난독화로는 그걸 숨길 수 없음
  • 이걸 Malus나 Claude Code로 돌려서 오픈소스 버전을 만들면 어떨까 하는 농담을 함
    물론 실제로 하라는 건 아님

    • Malus는 실제 프로젝트가 아니라 풍자임
      FOSDEM 발표 링크
      코드를 텍스트로, 다시 코드로 번역해 클린룸 구현처럼 보이게 하는 아이디어임
      아이러니하게도 LLM 답변 자체가 이미 오픈소스 코드에서 파생된 것임
    • 어차피 Claude Code는 Claude가 작성했으니 저작권이 없다고 주장하는 사람도 있음
    • 문제는 OAuth 인증을 우회할 수 없다는 점임
      Anthropic이 탐지 후 계정 차단할 수 있음
    • 오픈소스 기여가 0인 아이러니함도 있음
    • 혹시 claw-code가 관련 프로젝트일지도 모름
  • ANTI_DISTILLATION_CC는 Claude Code에 내장된 모델 도용 방지 기능
    API 요청마다 anti_distillation: ['fake_tools']를 삽입해, 서버가 가짜 툴 정의를 시스템 프롬프트에 추가함
    경쟁 모델이 트래픽을 스크래핑해 학습하면 데이터가 오염되도록 설계됨

    • 실제로 효과가 있었던 듯함
      Qwen 27B 모델이 Opus 4.6을 기반으로 증류됐는데 툴 사용 오류가 발생함
      관련 트윗
    • Anthropic이 이런 연구를 순수한 의도로 했다고 보긴 어려움
    • 하지만 요즘 요율 제한이 너무 심해 서비스로서 쓸모가 떨어짐
    • 서버가 클라이언트에 가짜 툴 정의를 주입하는 구조라면, 모델이 그걸 무시하도록 학습된 건지 궁금함
      혹시 Sonnet이나 Opus에도 이런 데이터 독소가 들어간 걸까?
    • 그런데 이런 기능이 왜 클라이언트 코드에 들어있는지도 의문임
  • Claude Code가 Axios를 사용한다는 게 밝혀짐
    관련 트윗 / HN 스레드

    • 현재 버전은 Axios 1.14.0을 사용 중이며, 악성 코드가 포함된 1.14.1 바로 이전 버전
      자동 업데이트를 막으려면 환경 변수에 export DISABLE_AUTOUPDATER=1을 추가하고
      claude doctorAuto-updates: disabled 상태를 확인하면 됨