Claude Code 확장 백도어: Cursor 마켓플레이스 감염 여부 확인법

2026년 10월 29일, 변조된 Anthropic Claude Code 확장이 Cursor 자체 확장 마켓플레이스를 통해 약 11시간 동안 Cursor 사용자에게 배포됐습니다. 문제의 빌드는 macOS·Windows용 2.1.312와 2.1.313으로, 공격자의 SSH 키를 심고 역방향 SSH 터널을 열려고 시도했으며 로그인할 때마다 다시 실행되도록 자리를 잡았습니다. Cursor는 영향을 받은 사용자가 최대 5,000명이라고 밝혔습니다. Cursor에서 Claude Code를 쓴다면 확장이 이미 새 버전으로 바뀌었더라도 PC를 점검해야 합니다. 확장을 업데이트하거나 지워도 페이로드가 남긴 흔적은 그대로 남기 때문입니다.
Anthropic은 자사 시스템이 뚫린 것이 아니며 공식 배포 채널인 Open VSX와 Visual Studio Marketplace의 버전은 변조되지 않았다고 설명합니다. 뚫린 곳은 Cursor가 이 레지스트리들과 에디터 사이에 두고 운영하는 중간 계층이었습니다.
핵심 요약
- 악성
Anthropic.claude-code2.1.312·2.1.313 빌드가 Cursor VS Code 확장 마켓플레이스에 올라와 2026년 10월 29일 태평양시 오전 2시 27분부터 오후 1시 35분까지(한국시간 같은 날 오후 6시 27분~다음 날 오전 5시 35분) 배포됐습니다(Cursor 보안 공지). - 이 업데이트를 받은 macOS·Windows Cursor 사용자가 대상입니다. Cursor는 최대 5,000명이 영향을 받았고 이들에게 직접 연락하겠다고 밝혔습니다(Help Net Security).
- Open VSX, Visual Studio Marketplace, Anthropic 자체 호스트에서 받은 Claude Code와 Claude Code CLI는 영향이 없습니다(The Register, OpenSourceMalware).
- 페이로드는
authorized_keys에 주석이svc-telemetry인 SSH 키를 넣고134.209.82[.]225로 역방향 터널을 열었으며 로그인 시 자동 실행을 등록했습니다. 호스트 정보와 비밀값처럼 보이는 환경변수의 이름(값은 아님)도 한 번 전송했습니다(Phorion). - 확장을 지우거나 업데이트해도 PC는 깨끗해지지 않습니다. 키와 자동 실행 항목, 터널을 직접 지우고 그 PC에서 접근 가능한 자격 증명을 교체해야 합니다.
Cursor의 Claude Code 확장에 무슨 일이 있었나
Cursor는 VS Code를 포크한 에디터입니다. Microsoft의 Visual Studio Marketplace 약관은 Microsoft 제품에서만 이 마켓을 쓰도록 허용하기 때문에 포크 에디터는 확장을 다른 곳에서 가져옵니다. Cursor 문서에 따르면 확장 검색과 다운로드는 자체 서비스인 marketplace.cursorapi.com을 거치며 이 서비스는 Eclipse 재단이 운영하는 오픈소스 확장 레지스트리 Open VSX를 바탕으로 하지만 Open VSX를 그대로 통과시키는 구조는 아닙니다(Cursor 문서). 변조 빌드가 나타난 곳이 바로 이 프록시입니다.
Cursor 공지는 10월 29일 게시됐고 10월 30일 오전 11시 30분(태평양시)에 수정됐습니다. 내용은 이렇습니다.
- 악성 버전은 Windows·macOS용
Anthropic.claude-code2.1.312와 2.1.313입니다. - 2026년 10월 29일 태평양시 오전 2시 27분경부터 오후 1시 35분까지(UTC 09:27~20:35) Cursor VS Code 확장 마켓플레이스에 올라 있었습니다.
- Cursor는 "이 악성 버전들은 Anthropic이 개발한 것이 아니다"라고 밝혔습니다.
- Cursor는 탐지 즉시 해당 버전을 내리고 접근 기록을 감사해 다른 확장은 변조되지 않았음을 확인했습니다. 이어 키를 교체하고 마켓플레이스를 재구축해 다시 열었으며 호스팅 업체와 함께 공격자 서버를 내렸습니다.
처음 공지에는 2.1.313만 있었습니다. 10월 30일 수정본에서 2.1.312가 추가되고 파일 해시도 바뀌었습니다. 초기 보도 중에는 아직 한 버전만 적거나 해시 라벨이 다른 글이 있으니 Cursor의 현재 공지를 기준으로 삼는 편이 안전합니다.
Anthropic의 Felix Rieseberg는 The Register에 "Anthropic의 시스템이나 직원 노트북이 침해된 것은 아니다"라며 "악의적인 행위자가 Cursor 마켓플레이스 접근 권한을 이용해 Claude Code 확장의 변조본을 올렸다"고 말했습니다. 그는 "공식 채널의 버전은 영향이 없고 Cursor 사용자에게만 해당한다"고 덧붙였습니다. 같은 회사의 David Dworken은 Hacker News 댓글에서 2.1.313은 Open VSX, VS Code Marketplace, Anthropic 호스트 어디에도 게시된 적이 없으며 혼동을 피하려고 다음 릴리스 번호를 2.1.314로 매겼다고 설명했습니다.
공격자가 어떻게 Cursor 마켓플레이스에 게시할 권한을 얻었는지는 아직 공개되지 않았습니다.
Open VSX도 뚫렸나
아닙니다. 초기 보도 몇 건은 Open VSX를 지목했고 URL에 아직 "vsx-compromise"가 남아 있는 권고문도 있습니다. 하지만 Cursor가 자사 마켓플레이스가 출처라고 확인한 뒤 이 보도들은 정정됐습니다. Open VSX API에는 Claude Code 2.1.310, 2.1.311, 2.1.312, 2.1.314, 2.1.316이 있고 2.1.313은 없습니다. StepSecurity는 Open VSX에 있는 2.1.312 빌드가 정상이라고 확인했습니다(StepSecurity). Cursor가 지목한 2.1.312는 Cursor 마켓플레이스가 내려준 별개 파일입니다. 그래서 버전 번호만으로는 감염 여부를 판단할 수 없습니다.
백도어는 무엇을 했나
보안업체 Phorion, StepSecurity, OpenSourceMalware가 이 빌드를 분석했습니다. 공격자는 압축된 extension.js 맨 앞에 66줄짜리 로더를 끼워 넣고 나머지 원본 코드는 그대로 뒀습니다(OpenSourceMalware). 로더는 에디터가 파일을 불러오는 순간, 확장 자체의 시작 코드보다 먼저 실행되므로 사용자가 아무것도 누르지 않아도 동작했습니다(Phorion).

페이로드는 네 단계로 움직였습니다.
- 키 심기: 주석이
svc-telemetry인 Ed25519 공개키를~/.ssh/authorized_keys에 추가했고 파일이 없으면 새로 만들었습니다. - SSH 활성화와 터널: SSH 서버(macOS의 원격 로그인, Windows의 OpenSSH Server, Linux의
sshd)를 켜려고 시도한 뒤tunnel@134.209.82[.]225의 22번 포트로 접속해 원격 포트 포워딩(-R *:0:localhost:22)을 요청했습니다. 이렇게 하면 방화벽에 인바운드 포트를 열지 않아도 공격자가 이 PC의 SSH 서버로 되돌아 들어올 길이 생깁니다. 60초마다 재시도했고autossh가 있으면 그것을 썼습니다. - 자동 실행 등록: macOS에서는
~/.config/.smt를 실행하는com.apple.sysmond.plistLaunchAgent를 설치했습니다. Linux에서는 crontab에@reboot항목을, Windows에서는SysMon이라는 예약 작업을 만들었고 관리자 권한이 없으면 시작프로그램 폴더에sysmon.cmd를 넣었습니다. - 1회 비컨 전송: 8099번 포트로 HTTP POST를 한 번 보냈습니다. 호스트명, 사용자명, OS, 아키텍처, 홈·작업 디렉터리, 전역 Git 이메일, 공인 IP, 그리고 이름에
KEY,TOKEN,SECRET,PASS,AWS,GCP가 들어간 환경변수 이름 최대 40개가 담겼습니다. 값은 보내지 않았습니다.
피해를 줄인 요인도 두 가지 있습니다. SSH를 켜려면 관리자 권한이 필요한데, Cursor는 "Cursor를 관리자 권한으로 실행한 매우 드문 경우가 아니라면" 이 단계는 실패했을 것이라고 밝혔습니다(BankInfoSecurity). macOS에서는 스크립트의 상태 확인 코드에 버그가 있어 일반 사용자 계정이면 대개 활성화 단계를 건너뛰었다고 Phorion은 분석했습니다. 다만 키 추가와 자동 실행 등록, 비컨 전송은 실행됐습니다. 원격 로그인이 이미 켜져 있었거나 나중에 켜는 Mac은 여전히 위험합니다. Cursor는 공격자 서버가 현재 오프라인이라고 밝혔습니다.
| 플랫폼 | 자동 실행 방식 | 확인할 파일 |
|---|---|---|
| macOS | LaunchAgent com.apple.sysmond.plist | ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_* |
| Linux | crontab @reboot 항목 | ~/.config/.smt, /tmp/.stk_* |
| Windows | 예약 작업 SysMon 또는 시작프로그램 sysmon.cmd | %USERPROFILE%\.config\smt.cmd, smtk, %TEMP%\.stk_* |
출처: Phorion, Cursor 보안 공지
내 PC가 감염됐는지 확인하는 방법
macOS나 Windows에서 Claude Code 확장을 설치한 Cursor를 쓰고 있었고 10월 29일 해당 시간대에 Cursor가 켜져 있었으며 확장 자동 업데이트가 켜져 있었다면 점검 대상입니다. Claude Code CLI만 쓰거나 Microsoft VS Code에서 확장을 쓴 경우는 영향이 없다고 보고됐습니다.
아래 흔적을 점검합니다. 모두 Cursor 공지나 Phorion 권고문에 나온 항목입니다.
- SSH 키:
~/.ssh/authorized_keys에svc-telemetry가 있는지 봅니다. Windows에서는C:\ProgramData\ssh\administrators_authorized_keys도 확인합니다. 심어진 키의 지문은SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk입니다. - 확장 폴더: Cursor 확장 디렉터리에
anthropic.claude-code-2.1.312-*또는anthropic.claude-code-2.1.313-*가 있는지 봅니다. 악성extension.js의 SHA-256은ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15입니다. - 자동 실행 항목: 위 표의 LaunchAgent, crontab 항목, 예약 작업.
- 프로세스:
-R *:0:localhost:22옵션으로 실행 중인ssh나autossh. - 네트워크:
134.209.82[.]225의 22번·8099번 포트로 나가는 연결. - 터널 사용 흔적: SSH 로그에
127.0.0.1이나::1에서svc-telemetry키로 들어온 로그인이 있으면 공격자가 실제로 터널을 통해 들어왔다는 뜻이라고 Phorion은 설명합니다.
Cursor는 공지에 스크립트 두 개를 첨부했습니다. remediate-macos.sh는 root가 아닌 해당 사용자 계정으로, remediate-windows.ps1은 관리자 권한으로 실행합니다. 둘 다 흔적이 남아 있으면 0이 아닌 종료 코드를 돌려줍니다.
복구 절차
Cursor 공지와 Phorion 권고문이 제시하는 순서는 같습니다.
- 페이로드가 실행된 흔적이 있는 PC를 네트워크에서 격리합니다. 엔드포인트 보안 도구가 있다면 지우기 전에 증거부터 보존합니다.
- 재시도 루프와 공격자 주소로 연결된
ssh·autossh프로세스를 종료합니다. - LaunchAgent를 내리고 지우거나, crontab 줄을 삭제하거나,
SysMon작업과 시작프로그램 스크립트를 지웁니다..smt,.smtk,.stk_*파일도 지웁니다. authorized_keys에서svc-telemetry주석이 달린 키를 지우고 직접 켠 적이 없다면 원격 로그인을 다시 끕니다.- 그 PC에서 접근할 수 있던 자격 증명을 교체합니다. Git 호스팅, CI/CD, 클라우드, 패키지 레지스트리, SSH 키가 대상이며 깨끗한 기기에서 작업합니다. 비컨은 변수 이름만 보냈지만 터널로 들어온 사람은 값까지 읽을 수 있었습니다.
- Claude Code를 2.1.314 이상으로 다시 설치합니다. 10월 31일 기준 Open VSX 최신 버전은 2.1.316입니다.
확장을 제거해도 페이로드의 1~3단계는 되돌려지지 않습니다. 떨어뜨린 스크립트가 따로 실행되기 때문에 정상 버전으로 자동 업데이트돼도 마찬가지입니다.
AI 코딩 도구 사용자에게 이번 사건이 갖는 의미
이번 사건은 흔한 악성 확장과 두 가지가 다릅니다.
먼저 눈치챌 단서가 없었습니다. 이전 공격은 비슷한 이름으로 사용자를 속이는 경우가 많았지만 이번에는 확장 ID와 게시자, 이름이 모두 진짜였습니다. Manifold Security의 Ax Sharma는 "게시자가 진짜라면 게시자 이름을 확인해도 소용없다"고 지적했습니다(Help Net Security). 신뢰가 깨진 지점은 개발사가 아니라 배포처였습니다.
다음으로 포크 에디터에는 배포 계층이 하나 더 있습니다. VS Code 포크는 Microsoft 마켓을 쓸 수 없어 Open VSX나 자체 프록시, 또는 둘 다에 기댑니다. Cursor 문서도 같은 publisher.extension ID가 마켓마다 다른 게시자나 코드를 가리킬 수 있다고 경고합니다. 계층이 하나 늘 때마다 빌드가 바꿔치기될 수 있는 지점도 하나 늘어납니다. Open VSX 역시 2025년 10월 Koi Security가 보고한 GlassWorm 사건을 겪었습니다. Open VSX를 운영하는 Eclipse 재단은 원인을 개발자들이 유출한 게시 토큰으로 파악하고 토큰 접두사, 짧은 토큰 수명, 게시 시점 스캔을 도입했습니다(Eclipse 재단).
AI 코딩 확장은 개발자 권한 그대로 소스 코드, 클라우드 자격 증명, SSH 키 옆에서 돌아가기 때문에 공격자에게 매력적인 표적입니다. 이번 달에만 LiteLLM PyPI 공급망 공격에 이어 두 번째 개발자 공급망 사고입니다. LiteLLM 때도 오염된 패키지 릴리스가 같은 방식으로 빌드 시스템까지 들어갔습니다.
팀 단위로 할 일은 패키지 공급망 대응과 같습니다.
- 관리 대상 PC에서는 확장 버전을 고정하거나 허용 목록으로 관리하고 업데이트를 먼저 검토할 수 있다면 자동 업데이트를 끕니다.
- IDE 헬퍼 프로세스가
~/.ssh/authorized_keys에 쓰거나com.apple.*이름의 LaunchAgent를 만드는지 감시합니다. Phorion에 따르면 이번 키는 Node 파일 API로 기록돼서echo나tee만 감시하는 규칙으로는 잡히지 않습니다. - 개발자 노트북의 셸 환경변수에 수명이 긴 비밀값을 두지 않습니다.
자주 묻는 질문
악성 Claude Code 확장 버전은 무엇인가요?
Cursor가 지목한 버전은 2026년 10월 29일 Cursor VS Code 확장 마켓플레이스가 배포한 Windows·macOS용 Anthropic.claude-code 2.1.312와 2.1.313입니다. Open VSX에 있는 2.1.312는 별개 파일로, 정상으로 확인됐습니다. 2.1.314 이후 버전은 안전합니다.
Claude Code CLI나 VS Code Marketplace 버전도 영향을 받았나요?
아닙니다. Anthropic은 공식 채널의 버전은 영향이 없고 Cursor 사용자에게만 해당한다고 밝혔습니다. 보안 연구자들은 npm CLI 패키지가 악성이 아니며 2.1.313은 Open VSX나 Visual Studio Marketplace에 존재한 적이 없다고 보고했습니다.
피해자는 몇 명인가요?
Cursor는 최대 5,000명이 영향을 받았고 직접 연락하겠다고 밝혔습니다. 실제로 페이로드가 실행된 PC 수나 공격자가 사용한 터널 수는 공개되지 않았습니다.
확장을 지우면 백도어도 사라지나요?
사라지지 않습니다. 페이로드는 SSH 키와 별도 스크립트, 로그인 항목이나 예약 작업을 남기고 이것들은 확장 없이도 계속 실행됩니다. 직접 지우거나 Cursor의 복구 스크립트를 실행한 뒤 자격 증명을 교체해야 합니다.
공격자가 API 키나 토큰을 훔쳐 갔나요?
비컨은 비밀값처럼 보이는 환경변수의 이름만 보냈고 값은 보내지 않았습니다. 하지만 SSH가 켜진 상태에서 역방향 터널이 연결됐다면 공격자가 사용자 계정으로 로그인해 사용자가 읽을 수 있는 모든 것을 읽을 수 있었습니다. 예방 차원에서 자격 증명을 교체하는 것이 좋습니다.
출처
- Cursor: 악성 Anthropic.claude-code 2.1.312·2.1.313 보안 공지
- Cursor 문서: 확장과 Cursor 마켓플레이스
- Phorion: 공식 Claude Code 확장 침해 권고문
- StepSecurity: Trojanized Claude Code extension
- OpenSourceMalware: Trojanized Claude Code extension plants persistent SSH backdoor
- The Register: Anthropic의 Claude Code 확장 침해 관련 입장
- Help Net Security: Claude Code extension poisoned with persistent SSH backdoor
- BankInfoSecurity: Cursor confirms Claude Code extension compromise
- Hacker News: Anthropic David Dworken의 댓글
- Open VSX: Anthropic.claude-code 버전 목록
- Koi Security: Open VSX의 GlassWorm
- Eclipse 재단: Open VSX 보안 업데이트(2025년 10월)


