회사, 삭제만으론 부족하다며 자격증명 교체 요청
악성 Claude Code 확장이 Cursor 마켓에 11시간 유포됐다가 차단됐다고 Cursor가 29일(현지시간) 밝혔다.
보안 공지에 따르면 회사는 영향 이용자에게 직접 연락하기로 했다. 마켓 키를 교체하고 공격자 서버를 내린 뒤에도 이용자 쪽 자격증명 교체는 별도로 필요하다.
변조본이 태평양시간 오전 유통
29일 태평양시간 오전 2시 27분부터 오후 1시 35분까지 변조본이 유통됐다. Anthropic.claude-code 버전 2.1.312와 2.1.313이 윈도우와 맥용으로 Cursor의 VS Code 확장 마켓에 올라왔다. 로이터에 따르면 영향 규모는 최대 약 5천 명이다.
이 악성 버전의 확장은 Anthropic이 개발하지 않았다.
— Cursor, 보안 공지 10월 29일 · “These malicious versions of the extension were not developed by Anthropic.”
Open VSX와 마이크로소프트 VS Code 마켓의 공식 배포본은 이번 범위에 들어가지 않았다. 다른 Cursor 마켓 확장도 변조되지 않았다. 30일 공지 갱신에서는 영향 버전에 2.1.312를 추가하고 침해 지표를 보강했다.
SSH 키 심고 호스트 정보 전송
악성 코드는 확장 로딩과 함께 호스트명·사용자명·운영체제·아키텍처·홈 경로·작업 디렉터리·설정된 Git 이메일·공개 IP를 모아 공격자 서버로 보냈다. authorized_keys에는 svc-telemetry 주석의 공격자 SSH 공개키를 붙이고, 로컬 SSH를 켠 뒤 역방향 터널을 열려 했다.
macOS는 LaunchAgent, 윈도우는 SysMon 예약 작업이나 시작 프로그램으로 터널을 약 60초마다 다시 걸도록 심었다. 로컬 SSH를 켜려면 관리자 권한이 필요해, Cursor를 관리자 권한으로 띄운 드문 경우를 빼면 터널 단계는 대부분 실패했다. 그래도 키 삽입·지속성 설치·호스트 정보 전송은 이뤄졌다.
OpenSourceMalware 분석에 따르면 정상 확장 앞에 약 66줄짜리 로더가 끼워져 있었다. KEY·TOKEN·SECRET·PASS·AWS·GCP가 들어간 환경변수 이름 최대 40개도 수집 대상이었다. 이용자가 Claude 대화를 시작하지 않아도 확장만 로드되면 실행됐고, 공격자 서버 134.209.82.225의 8099번 포트로 HTTP 비콘을 보냈다.
마켓 중단 뒤 키 교체·재개
탐지 직후 Cursor는 변조본을 내리고 배포를 막았다. 이어서 마켓 전체를 일시 중단한 뒤 접근 권한을 감사하고 키를 교체한 다음 마켓을 다시 열었다. 클라우드 사업자와 협력해 공격자 서버도 내려 역셸과 정보 전송 경로를 끊었다.
전원은 Claude Code for VS Code 2.1.314로 업데이트해야 한다. macOS용·윈도우용 정리 스크립트도 공개됐다. 스크립트는 악성 확장과 지속성 장치, 터널 프로세스, 공격자 SSH 키를 함께 지운다.
삭제만으론 백도어 안 사라져
확장 프로그램 제거만으로는 충분하지 않을 수 있다. 악성코드가 계속 돌아가는 독립 지속성 스크립트를 떨어뜨린다.
— Cursor, 보안 공지 10월 29일 · “Uninstalling the extension may not be sufficient — the payload drops standalone persistence scripts that keep running.”
해당 시간대에 마켓에서 2.1.312 또는 2.1.313을 설치·갱신한 이용자는 svc-telemetry 키 유무를 먼저 확인해야 한다. 키가 있으면 호스트를 격리한 뒤 공식 스크립트로 키·지속성·터널 프로세스를 제거하고, 신뢰할 수 있는 기기에서 자격증명과 세션을 교체해야 한다.
아르스 테크니카에 따르면 Anthropic은 아직 고객에게 이번 사건을 공개 경고하지 않았다. 공격자가 Cursor 마켓 게시 경로에 어떻게 접근했는지 Cursor와 Anthropic은 설명하지 않았다. Anthropic은 로이터의 논평 요청에 즉각 응하지 않았다.
