클로드 코드 확장 SSH 백도어 — 감염 확인과 대응법
2026년 10월 29일, 커서(Cursor)의 확장 마켓플레이스에 올라온 Claude Code 확장 2.1.313 버전이 개발자 PC에 SSH 백도어를 심는 사고가 발생했습니다. 공식 Anthropic 시스템이 뚫린 게 아니라 마켓플레이스에 올라온 "가짜 빌드"가 문제였는데, 삭제만으로는 완전히 제거되지 않는다는 점이 특히 위험합니다. 이 글에서는 무슨 일이 있었는지, 내 PC가 감염됐는지 확인하는 법, 감염됐다면 어떻게 복구하는지를 공개된 보안 분석과 공식 공지를 토대로 정리합니다.
핵심 요약
- 무엇: Cursor 확장 마켓플레이스에 트로이목마화된
anthropic.claude-code2.1.313 버전이 올라와, 설치/업데이트한 PC에 공격자 SSH 키를 심고 리버스 터널을 열었습니다. - 언제: 2026년 10월 29일 약 11시간(한국시간 기준 10월 29일 저녁 ~ 30일 새벽) 동안 노출됐고, 최대 약 5,000명이 해당 빌드를 받았다고 Cursor가 밝혔습니다.
- 어디: Cursor 자체 확장 마켓플레이스에서만 배포됐고, Microsoft Visual Studio Marketplace 등 공식 채널은 영향을 받지 않았습니다.
- 확인 포인트:
~/.ssh/authorized_keys에svc-telemetry라는 키 항목이 있으면 감염 의심 신호입니다. - 중요: 확장을 지워도 백도어는 남습니다. 지속성(persistence) 파일과 SSH 키를 직접 제거하고 자격 증명을 전부 교체해야 합니다.
무슨 일이 있었나
이번 사고는 Anthropic이 만든 정상 확장 자체가 뚫린 것이 아니라, 누군가가 정상 코드에 악성 로더를 덧붙인 가짜 빌드를 Cursor 마켓플레이스에 2.1.313 버전으로 올린 공급망(supply chain) 성격의 공격입니다. 공개된 분석에 따르면 악성 로더는 정상 extension.js 앞에 약 66줄짜리 코드를 덧붙인 형태였습니다.
타임라인은 다음과 같습니다(UTC 기준).
| 시각 (2026-10-29, UTC) | 사건 |
|---|---|
| 약 09:27 | 악성 2.1.313 버전이 Cursor 마켓플레이스에 공개 |
| 09:27 ~ 20:35 | 약 11시간 노출(최대 5,000명 다운로드 추정) |
| 20:35 | Cursor가 해당 버전 제거, 마켓플레이스 일시 중단 |
| 익일 01:07 | 정상 버전 2.1.314 공개 |
바로 직전 버전인 2.1.312(10월 27일)와 이후 버전 2.1.314(10월 30일)는 정상으로 확인됐습니다. 즉 지금 시점의 안전한 버전은 2.1.314 이상입니다. 다만 사고 당일 Cursor 마켓플레이스에서 Claude Code 확장을 설치·업데이트한 적이 있다면, 버전 기억이 모호하더라도 아래 확인 절차를 한 번 돌려보는 것이 안전합니다.
백도어는 무엇을 했나
악성 로더는 확장이 로드되는 순간(대화나 패키지 설치 같은 트리거 없이) 바로 실행됐고, 공개 분석에서 밝혀진 동작은 다음과 같습니다.
- SSH 키 심기:
~/.ssh/authorized_keys에svc-telemetry라는 코멘트가 달린 공격자 공개키를 추가해, 공격자가 해당 계정으로 로그인할 수 있게 만듭니다. - 리버스 터널: 공격자 서버
134.209.82.225로 아웃바운드 연결을 열어 로컬 22번 포트(SSH)를 외부로 포워딩합니다. - 정보 수집(beacon): 호스트명, 사용자명, OS, 홈/작업 디렉터리, Git 이메일, 공인 IP 등을
http://134.209.82.225:8099/beacon로 전송하고, 자격 증명처럼 보이는 환경 변수를 최대 40개까지 수집합니다. - 지속성(persistence): OS별로 재부팅 후에도 살아남도록 자동 실행을 등록합니다. macOS는 LaunchAgent(
com.apple.sysmond.plist)와 cron@reboot, Windows는 예약 작업SysMon과 시작 프로그램 스크립트, Linux는 cron 항목을 사용합니다. 설정 파일~/.config/.smt도 흔적으로 보고됐습니다.
참고로 macOS에서는 악성 스크립트의 버그 때문에 실제로 SSH 서비스가 켜지지 않은 경우가 많아 피해가 제한됐다는 분석도 있습니다. 하지만 키와 지속성 흔적은 그대로 남으므로 "운이 좋았다"고 넘길 일은 아닙니다.
침해 지표(IOC) 요약
| 구분 | 값 |
|---|---|
| 악성 버전 | anthropic.claude-code 2.1.313 |
| SSH 키 코멘트 | svc-telemetry |
| C2 서버 IP | 134.209.82.225 (포트 22, 8099) |
| HTTP 비콘 | http://134.209.82.225:8099/beacon |
| 악성 JS 파일 해시(SHA-256) | ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15 |
| 지속성 파일 | ~/.config/.smt |
내 PC가 감염됐는지 확인하기
가장 빠른 1차 확인은 SSH 키 파일에서 svc-telemetry 항목을 찾는 것입니다. 아래는 읽기만 하는 안전한 점검 명령으로, Cursor가 공지한 확인 방법과 공개된 IOC를 따른 것입니다.
macOS / Linux
# 1) 악성 SSH 키 흔적 확인
grep -s svc-telemetry ~/.ssh/authorized_keys && echo "⚠️ svc-telemetry 키 발견"
# 2) 지속성 파일 확인
ls -la ~/.config/.smt 2>/dev/null && echo "⚠️ 지속성 파일 발견"
# 3) macOS: 의심 LaunchAgent 확인
ls -la ~/Library/LaunchAgents/com.apple.sysmond.plist 2>/dev/null
Windows (PowerShell)
# authorized_keys에서 svc-telemetry 탐색
Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry"
# 의심 예약 작업 확인
schtasks /query /tn "SysMon" 2>$null
이 중 하나라도 걸린다면 감염을 전제로 대응해야 합니다. 아무것도 안 나와도 사고 당일 설치 이력이 있다면 확장 버전을 2.1.314 이상으로 올려두는 것이 좋습니다.
감염됐다면 — 복구 절차
핵심은 **"확장 삭제만으로는 끝나지 않는다"**는 점입니다. 백도어가 별도 스크립트로 남기 때문입니다. 공식 가이드가 권고하는 순서는 다음과 같습니다.
- 네트워크 격리: 추가 유출을 막기 위해 해당 PC를 네트워크에서 분리합니다.
- SSH 키 제거:
~/.ssh/authorized_keys에서svc-telemetry항목을 삭제합니다. - 지속성 제거: macOS LaunchAgent/cron, Windows 예약 작업
SysMon과 시작 스크립트, Linux cron 항목,~/.config/.smt등 흔적을 모두 지웁니다. Cursor가 배포한 자동 복구 스크립트(remediate-macos.sh,remediate-windows.ps1)를 쓰면 편합니다. 이 스크립트는 흔적이 남아 있으면 0이 아닌 코드로 종료합니다. - 확장 재설치: Claude Code 확장을 2.1.314 이상으로 올립니다.
- 자격 증명 전면 교체: 그 PC에서 접근 가능한 SSH 키, API 토큰, 클라우드/깃 자격 증명, 세션을 다른 안전한 기기에서 모두 재발급합니다. 환경 변수에 담겨 있던 토큰이 유출됐다고 가정하세요.
- 로그 점검·필요 시 재설치: SSH/인증 로그에서
svc-telemetry키를 통한 로그인이나 터널 연결 흔적을 확인하고, 터널이 실제로 붙었던 정황이 있으면 OS 재설치(호스트 재구축)까지 고려합니다.
방화벽에서 134.209.82.225의 22·8099 포트로 나가는 트래픽을 차단해두면 추가 비콘·터널을 막는 데 도움이 됩니다(현재 해당 C2는 다운된 것으로 보고됐습니다).
주의할 점과 교훈
- "공식 이름 = 안전"이 아니다. 같은
anthropic.claude-code이름이라도 어느 마켓플레이스에서 받았는지가 중요합니다. 이번 건은 Cursor 마켓플레이스 한정이었고, 공식 VS Code/Microsoft 마켓플레이스는 영향이 없었습니다. - 자동 업데이트의 양면성. 확장 자동 업데이트는 편하지만, 악성 빌드가 올라온 짧은 창에 그대로 끌려들어갈 수 있습니다. 중요 개발 환경에서는 업데이트 후 동작·버전 확인 습관이 안전판이 됩니다.
- 최소 권한·분리. 개발용 자격 증명을 한 PC에 몰아두지 말고, SSH 키에 패스프레이즈를 걸고, API 토큰은 범위를 좁혀 발급하면 유출 시 피해를 줄일 수 있습니다. SSH 보안 관점은 최근의 Tailscale 'Tailworm' 취약점 정리와도 함께 보면 좋습니다.
자주 묻는 질문
Q. 공식 VS Code에서 Claude Code 확장을 쓰는데 영향이 있나요?
A. 이번 악성 빌드는 Cursor 자체 마켓플레이스에서만 배포된 것으로 확인됐습니다. Microsoft Visual Studio Marketplace를 통해 설치했다면 이번 사고의 직접 대상은 아니지만, 이번 기회에 svc-telemetry 키 점검을 한 번 해두는 것은 손해가 없습니다.
Q. 확장만 삭제하면 끝나는 거 아닌가요? A. 아닙니다. 가장 중요한 포인트입니다. 백도어는 확장과 별개로 자동 실행 스크립트와 SSH 키를 남기기 때문에, 확장을 지워도 공격자의 접근 경로는 그대로 살아 있을 수 있습니다. 반드시 SSH 키·지속성 흔적 제거와 자격 증명 교체까지 진행해야 합니다.
Q. 점검했더니 svc-telemetry 키가 없었습니다. 안심해도 되나요?
A. 1차 신호가 없다는 것은 좋은 소식입니다. 다만 사고 당일 Cursor에서 해당 확장을 설치·업데이트한 기억이 있다면, 지속성 파일(~/.config/.smt)과 의심 예약 작업까지 함께 확인하고 확장을 2.1.314 이상으로 올려두는 것을 권합니다.
정리
이번 사고는 "신뢰하는 도구의 확장"조차 공급망 공격의 통로가 될 수 있음을 보여줍니다. Cursor에서 Claude Code 확장을 쓰고 있었다면, 버전을 2.1.314 이상으로 올리고 svc-telemetry 키 유무를 한 번 점검하세요. 하나라도 걸리면 삭제만으로 끝내지 말고 지속성 제거 → 자격 증명 전면 교체까지 진행하는 것이 핵심입니다.
참고 자료
- Trojanized Claude Code Extension Delivered Persistent SSH Backdoor to Developer Machines - StepSecurity
- Claude Code extension poisoned with persistent SSH backdoor - Help Net Security
- Weaponized Claude Code Extension Gives Hackers Persistent Remote Access - Cyber Security News
- Cursor — Claude Code Extension Security Notice
관련글
댓글
댓글을 불러오는 중입니다...