신뢰받는 확장 프로그램 이름이 Cursor 스토어를 통해 SSH 백도어를 전달한 방법
요약
Cursor 마켓플레이스에서 Anthropic의 Claude Code 확장 프로그램 변조 빌드가 배포되어 개발자 기기에 공격자의 SSH 키가 추가되는 보안 사고가 발생했습니다. 이 공격은 공식 시스템이 아닌, 확장 프로그램 전달 체인의 특정 단계(마켓플레이스 프록시)를 통해 악성 코드를 주입하여 이루어졌습니다.
핵심 포인트
- 공격은 Cursor 마켓플레이스를 통해 변조된 빌드로 진행되었으며, Anthropic의 공식 시스템은 침해되지 않았음.
- 악성 로더는 에디터가 확장 프로그램을 로드하는 즉시 실행되도록 설계되었습니다.
- 이 사건은 확장 프로그램 전달 체인 중 특정 단계(마켓플레이스) 취약점을 이용했음을 보여줍니다.
10월 29일, Cursor의 확장 마켓플레이스에서 Anthropic의 Claude Code 확장 프로그램 버전 2.1.312 및 2.1.313의 변조된 빌드가 서비스되었습니다. 이 빌드들은 약 11시간 동안 활성화되어 개발자들의 기기에 공격자의 SSH 키를 추가했습니다.
Anthropic의 시스템은 침해되지 않았습니다. 공식 패키지도 마찬가지입니다. Anthropic에 따르면, 공격자는 "Cursor 마켓플레이스 접근 권한"을 사용했다고 밝혔습니다. BankInfoSecurity가 인용한 Cursor의 성명에 따르면, 최대 5,000명의 사용자에게 영향을 미쳤다고 합니다.
이것이 어떻게 가능한지 확인하려면, 확장 프로그램이 에디터로 전달되는 경로를 따라가 보세요.

Cursor 확장 문서에 설명된 전달 체인입니다. 이 사건은 Cursor 마켓플레이스가 제공한 사본만 변조되었다는 것을 보여줍니다.
전달 체인 (The delivery chain)
Cursor는 VS Code를 기반으로 구축되었습니다. Microsoft의 확장 마켓플레이스를 사용하지 않습니다. 문서에 따르면, Open VSX라는 오픈 확장 레지스트리에서 타사 확장 프로그램을 가져옵니다. 다운로드는 Cursor 자체 마켓플레이스 프록시를 거치며, 이 과정에서 악성 코드가 있는지 검사한 후 제공됩니다.
따라서 Claude Code 업데이트가 사용자에게 도달하는 경로는 네 단계(hops)에 걸쳐 이루어집니다:
- Anthropic이 확장 프로그램을 빌드하고 게시합니다.
- 레지스트리가 이를 저장합니다.
- Cursor의 마켓플레이스가
anthropic.claude-code라는 이름으로 제공합니다. - 사용자의 에디터가 이를 설치하고 로드합니다.
사용자는 3단계에서 이름을 확인합니다. 그리고 4단계에서, 사용자의 에디터는 3단계에서 제공된 모든 것을 실행합니다. 만약 누군가가 이 바이트(bytes)를 변경할 수 있다면, 이름은 여전히 정상적으로 보일 것입니다.
변조된 빌드가 수행한 작업 (What the tampered build did)
StepSecurity는 악성 빌드와 깨끗한 빌드를 비교했습니다. 변조된 extension.js 파일은 공식 2.1.312 번들에서 앞부분에 7,386바이트의 로더가 추가된 것이었습니다. 이 파일의 크기는 약 3.6MB였습니다. StepSecurity는 "악성 빌드는 모든 면에서 공식 확장 프로그램이지만 한 가지를 제외하고"라고 설명했습니다.
2.1.313 빌드에서는 새로운 버전 번호가 패키징된 매니페스트에만 나타났습니다. 이로 인해 일상적인 업데이트처럼 보이게 했습니다.
로더는 에디터가 확장 프로그램을 로드하는 즉시 실행됩니다. Claude 대화가 필요하지 않습니다. VS Code 자체 문서에서는 이것이 왜 중요한지 설명합니다: "확장 프로그램 호스트는 VS Code 자체와 동일한 권한을 가집니다." 확장 프로그램은 사용자의 파일을 읽고, 네트워크를 사용하며, 프로세스를 시작할 수 있습니다.

StepSecurity 분석에 나열된 로더 단계.
StepSecurity에 따르면, 로더는 이후 6단계의 과정을 거쳤습니다:
- 호스트 세부 정보와 최대 40개의 비밀처럼 보이는 환경 변수 이름 수집
- 공격자 키를
~/.ssh/authorized_keys에 추가 - SSH 서버 활성화 시도
- 리버스 SSH 터널 개방 시도 (60초마다 재시도)
- 재부팅 또는 로그인 후에도 터널이 다시 시작되도록 지속성(persistence) 설정
- 공격자 서버로 보고
StepSecurity는 자격 증명 값(credential values)이 읽히지 않았다고 말합니다. Cursor는 SSH 활성화에는 일반적으로 관리자 권한(admin rights)이 필요하다고 언급했습니다. 하지만 키와 지속성 설정은 그것 없이도 이루어질 수 있습니다.
증거 (The evidence)
Cursor의 공지에는 기간이 명시되어 있습니다: 태평양 시간(Pacific)으로 10월 29일 오전 2시 27분부터 오후 1시 35분 사이입니다. Cursor는 악성 버전을 제거하고, 마켓플레이스를 오프라인 처리한 후, 재구축하고 키를 순환했습니다(rotated keys). Hacker News에 따르면 Microsoft는 해당 빌드가 Visual Studio Marketplace나 npm에 게시된 적이 없다고 밝혔습니다. StepSecurity는 2.1.312의 Open VSX 복사본을 깨끗하다고 검증했습니다.
공격자가 어떻게 Cursor 마켓플레이스에 접근했는지는 공개되지 않았습니다.
조치 사항 (What to do)
- 확인하고 가정하지 마세요 (Check, don't assume). 만약 그날 Cursor의 마켓플레이스에서 Claude Code를 설치하거나 업데이트했다면, Cursor가 제시하는 확인 단계를 따르세요.
authorized_keys파일에서svc-telemetry로 레이블링된 키를 찾아보세요. - 업데이트가 청소는 아닙니다 (Updating is not cleaning). Anthropic은 2.1.314 버전을 출시했습니다. 하지만 보안 연구원 Kevin Beaumont는 자동 업데이트되는 대체 버전들이 "이전 백도어를 제거하지 않는다"고 지적했습니다. 지속성(Persistence)과 SSH 키는 수동으로 제거해야 합니다.
- 설치 대기 시간(install cooldown)을 추가하세요. Cursor는 팀 관리자가 특정 시간 동안 공개된 버전이 나올 때까지 설치 및 업데이트를 지연시킬 수 있도록 합니다. 기본값은 0으로, 즉 비활성화 상태입니다. 악성 버전들은 약 11시간 동안 활성화되어 있었습니다.
- 가능하다면 서명 확인(signature checks)을 켜세요. Cursor는 엔터프라이즈 팀이 설치 전에 유효한 Open VSX 확장 프로그램 서명을 요구할 수 있도록 합니다.
문제가 발생하는 지점 (Where this breaks down)
근본 원인은 알려지지 않았기 때문에 위에 제시된 수정 사항들은 어떤 계층(layer)이 실패했는지에 대한 추측일 뿐입니다. 출처 어디에도 서명 확인이 이 빌드를 잡아냈을지 여부는 언급되지 않습니다. 이는 공격자가 또한 서명을 하거나 서명을 우회할 수 있었는지 여부에 달려 있으며, 아무도 말하지 않았습니다.
대기 시간(cooldown)은 누군가 지연 시간이 끝나기 전에 악성 빌드를 발견할 경우에만 도움이 됩니다. 또한 좋은 보안 패치도 지연시킵니다.
이 글의 가장 약한 부분은 일반적인 교훈입니다. 코드를 제공하는 모든 스토어가 취약한 연결 고리(weak hop)가 될 수 있습니다. 하지만 증거는 하나의 마켓플레이스에서 발생한 단일 사건을 다루고 있으며, 그 근본 원인은 여전히 공개되지 않았습니다.
핵심 시사점 (Takeaway)
확장 프로그램 이름은 누가 코드를 작성했어야 하는지 알려줄 뿐입니다. 마지막으로 바이트(bytes)를 건드린 사람이 누구인지는 알려주지 않습니다.
당신의 에디터와 신뢰하는 퍼블리셔 사이에 어떤 연결 고리들(hops)이 존재하나요?
출처 (Sources)
- Cursor, 보안 공지: 악성 버전의 Anthropic.claude-code (2026년 10월 29일, 2026년 10월 30일 업데이트)
- StepSecurity, 트로이 목마화된 Claude Code 확장 프로그램이 지속적인 SSH 백도어를 전달함 (2026년 10월 30일)
- The Hacker News, 공식 Claude Code VS Code 확장 프로그램이 트로이 목마화됨 (2026년 10월 30일)
- BankInfoSecurity, Cursor가 Anthropic Claude Code 확장 프로그램의 손상 확인 (2026년 10월 30일)
- Cursor, 확장 프로그램 문서 (접속일: 2026년 11월 2일)
- Visual Studio Code, 확장 프로그램 런타임 보안 (접속일: 2026년 11월 2일)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기