본문으로 건너뛰기
effidevFlutter · Cloudflare 엣지 · 클라우드 비용 최적화

클로드 코드 확장 백도어, 11시간 퍼진 곳은 커서뿐

effidev

클로드 코드 확장 백도어 11시간, 커서 마켓에서만

클로드 코드(Claude Code) 확장에 백도어가 들어갔다는 소식이 ’Anthropic 해킹’이라는 제목으로 먼저 퍼졌다. 제목보다 먼저 할 일은 하나다. 커서(Cursor)에서 10월 29일 한국 시간 저녁부터 30일 새벽 사이에 이 확장을 설치했거나 자동 업데이트로 받았다면, 내 컴퓨터의 ~/.ssh/authorized_keys 파일에 낯선 열쇠가 들어 있는지부터 열어 본다.

이 글은 세 부류를 위해 쓴다. 그 시간에 커서를 켜 두었던 개발자, 팀의 개발 장비를 책임지는 사람, 그리고 제목만 보고 ‘클로드 코드를 지워야 하나’ 고민한 사람이다. 커서의 보안 공지 원문, 보안 업체 피온(Phorion)과 스텝시큐리티(StepSecurity)의 분석, 보안 매체 BleepingComputer 기사, 앤트로픽 직원이 해커뉴스에 남긴 해명을 서로 대조했다. 클로드 코드 확장 백도어 사건에서 확인된 것, 앤트로픽이 주장한 것, 아직 아무도 답하지 않은 것을 따로 갈랐다.

먼저 낱말을 풀어 둔다.

확장 프로그램은 편집기에 기능을 덧붙이는 부품이다. 마켓플레이스는 그 부품을 내려받는 가게이고, 커서는 자기 가게를 따로 운영한다. 공급망 공격은 만든 사람의 코드가 아니라 부품이 사용자에게 오는 길목에서 내용물을 바꿔치기하는 공격이다.

역방향 SSH 터널은 피해자 컴퓨터가 먼저 공격자 서버에 전화를 걸어 두고, 공격자가 그 통화 선로를 타고 들어오게 하는 방식이다. authorized_keys는 비밀번호 없이 로그인해도 되는 열쇠들의 명단이다. IOC(침해 지표)는 ’이런 흔적이 있으면 당한 것’이라는 증거 목록이다.

18시 27분부터 5시 35분까지: 11시간짜리 시간표

커서 공지는 태평양 시간(PT)으로 적혀 있다. 10월 29일 오전 2시 27분 PT는 한국 시간 같은 날 18시 27분이고, 오후 1시 35분 PT는 30일 05시 35분이다. 사이는 11시간 8분이다.

한국 시간 일어난 일 읽은 곳
10월 29일 18:27 변조된 클로드 코드 확장이 커서 마켓에 올라옴 커서 공지
10월 30일 05:35 커서가 그 버전을 마켓에서 내림. 배포 시간은 약 11시간 커서 공지
10월 30일 16:09 피온의 분석 글이 해커뉴스에 올라옴 해커뉴스
10월 30일 23:08 앤트로픽의 펠릭스 리제베르크(Felix Rieseberg)가 해커뉴스에 해명을 남김 해커뉴스
10월 31일 03:30 커서가 공지를 고침(10월 30일 오전 11시 30분 PT). 침해 지표를 갱신하고 영향 버전을 명확히 함 커서 공지

영향 버전은 출처마다 적은 것이 다르다. 커서 공지의 수정본은 Anthropic.claude-code 2.1.312와 2.1.313(윈도우·맥)이라고 적는다. 피온·BleepingComputer·스텝시큐리티는 2.1.313만 말한다. 이 글은 커서 공지를 따라 두 버전을 모두 확인 대상으로 둔다.

피해 규모로 가장 많이 인용되는 숫자는 ’최대 5,000명’이다. BleepingComputer와 스텝시큐리티는 커서가 그렇게 밝혔다고 전한다. 커서 공지 본문에서는 이 숫자를 찾지 못했다. 그리고 ’최대’는 상한이라서, 실제로 설치하고 실행한 수나 백도어가 끝까지 성공한 수는 공개된 것이 없다.

낯선 열쇠가 있는지 보는 두 줄

악성 코드가 남기는 공통 흔적은 authorized_keys에 들어간 열쇠 하나다. 열쇠의 이름표(주석)가 svc-telemetry다. 커서가 공지에 적은 확인 명령을 그대로 옮긴다.

맥 터미널에서:

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

윈도우 PowerShell에서:

$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }

svc-telemetry key found가 나오면 그 컴퓨터는 영향을 받은 것이다. No key found면 이 흔적은 없다는 뜻이다. 커서 공지의 영향 버전 문장은 윈도우와 맥만 적는다. 그런데 침해 지표 목록에는 리눅스 항목(재부팅 크론, /tmp 임시 파일)도 있고 피온도 리눅스용 크론 항목을 분석했다. 리눅스에서 커서를 쓴다면 위 grep 한 줄로 같이 확인해 두는 편이 안전하다.

설치 여부는 커서 확장 폴더에서도 볼 수 있다. 보통 사용자 폴더의 .cursor/extensions 안에 anthropic.claude-code-<버전>-… 같은 이름으로 들어 있다. 이 폴더 이름 규칙은 이 글을 쓰는 PC에 커서 확장이 없어서 직접 확인하지 못했다.

악성 코드가 한 일 네 가지, 그리고 스스로 막힌 두 곳

피온은 변조된 extension.js 파일 맨 앞에 짧은 자바스크립트 조각이 붙어 있다고 설명한다. 이 파일이 불려 올라오는 순간 코드가 돈다. 클로드 코드를 열어 대화를 시작할 필요도 없고, 설치 스크립트도 필요 없다. 정상 코드는 그대로 두고 앞에 붙였기 때문에 겉으로는 평소처럼 보였을 것이다. 마지막 문장은 이 글의 추정이다.

스텝시큐리티는 악성 파일이 3,692,922바이트로, 직전 정상 버전보다 약 7KB 크다고 적었다. 붙은 조각의 크기가 그 정도라는 뜻이다. 동작은 네 가지로 나뉜다.

동작 어떻게 읽은 곳
정찰 호스트 이름, 사용자 이름, 운영체제, 홈 폴더 경로, 작업 폴더, Git 이메일, 공인 IP, 환경 변수 이름을 모아 공격자 서버로 보낸다 커서 공지, 피온
열쇠 심기 authorized_keys에 svc-telemetry 열쇠를 덧붙인다 피온
터널 열기 공격자 서버 134.209.82[.]225의 22번 포트로 사용자 tunnel로 접속해 역방향 터널을 연다. 1분 안팎마다 다시 시도한다 커서 공지, 피온
눌러앉기 맥은 로그인 항목(LaunchAgent), 윈도우는 예약 작업이나 시작 프로그램 스크립트, 리눅스는 재부팅 크론으로 터널을 되살린다 커서 공지, 피온

환경 변수는 값이 아니라 이름만 갔다. 피온에 따르면 이름에 KEY, TOKEN, SECRET, PASS, AWS, GCP가 들어간 것을 최대 40개까지 모았다. 비밀번호 자체가 나간 것은 아니지만, 공격자는 이 컴퓨터가 어떤 서비스의 열쇠를 쓰는지 알게 된다. 이 해석은 이 글의 판단이다. 커서도 공지에서 환경 변수 수집이 제한적이어도 나중에 백도어로 자격 증명에 접근했을 가능성은 배제할 수 없다고 적었다.

이 코드는 스스로 막힌 곳이 두 군데 있다. 맥에서는 SSH 서비스(원격 로그인)가 꺼져 있는지 systemsetup -getremotelogin으로 물어보는데, 관리자 권한 없이 부르면 상태 대신 오류가 돌아온다. 코드는 출력에 Off가 있을 때만 서비스를 켜려 하므로 켜는 단계를 통째로 건너뛴다. 윈도우에서는 OpenSSH 서버를 설치하려고 윈도우에 없는 유닉스 셸(/bin/sh)을 불러서 실패한다. BleepingComputer가 피온의 분석을 인용해 정리한 내용이다.

그래서 커서는 관리자 권한으로 커서를 띄운 매우 이례적인 경우가 아니면 공격자가 터널로 로그인하지 못했을 것이라고 적었다. 하지만 같은 문단에서 이렇게 덧붙인다. 열쇠를 심고, 눌러앉을 장치를 깔고, 호스트 정보를 보내는 일은 실제로 일어났다. 그러니 No key found가 아닌 한 정리 절차를 건너뛰지 말라는 것이 커서의 권고다.

확장만 지우면 남는 흔적들

커서 공지와 피온이 공통으로 강조하는 점이 있다. 확장을 지워도 악성 코드가 따로 깔아 둔 스크립트는 계속 돈다. 피온이 적은 흔적을 운영체제별로 옮긴다.

운영체제 남는 흔적
공통 ~/.ssh/authorized_keys 안의 svc-telemetry 열쇠(터널용 열쇠는 svc-telemetry-tun)
맥 ~/Library/LaunchAgents/com.apple.sysmond.plist, ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_*
윈도우 예약 작업 SysMon(SYSTEM 권한으로 도는 것을 시도), 예비로 시작 프로그램 폴더의 sysmon.cmd, %USERPROFILE%\.config\smt.cmd, %USERPROFILE%\.config\smtk, %TEMP%\.stk_*
리눅스 ~/.config/.smt, /tmp/.stk_*, 재부팅 때 실행되는 @reboot 크론 항목
네트워크 134.209.82[.]225의 22번·8099번 포트 접속 기록

변조된 extension.js 파일의 SHA-256 값은 피온과 커서 공지가 같은 값 ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15로 적었다. 커서 공지에는 2.1.312와 2.1.313의 맥·윈도우 설치 패키지 해시 네 개도 있다. 보안팀이 설치된 확장 파일을 전수 대조할 때 쓰는 값이다. 공지는 공인 IP를 알아보는 ifconfig.me·api.ipify.org 접속은 정상 서비스라서 그것만으로는 침해 지표가 아니라고 적는다.

공격자 서버는 지금 꺼져 있다. 커서는 서버를 호스팅하던 클라우드 업체와 함께 내렸다고 밝혔다. 그러니 지금 이 컴퓨터가 외부에서 조종당할 위험은 낮아졌다. 그래도 눌러앉기 스크립트는 1분마다 접속을 시도하고 있을 수 있으니 지우는 일은 여전히 해야 한다.

열쇠가 있었다면, 이 순서로

커서의 권고 순서에 이 글의 해설을 붙였다.

  1. 그 컴퓨터를 네트워크에서 분리한다. 이미 눌러앉은 스크립트가 있을 수 있어서다.
  2. authorized_keys에서 낯선 열쇠를 지우고, 위 표의 눌러앉기 장치와 돌고 있는 터널 프로세스를 없앤다. 커서는 맥·윈도우용 정리 스크립트(remediate-macos.sh, remediate-windows.ps1)를 공지에 붙여 두었다. 맥은 관리자가 아닌 평소 사용자로, 윈도우는 관리자 권한으로 실행하라고 안내한다.
  3. 그 컴퓨터를 다시 만들지(재구축) 판단한다. 커서는 확장 삭제만으로는 부족할 수 있다며 재구축 여부를 평가하라고 적었다.
  4. 다른 깨끗한 컴퓨터에서 그 컴퓨터가 접근할 수 있던 자격 증명과 세션을 모두 바꾼다. 클라우드 키, 깃 토큰, AI API 키, 브라우저에 로그인된 세션이 대상이다.

4번의 범위가 막막하면 이 사이트의 앞선 글이 순서를 잡아 준다. 오픈코드 해킹 글은 AI 서비스 키를 어디서부터 바꿔야 하는지, LiteLLM 악성 버전 글은 ’지울 순서’와 키 교체 범위를 다뤘다. 둘 다 이번처럼 개발 도구 쪽에서 들어온 침해다.

’Anthropic 해킹’이라는 제목을 하나씩 대조했다

이번 사건에서는 같은 날 서로 다른 말이 동시에 돌았다. 확인할 수 있었던 범위에서 주장마다 상태를 붙였다.

주장 상태 근거
앤트로픽이 해킹당했다 앤트로픽은 아니라고 함. 독립 검증은 찾지 못함 앤트로픽의 해커뉴스 해명, 커서 공지
공식 확장도 감염됐다 확인되지 않음 커서 공지(‘다른 버전이나 공식 배포에 영향이 있다는 증거 없음’), 앤트로픽 해명
Open VSX·MS 마켓에도 퍼졌다 초기 보도에만 있었고 이후 정정됨 BleepingComputer
최대 5,000명이 받았다 커서가 밝힌 상한으로 전해짐. 공지 본문엔 없음 BleepingComputer, 스텝시큐리티
바이낸스 해킹이 이 확장 때문이다 이 글이 본 자료에는 근거가 없음 BleepingComputer(바이낸스 기사)

앤트로픽 해명의 핵심은 이렇다. 앤트로픽 직원 펠릭스 리제베르크는 해커뉴스 댓글에서 이번 일이 앤트로픽 시스템이나 직원 노트북이 뚫린 것이 아니라고 말했다. 악성 행위자가 커서 마켓플레이스에 접근할 수 있는 권한을 이용해 클로드 코드 확장의 변조본을 올렸고, 앤트로픽은 그 변조본을 만들지도 올리지도 않았다는 것이다. 앤트로픽 공식 채널의 버전은 영향이 없고 커서 사용자만 해당한다고 했다.

이 해명은 한쪽 당사자의 주장이다. 커서 공지의 ’이 악성 버전은 앤트로픽이 개발하지 않았다’는 문장과는 맞아떨어진다. 하지만 마켓 내부 접근 권한이 어떻게 악용됐는지는 어느 쪽도 설명하지 않았다.

’다른 마켓에도 퍼졌다’는 말은 초기에 돌았다. 스텝시큐리티 글은 지금도 Open VSX에 먼저 올라 커서가 미러했다고 적는다. Open VSX는 VSCodium·커서 등이 쓰는 오픈 확장 저장소이고, 마이크로소프트의 비주얼 스튜디오 마켓과는 별개다. BleepingComputer는 npm·Open VSX·MS 마켓까지 영향을 받았다는 초기 보도가 있었지만 이후 커서가 유일한 유포처로 확인됐다고 정리하고, 앤트로픽도 커서 사용자에게만 해당한다고 말한다. 두 곳의 말이 같은 쪽을 가리키므로 이 글은 커서만 영향권으로 본다. 커서가 아닌 VS Code로 클로드 코드 확장을 받았다면 이 사건의 영향권 밖이라는 뜻이다.

바이낸스는 10월 29일 약 63억 달러 규모의 도난을 당했다. BleepingComputer에 따르면 바이낸스는 이를 개발·운영 엔지니어 한 명의 침해된 노트북에서 시작된 일과 연결했고, 한 번의 행동이 아니라 더 복잡한 공격이었다고 설명했다. 해커뉴스 댓글에는 이 사건과 이번 확장을 잇는 추측이 있었다. 이 글이 읽은 어느 자료도 둘을 잇지 않는다. 연결된다고 쓰려면 근거가 필요하고, 아직 없다.

아직 아무도 답하지 않은 세 가지

BleepingComputer는 기사에서 커서와 앤트로픽에 질문을 보냈고 답을 받으면 고치겠다고 적었다. 그 뒤 앤트로픽 직원이 위의 해명을 해커뉴스에 남겼다. 그래도 아래 세 가지는 이 글이 읽은 자료에서 풀리지 않았다.

첫째, 어떻게 앤트로픽 이름으로 올라갔는가. 앤트로픽은 커서 마켓 접근 권한이 악용됐다고 말한다. 커서는 키를 모두 교체하고 마켓을 다시 지었다고 했지만, 공격자가 어떤 경로로 그 권한을 얻었는지는 밝히지 않았다.

둘째, 커서 쪽 시스템이 뚫렸는가. 커서는 다른 확장이 변조되지 않았음을 접근 기록으로 확인했다고 적었다. 하지만 자기 시스템의 침해 여부를 직접 말한 문장은 이 글이 읽은 자료에 없다.

셋째, 실제로 몇 대에서 터널까지 성공했는가. 5,000이라는 숫자는 받은 사람의 상한이다. 정찰 신호를 보낸 컴퓨터는 공격자 서버가 꺼지기 전까지 있었겠지만, 몇 대인지는 공개되지 않았다.

이 세 질문의 답이 나오면 이 글의 ‘확인되지 않음’ 칸이 바뀐다.

자동 업데이트의 2시간 지연은 이번 11시간에 얼마나 막았을까

해커뉴스 댓글에서 한 사용자가 VS Code 1.123(2026년 6월 3일 배포)의 릴리스 노트를 가리켰다. 이 버전부터 VS Code는 확장이 새 버전을 낼 때 자동 업데이트를 2시간 미룬다. 문제가 있거나 침해된 릴리스를 걸러 내는 한 겹의 방어막이라고 노트는 설명한다. 다만 마이크로소프트·깃허브·오픈AI 같은 신뢰 게시자의 확장은 이 지연 없이 즉시 업데이트된다고도 적혀 있다.

이번 악성 버전은 11시간 열려 있었다. 2시간 지연은 그 안에 마켓에서 내려질 때만 작동하는 방어막이라, 11시간짜리 사건에서는 지연이 끝난 뒤 받은 사람을 못 지킨다. 이건 이 글의 계산이다. 그리고 이 지연이 커서에도 같은 모양으로 들어 있는지는 확인하지 못했다.

그래서 이번 일에서 바로 쓸 수 있는 교훈은 둘이다. 하나는 편집기의 확장 자동 업데이트 설정에 지연이 있는지 확인하는 것이다. 다른 하나는 코딩 에이전트처럼 파일과 키에 닿는 확장은 팀에서 버전을 고정하고 한 사람이 먼저 써 본 뒤 올리는 흐름을 만드는 것이다. 둘 다 이 글의 제안이고, 이번 사건 하나로 효과가 증명된 것은 아니다. 에이전트가 받은 폴더를 여는 것만으로 코드가 실행되던 문제는 코딩 에이전트 7종 글에서 따로 다뤘다.

직접 돌려 본 것과 돌리지 못한 것

직접 한 일은 다음과 같다. 커서 보안 공지 원문을 읽고 확인 명령을 그대로 옮겼다. 피온·BleepingComputer·스텝시큐리티 글과 앤트로픽 직원의 해커뉴스 댓글을 읽어 날짜와 숫자를 대조했다. VS Code 1.123 릴리스 노트에서 2시간 지연 문장을 직접 확인했다. 그리고 이 글을 쓰는 윈도우 PC에서 커서의 윈도우 확인 명령을 돌려 No key found; machine not impacted가 나오는 것을 봤다. 이 PC는 커서 확장을 쓰지 않아 당연한 결과이고, 감염이 없다는 증거가 아니라 명령이 문법대로 도는지만 확인한 것이다.

하지 못한 일도 적는다. 악성 파일을 받아 직접 돌려 보지 않았다. 변조된 확장 파일의 해시를 내가 계산해 대조하지 못했다. ’Anthropic hacked…’라는 제목을 단 원문 기사는 접속이 막혀 열지 못했고, 그 기사의 주장은 이 글에서 다루지 않았다. 커서가 제공한 정리 스크립트는 실행해 보지 않았다. 5,000명이라는 숫자의 원 출처는 커서 공지 본문이 아니라 다른 매체의 전언이다.

출처 목록

시간표와 영향 버전은 커서 공지, 동작과 흔적은 피온(일부는 BleepingComputer와 스텝시큐리티), 앤트로픽 입장은 해커뉴스 댓글, 지연 업데이트는 VS Code 릴리스 노트에서 가져왔다. 한국 시간 환산과 ‘11시간 8분’, 2시간 지연에 대한 해석은 이 글에서 계산한 것이다.