뉴스 AI 뉴스

공식 Claude Code 확장 2.1.313에 SSH 뒷문, 내 PC는 괜찮을까 직접 점검해 보니 흔적은 없었다

2026년 10월 30일 7회 1시간 전
공식 Claude Code 확장 2.1.313에 SSH 뒷문, 내 PC는 괜찮을까 직접 점검해 보니 흔적은 없었다

공식 Claude Code 확장 프로그램의 2.1.313판이 변조된 채 확장 저장소 Open VSX와 Cursor 마켓에 올라갔습니다. 설치하면 컴퓨터에 SSH 뒷문을 만드는 코드가 들어 있었습니다. 한국 시간으로 10월 29일 18시 27분부터 30일 5시 35분까지 약 11시간 열려 있었고, Cursor는 자사 사용자 최대 5,000명이 영향을 받았다고 밝혔습니다. 지금은 두 저장소 모두에서 내려갔고, 깨끗한 2.1.314가 올라와 있습니다.

  • 문제는 2.1.313 한 판뿐입니다. Cursor는 다른 판과 공식 배포 경로에는 문제가 없다고 밝혔습니다.
  • 마이크로소프트 VS Code 마켓에서는 확인되지 않았습니다. 이 블로그가 10월 30일 밤 직접 조회했을 때 VS Code 마켓의 판 375개 가운데 2.1.313은 없었습니다.
  • 확장을 불러오기만 해도 실행됩니다. 공격자 SSH 키를 추가하고, 공격자 서버로 터널을 열고, 켤 때마다 다시 실행되게 등록했습니다.
  • 확장만 지워서는 끝나지 않습니다. 뒷문은 확장 밖에 남습니다. Cursor 공지의 정리 스크립트와 비밀번호·토큰 교체가 필요합니다.
  • 이 블로그의 PC는 흔적이 없었습니다. 윈도우에서 읽기만 하는 점검 스크립트를 만들어 돌렸고, 글 아래에 실었습니다.

이 글은 Cursor 보안 공지(1차 자료)와 보안 회사 Phorion, StepSecurity의 분석을 읽고 정리했습니다. 저장소에 남은 판은 Open VSX와 VS Code 마켓의 공개 API로 직접 조회했고, 점검 스크립트는 이 블로그의 윈도우 PC에서 직접 돌렸습니다. 변조된 확장을 직접 받아 돌려 보지는 않았습니다.

이 글의 내용을 20초로 요약한 영상입니다(소리 없음).

사건 요약 여섯 칸. 변조된 판 2.1.313, 퍼진 곳 Open VSX와 Cursor 마켓(VS Code 마켓은 확인되지 않음), 노출 시간 약 11시간(한국 시간 10월 29일 18:27~30일 05:35), 영향받은 사람 최대 5,000명(Cursor 기준), 하는 일 SSH 뒷문, 깨끗한 판 2.1.314

Cursor 공지와 이 블로그의 직접 조회를 합쳐 정리했습니다.

무슨 일이 있었나

Claude Code는 Anthropic의 코딩 AI입니다. VS Code나 Cursor 같은 편집기에서 쓰려면 "Claude Code for VS Code"라는 확장 프로그램을 설치합니다. 이 확장은 Anthropic 이름으로 여러 저장소에 올라갑니다. 마이크로소프트의 VS Code 마켓, 누구나 쓸 수 있는 공개 저장소 Open VSX, 그리고 Open VSX를 옮겨 쓰는 Cursor 마켓입니다.

10월 29일, Open VSX에 Anthropic 이름 그대로 2.1.313판이 올라왔습니다. 겉보기에는 평소 업데이트와 같았지만, 확장의 핵심 파일(extension.js) 맨 앞에 다른 코드가 붙어 있었습니다. 이 판이 Cursor 마켓으로도 퍼졌고, 자동 업데이트를 켜 둔 사용자에게 설치됐습니다.

Cursor는 10월 29일 보안 공지에서 이렇게 밝혔습니다. "This malicious version of the extension was not developed by Anthropic."(이 악성 판은 Anthropic이 만든 것이 아니다.) 변조된 판이 어떻게 Anthropic 이름으로 올라갔는지는 아직 밝혀지지 않았습니다. Anthropic의 공식 발표는 10월 30일 밤까지 뉴스 페이지와 깃허브에서 찾지 못했습니다.

사건 순서 다섯 단계(한국 시간). 1 10월 28일 05:26 마지막 정상 판 2.1.312 공개. 2 10월 29일 18:27 변조된 2.1.313이 Open VSX에. 3 10월 30일 05:35 Cursor가 내리고 마켓을 닫음, 최대 5,000명 영향. 4 10월 30일 10:07 정상 2.1.314 공개, VS Code 마켓은 10:16~10:20. 5 10월 30일 22:31 이 블로그가 직접 조회, 두 저장소 모두 2.1.313 없음

시각은 Cursor 공지(미국 서부 시간)와 StepSecurity 분석(UTC)을 한국 시간으로 바꾼 것입니다.

저장소변조된 2.1.31310월 30일 22:31 직접 조회
Open VSX올라왔음 (처음 퍼진 곳)2.1.313 주소가 404(없음), 최신은 2.1.314 (10:07 공개, 인증 표시 있음)
Cursor 마켓올라왔음, 최대 5,000명 영향Cursor가 내리고 마켓을 다시 만듦 (Cursor 공지)
VS Code 마켓 (마이크로소프트)올라왔다는 확인 없음판 375개 중 2.1.313 없음, 2.1.312 다음이 2.1.314

이 표가 뜻하는 것: 마이크로소프트 VS Code에서 공식 마켓으로 확장을 받았다면 이 판을 받았을 가능성은 낮습니다. Cursor, VSCodium처럼 Open VSX를 쓰는 편집기를 썼다면 확인이 필요합니다. 깃허브의 Claude Code 변경 기록도 2.1.312에서 2.1.314로 바로 넘어가고, 2.1.313 항목이 없습니다.

변조된 코드는 무엇을 했나

Cursor 공지와 Phorion의 분석에 따르면, 변조된 코드는 편집기가 확장을 불러오는 순간 실행됐습니다. 사용자가 무엇을 누르거나 허락할 필요가 없었습니다.

변조된 코드가 한 일 네 단계. 1 SSH 접속 허용 키에 공격자 키 추가(키 설명 svc-telemetry), 2 공격자 서버 134.209.82.225로 역방향 SSH 터널, 60초마다 다시 시도, 3 켤 때마다 다시 실행되게 등록(윈도우 예약 작업 SysMon과 시작 프로그램 sysmon.cmd, 맥 LaunchAgent, 리눅스 crontab), 4 컴퓨터·사용자 이름, 공인 IP, git 메일, 환경 변수 이름을 한 번 전송

Cursor 공지와 Phorion 분석을 바탕으로 정리했습니다.

쉬운 말로 풀면 이렇습니다. SSH는 다른 컴퓨터에 원격으로 접속하는 방법입니다. 변조된 코드는 내 컴퓨터의 "접속을 허락할 열쇠 목록"에 공격자의 열쇠를 몰래 끼워 넣었습니다. 그리고 내 컴퓨터가 먼저 공격자 서버로 연결을 열어서, 공유기나 방화벽이 있어도 공격자가 그 길로 들어올 수 있게 했습니다(역방향 터널).

환경 변수는 이름만 보냈고 값은 보내지 않았습니다. 예를 들어 OPENAI_API_KEY라는 이름은 갔지만 키 값은 가지 않았습니다. 다만 뒷문이 열렸다면 공격자가 들어와서 값을 직접 볼 수 있으니, 그 컴퓨터에 있던 키와 토큰은 바꾸는 편이 안전합니다.

윈도우에서는 성공하지 못한 단계가 많았던 것으로 보입니다. Cursor는 SSH 서비스를 켜는 단계가 관리자 권한이 필요해 대부분 실패했을 것이라고 밝혔습니다. Phorion도 윈도우용 명령이 맥·리눅스용 셸을 불러서 실패했을 가능성이 크다고 봤습니다. 그래도 Cursor는 공격자 키를 추가하는 단계는 대부분의 컴퓨터에서 됐을 것이라고 적었습니다.

내 PC 점검하기 (윈도우)

Cursor 공지에 적힌 흔적을 바탕으로, 윈도우에서 확인할 것을 네 가지로 정리했습니다.

윈도우에서 확인할 것 네 가지. 1 VS Code·Cursor 확장 폴더에 anthropic.claude-code-2.1.313 이 있는지, 2 SSH 허용 키 파일에 svc-telemetry 가 있는지, 3 smt.cmd, smtk, 시작 프로그램 sysmon.cmd, 예약 작업 SysMon, 임시 폴더 .stk_ 파일이 있는지, 4 흔적이 있으면 Cursor 정리 스크립트를 돌리고 비밀번호·토큰·SSH 키를 바꾼다

점검 스크립트는 1~3을 읽기만 합니다.

이 네 가지를 한 번에 확인하는 PowerShell 스크립트를 만들었습니다. 파일을 읽고 목록을 볼 뿐, 아무것도 지우거나 바꾸지 않습니다. 메모장에 붙여 넣어 check_windows.ps1로 저장한 뒤, PowerShell에서 powershell -ExecutionPolicy Bypass -File .\check_windows.ps1로 실행합니다. 메모장에서 저장할 때 인코딩을 "UTF-8(BOM)"으로 고르면 한글이 깨지지 않습니다.

# Claude Code 확장 2.1.313 변조 흔적 점검 (윈도우, 읽기만 함)
$found = 0
function S($p) { $p -replace [regex]::Escape($HOME), '~' }
function Hit($m) { Write-Host "[위험] $m" -ForegroundColor Red; $script:found++ }
function Ok($m)  { Write-Host "[안전] $m" -ForegroundColor Green }

# 1. 설치된 Claude Code 확장 판
$dirs = '.vscode','.vscode-insiders','.cursor','.windsurf','.vscode-oss' |
  ForEach-Object { Join-Path $HOME "$_\extensions" } | Where-Object { Test-Path $_ }
$exts = foreach ($d in $dirs) { Get-ChildItem $d -Directory -Filter 'anthropic.claude-code-*' -ErrorAction SilentlyContinue }
if (-not $exts) { Ok "Claude Code 확장이 설치되어 있지 않음" }
foreach ($e in $exts) {
  $where = $e.Parent.Parent.Name
  if ($e.Name -like 'anthropic.claude-code-2.1.313*') { Hit "$where 에 변조된 2.1.313 이 있음" } else { Ok "$where : $($e.Name)" }
  $js = Join-Path $e.FullName 'extension.js'
  if ((Test-Path $js) -and (Select-String -Path $js -SimpleMatch -Pattern '134.209.82.225','svc-telemetry' -Quiet)) { Hit "$($e.Name) 의 extension.js 에 공격 흔적" }
}

# 2. SSH 접속 허용 키에 공격자 키(svc-telemetry)
foreach ($f in "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys") {
  if (Test-Path $f) {
    if (Select-String -Path $f -SimpleMatch 'svc-telemetry' -Quiet) { Hit "$(S $f) 에 공격자 키가 있음" } else { Ok "$(S $f) 에 공격자 키 없음" }
  } else { Ok "$(S $f) 파일 없음" }
}

# 3. 자동 실행 파일과 예약 작업
foreach ($f in "$HOME\.config\smt.cmd", "$HOME\.config\smtk", "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd") {
  if (Test-Path $f) { Hit "$(S $f) 가 있음" } else { Ok "$(Split-Path $f -Leaf) 없음" }
}
if (Get-ChildItem $env:TEMP -Force -Filter '.stk_*' -ErrorAction SilentlyContinue) { Hit "임시 폴더에 .stk_ 파일이 있음" } else { Ok "임시 폴더에 .stk_ 파일 없음" }
if (Get-ScheduledTask -TaskName 'SysMon' -ErrorAction SilentlyContinue) { Hit "예약 작업 SysMon 이 있음" } else { Ok "예약 작업 SysMon 없음" }

# 4. 공격 서버와의 연결
if (Get-NetTCPConnection -RemoteAddress '134.209.82.225' -ErrorAction SilentlyContinue) { Hit "134.209.82.225 와 연결되어 있음" } else { Ok "134.209.82.225 와 연결 없음" }

if ($found) { Write-Host "흔적 $found 개. Cursor 공지의 정리 방법을 따르세요." -ForegroundColor Red } else { Write-Host "흔적이 없습니다." -ForegroundColor Green }

이 블로그의 윈도우 PC에서 돌린 결과입니다. VS Code에 Claude Code 확장 2.1.310과 2.1.312가 있었고, 흔적은 하나도 없었습니다.

점검 스크립트를 실행한 터미널 화면. [안전] .vscode : anthropic.claude-code-2.1.310-win32-x64, [안전] .vscode : anthropic.claude-code-2.1.312-win32-x64, [안전] ~\.ssh\authorized_keys 파일 없음, [안전] C:\ProgramData\ssh\administrators_authorized_keys 파일 없음, [안전] smt.cmd 없음, smtk 없음, sysmon.cmd 없음, 임시 폴더에 .stk_ 파일 없음, 예약 작업 SysMon 없음, 134.209.82.225 와 연결 없음, 마지막 줄 흔적이 없습니다

10월 30일 이 블로그의 PC에서 실행한 결과입니다. 사용자 폴더 이름은 ~로 줄여 보이게 했습니다.

흔적이 나오면

  • 그 PC를 네트워크에서 떼고, Cursor 공지에 있는 정리 스크립트(remediate-windows.ps1, 관리자 권한으로)를 실행합니다. 맥은 remediate-macos.sh를 사용자 권한으로 실행합니다.
  • 확장만 지워서는 끝나지 않습니다. 예약 작업과 시작 프로그램, SSH 키가 확장 밖에 남습니다. Cursor는 PC를 새로 설치하는 것도 고려하라고 권했습니다.
  • 그 PC에서 쓰던 비밀번호, API 키, 깃허브·배포 토큰, SSH 키를 바꿉니다. 바꾸는 작업은 감염되지 않은 다른 기기에서 합니다.

흔적이 없다면 확장이 2.1.314 이상으로 업데이트됐는지만 확인하면 됩니다. VS Code에서는 확장 화면에서 Claude Code를 눌러 판 번호를 볼 수 있습니다.

이번 일에서 볼 점

변조된 판은 비슷한 이름의 가짜 확장이 아니라 Anthropic 이름 그대로 올라왔습니다. 이름과 인증 표시만 보고 고르는 방법으로는 막을 수 없었습니다. AI 코딩 도구는 내 파일과 터미널을 다루는 권한이 크기 때문에, 이런 도구의 확장 하나가 변조되면 피해도 큽니다.

당장 할 수 있는 일은 세 가지입니다. 회사 PC라면 확장 자동 업데이트를 끄고 정해진 판만 쓰게 하는 방법이 있습니다. AI 에이전트는 중요한 파일이 없는 작업 폴더나 가상 머신에서 돌리는 편이 안전합니다. 그리고 API 키를 PC 환경 변수에 그대로 두기보다 필요한 범위와 기간만 허락한 키를 씁니다. 회사 일에 AI를 쓸 때 지킬 보안은 회사 일에 AI를 써도 될까 글에 정리해 두었습니다.

AI 에이전트에게 내 브라우저와 로그인을 맡길 때 주의할 점은 ego 브라우저 사용기에, 로컬 에이전트를 별도 작업 폴더에서 돌리는 방법은 LFM3-1.7B + Hermes Agent 글에 있습니다.

이 글의 한계

  • 변조된 확장을 직접 받아 돌려 보지는 않았습니다. 코드가 한 일은 Cursor 공지와 Phorion·StepSecurity 분석을 옮긴 것입니다.
  • 점검 스크립트는 실제로 감염된 PC에서 돌려 보지 못했습니다. 대신 임시 폴더에 가짜 흔적(2.1.313 폴더, 공격 서버 주소가 든 파일, 공격자 키 설명, smt.cmd)을 만들고 스크립트가 그 폴더를 보게 바꿔 돌렸고, 네 가지를 모두 "위험"으로 잡는 것을 확인했습니다. 윈도우용만 만들었습니다.
  • 변조된 판이 어떻게 올라갔는지는 아직 모릅니다. 배포 열쇠가 새어 나갔는지, 계정이 털렸는지는 10월 30일 밤까지 공개되지 않았습니다.
  • Anthropic의 공식 발표를 찾지 못했습니다. 발표가 나오면 내용이 달라질 수 있습니다.
  • Cursor 밖의 피해 규모는 모릅니다. Open VSX를 쓰는 다른 편집기(VSCodium 등)에서 몇 명이 받았는지는 발표되지 않았습니다.
  • 이 글은 2026년 10월 30일 22시 31분(한국 시간) 기준입니다.

자주 묻는 질문

Claude Code 터미널 프로그램이나 Claude 데스크톱 앱도 위험한가요?

Cursor 공지와 보안 회사 분석은 편집기용 확장 "Claude Code for VS Code"의 2.1.313판만 다룹니다. 명령줄 프로그램이나 데스크톱 앱이 영향을 받았다는 내용은 없습니다.

VS Code에서 마이크로소프트 마켓으로 받았는데 괜찮나요?

이 블로그가 조회했을 때 VS Code 마켓에는 2.1.313이 없었고, 그곳에 올라왔다는 확인도 없습니다. 그래도 위의 점검 스크립트로 한 번 확인해 보시길 권합니다.

확장을 지우면 되나요?

아닙니다. 공격자 키, 예약 작업, 시작 프로그램이 확장 밖에 남습니다. Cursor 공지의 정리 스크립트를 돌리고, 그 PC에서 쓰던 키와 토큰을 바꿔야 합니다.

이미 2.1.314로 업데이트됐다면요?

2.1.313을 거치지 않았다면 문제가 없습니다. 거쳤는지 모르겠다면 점검 스크립트로 SSH 키와 예약 작업이 남아 있는지 확인하면 됩니다.

출처

관련 게시글

댓글 0개