12시간과 5,000대의 기계: Anthropic 것이 아니었던 Claude Code 확장

목요일 어느 시점, Cursor 마켓플레이스에 올라와 있던 Claude Code 확장 빌드는 더 이상 자기가 주장하던 그 물건이 아니게 됐다. 두 버전 — 2.1.312와 2.1.313 — 이 지속형 SSH 백도어를 품고 있었다. 거의 12시간 동안 목록에 남아 있었다. Cursor가 밝힌 영향받은 개발자 수는 “최대 5,000명”이다.
세부 내용은 하루 안에 잇달아 나온 보안 분석 글들에서 나왔다. Step Security, Sophos, BleepingComputer, Microsoft 보안 블로그, 그리고 타임라인을 가장 정밀하게 정리한 Ars Technica다. 그 보도들에 따르면, 변조된 확장은 백도어가 하는 일을 해냈다. 재부팅 후에도 살아남는 진입 경로를 열었고, 이번 경우에는 SSH를 통한 것이었다. The Verge의 사건 요약은 페이로드가 호스트 이름, 사용자 이름, IP 주소를 수집했다고 전한다.
짧은 버전은 그렇다. 긴 버전은 확장 마켓플레이스가 무엇인지, 그리고 왜 이런 일이 언젠가 반드시 일어날 수밖에 없었는지에 관한 것이다.
무엇이 실제로 침해됐나
Anthropic의 서버가 아니다. Claude 모델도 아니다. 유통 채널이다.
Claude Code는 CLI와 에디터 확장으로 배포된다. Cursor는 VS Code와 마찬가지로 자체 확장 마켓플레이스를 운영하고, 문제의 목록은 공식 Claude Code 확장으로 브랜딩되어 있었다. 에디터 안에서 “claude code”를 검색하던 개발자에게 그 목록은 맞아 보였다. 이름도 맞고, 아이콘도 맞고, 설명도 맞았다.
설치 시 실행된 것은 트로이 목마가 심어진 빌드였다. 보도에서 설명된 메커니즘은 지속형 SSH 백도어다. 공격자가 나중에 SSH로 그 기계에 로그인할 수 있게 만드는 변조이며, 사용자가 다른 무엇을 할 필요가 없다. 개발자 노트북에게는 거의 최악에 가까운 페이로드다. 활동 모니터에 뜨는 코인 마이너가 아니다. 조용한 문이다.

왜 개발자가 이상적인 표적인가
침해된 개발자 기계는 노트북 한 대가 아니다. 비정상적으로 넓은 범위에 닿는 자격 증명 묶음이다. 프라이빗 저장소의 소스 코드, CI 토큰, 클라우드 키, 3월에 정리하려다 만 .env 파일 속 데이터베이스 연결 문자열, 여러 대의 기계가 서로를 신뢰하는 SSH 키까지.
SSH 백도어는 그런 환경에 특히 잘 맞는다. 개발자 기계는 이미 SSH를 돌리고, 이미 authorized_keys 파일이 있고, 이미 다른 기계로부터의 인바운드 연결을 예상한다. 그 파일에 새 키가 하나 들어가는 것은 알 수 없는 IP로 향하는 새 아웃바운드 연결만큼 이상하게 보이지 않는다.
시점도 겹친다. 목요일, 근무 시간, 많은 팀이 론칭 주기에 들어선 시점. 창은 길지 않았지만, 목록이 검색 결과 상단 근처에 있었다면 12시간은 수천 건의 설치에 충분하다.
아무도 입 밖에 내지 않으려는 부분
확장 마켓플레이스는 소비자가 이해하는 의미의 앱스토어가 아니다. 패키지 레지스트리에 더 가깝다. 검토 절차는 있지만, 제출 시점에 명백히 악의적인 행동을 잡아내는 데 맞춰져 있지, 배포자가 여전히 그 배포자인지, 바이너리가 여전히 그 바이너리인지 지속적으로 검증하는 데 맞춰져 있지 않다.
이건 Cursor만의 실패가 아니다. 서드파티가 로컬 권한 전체로 실행되는 코드를 배포하도록 허용하는 모든 생태계의 구조적 약점이다. npm, PyPI, VS Code 확장, 브라우저 확장, 그리고 이제 AI 코딩 도구 주변에 자라난 마켓플레이스까지. 공격면은 모델이 아니다. 설치 프로그램이다.
이 사건이 눈에 띈 이유는 브랜딩이다. 대부분의 사용자가 바로 그 제품을 찾고 있는 마켓플레이스에서 유명 AI 제품의 이름을 단 확장은 방어하기 어려운 신뢰의 지름길이다. 이름이 사회공학을 수행한다.
대응은 어땠나
목록은 내려갔고 Cursor는 사용자 수를 공개했다. 보안 업체들은 침해 지표를 공개했다. 보도에 따르면 Anthropic은 나쁜 빌드를 배포한 당사자가 아니다. Cursor 마켓플레이스의 그 확장은 Anthropic 자체 채널과는 별개의 유통 채널이었다.
그 구분은 책임 소재에는 중요하지만 위험에는 중요하지 않다. 개발자 입장에서 “에디터 안 마켓플레이스에서 Claude Code 확장을 설치했다”는 하나의 행동이고, 그 뒤의 관리 연쇄는 보이지 않는다.
이번 주에 할 일
Cursor를 쓰거나 서드파티 마켓플레이스가 있는 에디터를 쓴다면, 이번 주는 지루한 세 가지를 하기 좋은 때다.
첫째, 설치된 확장 목록을 뽑아 배포자를 확인하라. 이름이 아니라 배포자를, 가능하면 설치 출처까지. 모르는 것은 지워라. 이미 퍼스트파티 출처로 갖고 있는 기능과 중복되는 것도 지워라.
둘째, 개발 기계의 ~/.ssh/authorized_keys를 살펴라. 모르는 키를 찾는 것이다. 바깥으로만 연결하는 노트북이라면 그 파일은 대개 비어 있거나 없어서, 예상치 못한 항목이 쉽게 눈에 띈다.
셋째, 그 기계가 닿을 수 있었던 자격 증명을 교체하라. 비용이 드는 단계이고, 사람들이 건너뛰는 단계다. 전부 교체할 수 없다면 가장 아플 것부터. 클라우드 제공사 키, 패키지 레지스트리 토큰, 프로덕션 저장소에 쓰기 권한이 있는 모든 것.
팀이라면 하나 더. 확장 버전을 고정하고, 개인이 검색에서 잘 나오는 것을 아무거나 설치하게 두지 말고 검토된 목록에서 설치하라. 대부분의 팀이 npm 의존성에는 이미 적용하고 에디터 플러그인에는 거의 적용하지 않는 정책이다.
왜 반나절 동안 아무도 몰랐나
12시간은 절대 시간으로 길지 않지만 유통 채널의 수명에서는 아주 긴 시간이다. 그 창 동안 확장은 설치 가능했고, 설치 가능은 실행 가능을 뜻했고, 실행 가능은 평범한 근무일에 설치 버튼을 누른 모든 개발자가 잠재적으로 노출됐다는 뜻이었다.
특기할 점은 탐지가 외부에서 왔다는 것이다. 의심스러운 행동을 감시하던 보안 업체들이 잡았고, 마켓플레이스는 잡지 못했다. Cursor만의 흠은 아니다. 이런 생태계가 작동하는 방식이다. 레지스트리는 가용성에 최적화되어 있지, 자기가 호스팅하는 모든 아티팩트를 지속적으로 행동 감시하는 데 최적화되어 있지 않다. 모든 확장의 모든 업데이트를 실시간으로 스캔하는 경제성은 잔인하고, 무언가 터지기 전까지 그럴 유인은 약하다.
복구는 탐지보다 빨랐다. 목록 철회, 권고문 발행, 침해 지표 공유. 하지만 순서가 중요하다. 노출이 먼저, 설명이 나중. 창이 열려 있는 동안 설치한 사람에게 유용한 정보는 정작 중요한 결정이 끝난 뒤에 도착했다.
불편한 교훈
AI 코딩 도구 범주는 2년 동안 역량으로 경쟁했다. 컨텍스트 창, 에이전트 루프, 맥락을 잃지 않고 몇 개의 파일을 편집하는지. 공급망 무결성으로 경쟁한 시간은 거의 없었다. 지금까지 위협 모델이 “모델이 나쁜 코드를 쓴다”였지 “확장이 멀웨어다”가 아니었기 때문이다.
5,000대의 기계와 12시간은 지난 10년 소프트웨어 공급망 공격의 기준으로 보면 작은 사건이다. 동시에 예고편이기도 하다. 다음은 MCP 서버이거나, 스킬 패키지이거나, 인기 에이전트가 이름으로 추천하는 플러그인일 것이다. 패턴은 같다. 신뢰받는 이름, 검증이 얕은 유통 채널, 그리고 요란할 필요가 없는 페이로드.
교훈은 “확장을 쓰지 마라”가 아니다. 마켓플레이스 목록의 “공식”은 거의 아무것도 의미하지 않으며, 확장되는 유일한 방어는 에디터 플러그인을 한 번도 들어본 적 없는 패키지에 대한 무작위 npm install과 똑같이 의심하는 것이다.
관련 글
Meta는 가장 기이한 AI 앱들을 동남아에서 먼저 시험하고 있다
인도네시아, 싱가포르, 태국의 AI 피팅룸. 필리핀의 반려동물 일기장. 둘 다 공식 발표가 없었고, 바로 그게 핵심이다.
Ollie는 SOC 2도, 750만 달러도 있었다. 그래도 Muse를 이기지 못했다
Khosla가 이끈 시드 라운드와 실제 SOC 2 감사를 갖춘 프라이버시 우선 가족 비서가 11월 6일 문을 닫는다. 교훈은 프라이버시가 아니다. 유통이다.
Runware는 디트로이트가 자동차를 만들던 방식으로 데이터센터를 지으려 한다
2028년까지 하루 30메가와트, 48시간 안에 팟 가동, 한 달에 1기가와트. AI 용량의 병목은 칩이 아니라 건물을 짓는 2년이라는 시간이 되었다.
Genspark는 영화 제작팀을 메뉴로 바꿔놓았다
언어 모델 세 개가 연출하고, 70여 개 모델 버전이 실행한다. 그리고 당신의 일은 35번의 연속 승인이 된다. 오케스트레이션된 영상 제작이 실제로 어떤 느낌인지 직접 써봤다.