10월 29일, Anysphere의 AI 코드 편집기 확장 마켓플레이스에 Anthropic의 AI 코딩 도구 확장으로 위장한 변조본(버전 2.1.312·2.1.313)이 약 11시간 동안 올라와 있었습니다. Microsoft 위협 인텔리전스는 10월 30일 분석에서 이 확장 모듈이 불러와지는 순간 개발자 PC에 공격자 SSH 키를 심고, 밖으로 나가는 역방향 SSH 터널과 재부팅 뒤에도 살아남는 시작 항목을 만들려 했다고 밝혔습니다.
11월 4일에는 보안 기업 Forever Security가 악성 브라우저 확장이 Anthropic 데스크톱 AI 앱의 원격 작업 기능(Dispatch)을 거쳐 사용자 PC에서 코드를 실행할 수 있다는 시험 결과를 공개했습니다.
두 사건은 같은 질문을 던집니다. 개발자 PC에 깔린 확장이 무엇이고, 누가 그것을 허락했는가. 이 글은 두 사례의 경위를 원문 기준으로 정리하고, 우리 회사 개발자 PC가 해당하는지 확인하는 법, 흔적이 나왔을 때의 대응 순서, 확장과 SSH 키를 관리하는 기준까지 다룹니다. AGENTS.md나 MCP 서버처럼 코딩 에이전트 자체의 결함은 AI 코딩 에이전트 보안 글에서 다뤘고, 이 글은 '악성 확장이 개발자 PC로 들어오는 길'에 집중합니다.
한눈에 보기
| 항목 | 내용 |
|---|---|
| 사건 1 | AI 코드 편집기 마켓플레이스에 올라온 변조 확장(Anthropic AI 코딩 도구 확장과 같은 식별자, 게시자 anthropic, 버전 2.1.312·2.1.313) |
| 노출 시간 | 10월 29일 오전 2시 27분부터 오후 1시 35분까지(미국 태평양 시간). 한국 시간 10월 29일 18시 27분부터 30일 05시 35분까지 |
| 영향 범위 | Microsoft 확인 기준 해당 편집기 마켓플레이스에 한정. VS Code 공식 마켓플레이스와 npm 패키지는 영향 없음. Anthropic은 자사 시스템이 침해되지 않았고 이 패키지를 만들지 않았다고 Microsoft에 확인 |
| 한 일 | 호스트 정보 수집, authorized_keys에 공격자 공개키 추가, SSH 서비스 켜기 시도, 역방향 SSH 터널, 운영체제별 지속 실행 항목 생성, 호스트 정보 전송 |
| 실제 접속 | 편집기 업체 공지 기준, 악성 코드 오류와 관리자 권한 요구 때문에 대부분의 macOS·Windows에서는 SSH 접속 단계가 실패. 키와 지속 항목은 남았을 수 있음 |
| 사건 2 | 악성 브라우저 확장이 AI 웹 서비스 페이지에서 Dispatch로 데스크톱 AI 앱에 명령을 보내 코드 실행(연구 시험, 실제 공격 보고 없음) |
| 사건 2 상태 | 연구진에 따르면 Anthropic은 10월 13일 Dispatch 종료를 알렸다. 11월 9일 확인한 도움말에는 '신규 사용자는 쓸 수 없고 기존 사용자는 당분간 계속 사용 가능'으로 적혀 있다 |
| 공통 교훈 | 편집기 확장은 개발자의 운영체제 권한으로, 브라우저 확장은 허락받은 사이트·브라우저 권한으로 동작한다. 사건 2는 브라우저 쪽 권한이 데스크톱 AI 앱을 거쳐 PC 명령 실행으로 이어진 경우다. 허용 목록, 설치 지연, SSH 키 점검, 원격 실행 기능 관리가 필요하다 |
사건 1: 편집기 확장이 SSH 백도어를 심은 과정
AI 코드 편집기 업체는 10월 29일, 자사 확장 마켓플레이스에서 변조된 확장이 배포되고 있었다고 공지했습니다. 업체는 해당 버전을 내리고 마켓플레이스 전체를 잠시 닫았으며, 접근 권한을 감사해 다른 확장은 변조되지 않았다고 확인했습니다. 키를 교체하고 마켓플레이스를 다시 구축한 뒤 재개했고, 호스팅 업체와 함께 공격자 서버를 내렸습니다. 공지와 Microsoft 분석 모두 변조본이 어떻게 마켓플레이스에 올라갔는지, 몇 명이 설치했는지는 밝히지 않았습니다.
Microsoft가 분석한 악성 코드는 확장 모듈이 불러와지는 순간, 정상 기능보다 먼저 실행됐습니다. 확장 자체는 평소처럼 동작해서 사용자가 이상을 느끼기 어렵습니다. 순서는 다음과 같습니다.
- 정보 수집. 호스트 이름, 사용자 이름, 운영체제, 홈·작업 폴더, Git 전역 이메일을 모읍니다. 환경변수 가운데 이름에 KEY, TOKEN, SECRET, PASS, AWS, GCP가 들어간 것을 최대 40개 고릅니다. Microsoft는 전송되는 것이 변수의 이름이지 값은 아니라고 밝혔습니다.
- SSH 키 심기. 사용자 계정의 authorized_keys 파일(여기 등록된 공개키와 짝을 이루는 개인키를 가진 사람은 비밀번호 없이 SSH로 로그인할 수 있다)에
svc-telemetry라는 주석이 붙은 공격자 공개키를 덧붙입니다. - SSH 서비스 켜기. PC의 SSH 서버를 켜려고 시도합니다.
- 역방향 터널. PC가 공격자 서버로 먼저 SSH 연결을 걸고, 그 연결을 거꾸로 타고 PC의 SSH 포트(22번)로 들어올 수 있게 합니다. 방화벽이 안으로 들어오는 연결을 막아도 밖으로 나가는 연결을 이용하므로 우회가 됩니다.
- 지속 실행. 재부팅이나 로그인 때 터널을 다시 여는 항목을 만듭니다. 이름은 시스템 감시 도구처럼 보이게 지었습니다.
- 정보 전송. 시간을 두고 1단계에서 모은 정보를 공격자 서버로 보냅니다.
중요한 점은 확장을 지우거나 업데이트해도 확장 폴더 밖에 쓴 파일은 남는다는 것입니다. 공격자 서버가 내려갔다고 PC에 남은 키와 시작 항목이 사라지지도 않습니다. Microsoft는 SSH 프로세스가 떠 있다는 사실만으로 공격자가 실제로 들어왔다고 볼 수는 없다고도 적었습니다. 그래서 '설치 여부 확인 → 흔적 확인 → 접속 여부 조사'를 나눠서 봐야 합니다.
사건 2: 브라우저 확장이 데스크톱 AI 앱을 움직인 시험
Dispatch는 휴대폰에서 작업을 보내면 PC에 설치된 Anthropic 데스크톱 AI 앱이 받아서 처리하는 기능입니다. 이 앱은 PC에서 명령을 실행하고 파일을 다룰 수 있습니다. Forever Security 연구원 Gal Weizman의 11월 4일 글에 따르면, Dispatch는 화면에 연결 메뉴가 없는 AI 웹 서비스의 일반 로그인 세션도 받아들였습니다.
시험 조건은 두 가지였습니다. AI 웹 서비스 페이지에서 스크립트를 실행할 수 있는 브라우저 확장, 그리고 같은 계정으로 웹과 데스크톱 앱에 로그인하고 Dispatch를 켠 사용자입니다. 확장은 처음부터 악성일 수도, 정상 확장이 악성 업데이트를 받았을 수도, 정상 확장에 결함이 있을 수도 있습니다.
| 단계 | 연구진이 밝힌 내용 |
|---|---|
| 지시 | 확장 스크립트가 사용자인 척 작업 지시를 보냈다. 시험에서는 npm 패키지 설치를 요청 |
| 승인 | AI가 실행 전에 묻는 승인 창이 확장이 조작할 수 있는 웹 페이지 안에 떴고, 스크립트가 허용 버튼을 자동으로 눌러 사람이 지켜볼 필요가 없었다 |
| 실행 | 패키지 설치 스크립트가 계산기를 띄워 코드 실행을 확인. 같은 자리에서 파일 탈취나 백도어 설치도 가능했다고 연구진은 설명 |
| 범위 | 시험은 브라우저와 앱이 같은 PC에 있을 때. 같은 계정으로 묶인 다른 PC에도 닿을 수 있다고 했지만 시연하지는 않았다 |
| 실제 공격 | 보고 없음 |
| 신고 경위 | 5월 14일 신고, 5월 19일 Anthropic이 유효하다고 인정했으나 내부에서 먼저 찾은 문제와 중복으로 처리(연구진 주장) |
연구진은 Anthropic의 AI 코딩 도구에 있는 원격 제어(Remote Control) 기능과 Cowork 세션도 같은 구조라고 주장했습니다. 다만 이 두 기능은 시험하지 않았고 후속 글을 예고한 상태입니다. 이 부분은 연구진의 주장으로만 읽어야 합니다. 연구진이 고객사 업무용 PC에서 개인 계정으로 기기 간 Dispatch를 켠 사례를 봤다고 밝힌 점은 기업이 주목할 대목입니다. 집 PC의 브라우저 확장이 회사 노트북의 AI 앱까지 닿는 길이 생기기 때문입니다.
왜 개발자 PC가 표적인가
두 사건 모두 서버가 아니라 개발자 PC에서 시작합니다. 개발자 PC에는 소스 코드, 클라우드 접속 키, 사내 저장소 토큰, 운영 서버 SSH 키가 한곳에 모여 있습니다. 편집기 확장은 편집기 안에서 그 사용자의 운영체제 권한으로 실행되고, 브라우저 확장은 허락받은 사이트와 브라우저 기능 범위 안에서 동작합니다. Dispatch 연구가 보여 준 것은 이 브라우저 쪽 권한이 데스크톱 AI 앱을 거쳐 PC의 명령 실행으로 넘어갈 수 있다는 점입니다. 서버에는 변경 승인 절차가 있어도, 확장 설치는 개인이 클릭 한 번으로 끝내는 회사가 많습니다.
| 경로 | 무엇을 쥐나 | 흔한 빈틈 |
|---|---|---|
| 코드 편집기 확장 | 파일 읽기·쓰기, 명령 실행, 네트워크 | 자동 업데이트로 새 버전이 바로 설치 |
| 브라우저 확장 | 로그인된 웹 서비스 화면 조작 | 사이트 전체 읽기·변경 권한을 쉽게 허락 |
| AI 앱 원격 작업 | PC에서 명령 실행 | 개인 계정을 업무 PC에 연결 |
| SSH | 비밀번호 없는 원격 로그인 | authorized_keys를 아무도 점검하지 않음 |
패키지 저장소를 통한 공급망 공격은 npm 미니 샤이 훌루드 글과 LiteLLM 공급망 공격 글에서 다뤘습니다. 이번에는 패키지가 아니라 편집기 확장이 같은 역할을 했습니다.
우리 회사에 해당하는지 확인하는 법
사건 1은 아래 순서로 확인합니다. 흔적이 나오면 지우기 전에 먼저 보존합니다(다음 절 참고).
| 확인 대상 | 어디를 보나 | 해석 |
|---|---|---|
| 편집기 종류 | Anysphere의 AI 코드 편집기를 쓰는 개발자 목록 | VS Code 공식 마켓플레이스·npm으로 받은 경우는 Microsoft 확인 기준 영향 없음 |
| 확장 버전 | 편집기 확장 화면에서 게시자 anthropic인 AI 코딩 도구 확장의 버전과 설치·업데이트 날짜 | 2.1.312 또는 2.1.313을 한국 시간 10월 29일 저녁부터 30일 새벽 사이에 받았으면 조사 대상 |
| SSH 키(macOS·Linux) | ~/.ssh/authorized_keys에서 svc-telemetry 주석 |
있으면 지문을 아래 지표와 대조 |
| SSH 키(Windows) | %USERPROFILE%\.ssh\authorized_keys, C:\ProgramData\ssh\administrators_authorized_keys |
같은 기준 |
| 시작 항목(macOS) | ~/Library/LaunchAgents/com.apple.sysmond.plist, ~/.config/.smt, ~/.config/.smtk |
Apple 시스템 서비스처럼 보이는 이름이지만 확인 대상 |
| 시작 항목(Linux) | crontab -l의 @reboot 줄 중 ~/.config/.smt를 부르는 줄 |
다른 정상 cron 줄은 건드리지 않음 |
| 시작 항목(Windows) | 작업 스케줄러의 SysMon 작업, 시작프로그램 폴더의 sysmon.cmd, %USERPROFILE%\.config\smt.cmd·smtk |
정상 감시 도구와 이름이 겹칠 수 있으니 실행 내용을 열어 본다 |
| 임시 파일 | 이름이 .stk_ 뒤에 16진수 10자리인 숨김 파일 |
터널용 개인키 |
| 네트워크 | 134.209.82[.]225 로의 연결, 8099 포트 /beacon 요청 |
방화벽·프록시·EDR 기록에서 검색 |
| 프로세스 | 외부로 나가는 ssh·autossh 프로세스, Windows의 숨김 PowerShell 반복 실행 | 60초 간격 재시도가 특징 |
Microsoft가 공개한 침해 지표 중 확인에 쓸 만한 것은 다음과 같습니다.
- 심어진 공개키 지문:
SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk - 악성 JavaScript 진입 파일 SHA256:
ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15 - Microsoft Defender 탐지명: Trojan:MacOS/SmtShellMal.A, Trojan:JS/CredTheft.MS!MTB, Trojan:MacOS/MalPlistSysmond.A, HackTool:MacOS/RevAnthShell.A
사건 2는 다음 세 가지를 봅니다.
- 업무 PC에 Anthropic 데스크톱 AI 앱이 깔려 있고, 그 계정에서 Dispatch나 기기 간 연결을 켰는지.
- 그 계정이 회사 계정인지 개인 계정인지. 개인 계정이면 집 PC와 회사 PC가 묶여 있을 수 있습니다.
- 같은 브라우저에 AI 웹 서비스 페이지를 읽고 바꿀 수 있는 확장이 있는지. 사이트 전체 접근 권한을 가진 확장도 포함합니다.
대응 순서
오늘
- 조사 대상 PC를 정합니다. 해당 편집기 사용자 중 10월 29~30일에 문제 버전을 설치하거나 자동 업데이트로 받은 사람입니다.
- 흔적이 있는 PC는 네트워크에서 떼어 놓습니다. 전원을 끄기보다 연결을 끊는 편이 증거가 덜 사라집니다.
- 지우기 전에 보존합니다. 확장 패키지, 바뀐 authorized_keys, 생성된 키·스크립트, 시작 항목 설정 파일을 복사해 둡니다. 초기 대응 시간표는 침해사고 1시간 골든타임 액션북을 참고하십시오.
- 공개키 지문을 대조한 뒤
svc-telemetry키 한 줄만 지웁니다. 원격 개발용 정상 키는 남깁니다. - 변조 확장을 지우고, 시작 항목·스크립트·
.stk_파일과 외부로 나가는 SSH 프로세스를 정리합니다. 편집기 업체가 운영체제별 확인·정리 스크립트를 공지에 올렸으니 내용을 읽어 본 뒤 씁니다. - Dispatch를 쓰고 있다면 필요 없는 PC는 끄고, 업무 PC에서 개인 계정 연결을 끊습니다.
이번 주
- 확장이 실행된 뒤의 기록을 조사합니다. SSH 키 인증 성공, 터널 프로세스, 로컬 SSH 세션, 명령 실행, 파일 접근 순서로 봅니다.
- 침입 흔적이 있거나 PC를 믿을 수 없으면 깨끗한 다른 PC에서 비밀번호를 바꾸고 세션을 끊습니다. 대상은 그 PC에서 쓰던 클라우드 키, Git 토큰, 운영 서버 SSH 키, 사내 계정입니다. 환경변수 '이름'이 넘어갔다면 그 이름의 키부터 바꿉니다.
- 정리 뒤에도 재부팅·로그인 후 터널과 시작 항목이 다시 생기지 않는지 확인합니다. 다시 생기면 PC를 새로 설치합니다.
- 확장 허용 목록을 정합니다. 승인한 게시자와 확장만 설치되게 합니다(아래 표).
이번 달
- 새 버전 설치 지연을 겁니다. 이번 변조본은 약 11시간 만에 내려갔습니다. 새 버전을 하루 늦게 받는 것만으로도 이런 짧은 공격은 상당 부분 피할 수 있습니다.
- 개발자 PC의 SSH 서버는 필요한 PC에서만 켭니다. 불필요한 SSH 서비스를 꺼 두면 이런 접속 경로를 줄일 수 있습니다. 다만 이번 악성 코드는 SSH 서비스를 켜려고 시도했으므로, 꺼 둔 PC도 서비스 상태가 바뀌지 않았는지와 키·시작 항목 흔적을 따로 확인합니다.
- 개발자 PC에서 외부로 나가는 SSH 연결을 허용된 목적지(사내 저장소, 운영 서버 점프 호스트 등)로 좁힙니다.
- 브라우저 확장 정책을 정합니다. 설치 허용 목록, 그리고 사내 중요 웹 서비스와 AI 서비스 도메인에서는 확장이 동작하지 못하게 막는 설정을 검토합니다.
- AI 앱의 원격 실행 기능은 회사 계정에서만, 승인된 PC에서만 쓰게 하고, AI가 실행한 패키지 설치·설정 변경·외부 연결을 기록합니다.
확장 관리 설정 한 장
| 도구 | 설정 | 하는 일 |
|---|---|---|
| VS Code | extensions.allowed 설정, 장치 관리 정책 AllowedExtensions |
게시자·확장 ID·버전 단위로 설치 허용. 사용자 설정이 아니라 정책으로 배포해야 우회가 어렵다 |
| VS Code | 사설 마켓플레이스 | 사내에서 검토한 확장만 배포 |
| Anysphere AI 코드 편집기(엔터프라이즈) | 허용 확장(Allowed Extensions) | 신뢰하는 게시자만 허용 |
| 같은 편집기(엔터프라이즈) | 확장 설치 대기(Extension install cooldown) | 새로 올라온 버전의 설치·업데이트를 정한 시간만큼 늦춤 |
| 같은 편집기(엔터프라이즈) | 확장 서명 검증, 워크스페이스 신뢰(MDM 강제) | 서명 확인, 믿지 않는 폴더는 제한 모드로 열기 |
| Chrome | ExtensionSettings 정책의 installation_mode, runtime_blocked_hosts |
확장 설치 허용·차단, 지정한 사이트에서 확장 동작 차단 |
엔터프라이즈 요금제가 아니라서 정책을 못 거는 팀도 있습니다. 그렇다면 최소한 승인 확장 목록 문서, 자동 업데이트 끄기, 분기마다 개발자 PC 확장 목록 수집부터 시작합니다. 외주 개발사 PC도 같은 기준을 계약에 넣습니다. 외주 경로 점검은 공급망 보안 체크리스트에 정리해 두었습니다.
자가점검
1. 개발자들이 쓰는 코드 편집기와 확장 목록을 회사가 알고 있는가
이름과 버전까지 있어야 이번 같은 공지가 나왔을 때 30분 안에 조사 대상을 고를 수 있습니다.
2. 확장 설치를 허용 목록으로 제한했는가
개인 판단으로 아무 확장이나 깔 수 있다면 이번 사건 같은 변조본이 그대로 들어옵니다.
3. 새 버전이 나오자마자 자동으로 깔리지 않게 했는가
설치 지연 하루가 짧게 올라왔다 내려가는 악성 버전을 거르는 가장 값싼 방법입니다.
4. 개발자 PC의 authorized_keys를 누가 언제 점검하는가
모르는 키 한 줄이 백도어입니다. 정기 점검 항목에 넣고, 주석이 없는 키도 출처를 확인합니다.
5. 개발자 PC에서 SSH 서버가 꼭 필요한 곳에서만 켜져 있는가
켜진 이유를 설명하지 못하는 PC는 끕니다.
6. 밖으로 나가는 SSH 연결을 막거나 기록하고 있는가
역방향 터널은 나가는 연결을 이용합니다. 들어오는 연결만 막으면 보이지 않습니다.
7. 업무 PC의 AI 앱이 개인 계정이나 기기 간 원격 작업에 연결돼 있지 않은가
연결돼 있다면 집 PC의 브라우저 확장이 회사 PC의 명령 실행까지 닿을 수 있습니다.
8. 흔적이 나왔을 때 키를 바꿀 '깨끗한 PC'와 순서가 정해져 있는가
감염된 PC에서 비밀번호를 바꾸면 새 비밀번호도 넘어갈 수 있습니다.
개발자 PC 흔적 확인과 AI 도구 보안 점검
위 확인표에서 svc-telemetry 키나 시작 항목이 하나라도 나왔다면, 지우기 전에 증거를 보존하고 조사 범위를 정하는 것이 먼저입니다. 레드팀을 운영하는 보안 전문 기업 SENTRIX는 보안 실무 10년 경험으로 침해사고 대응 문의를 받으면 증거 보존 순서와 조사할 PC·계정 범위부터 함께 정합니다. 사내에서 AI 에이전트나 LLM 기반 서비스를 직접 운영한다면, AI 심화 취약점 진단으로 웹·API의 권한과 연쇄 공격 경로, AI 서비스 자체의 보안을 전문가가 검증합니다. 흔적 확인이 급하다면 진단 문의하기로 지금 상황을 남겨 주십시오. AI 도구로 생긴 다른 취약점 유형은 AI 코딩 도구 취약점 30여 건(IDEsaster) 글에서 이어서 볼 수 있습니다.
참고 자료
- Microsoft 보안 블로그: AI 코딩 도구 브랜드를 단 악성 확장과 지속형 SSH 백도어 분석(2026-10-30)
- AI 코드 편집기 업체 보안 공지(2026-10-29 사건)
- AI 코드 편집기 엔터프라이즈 보안 강화 문서
- Forever Security: ThisBash, 브라우저 확장과 Dispatch를 이용한 코드 실행 연구(2026-11-04)
- Anthropic 도움말: Dispatch(작업 원격 지시) 안내
- VS Code: 엔터프라이즈 확장 관리
- Google Chrome Enterprise: 정책으로 확장 관리하기
- MITRE ATT&CK T1098.004 SSH Authorized Keys
- MITRE ATT&CK T1572 Protocol Tunneling
- The Hacker News: 악성 브라우저 확장이 Dispatch로 사용자 PC에서 코드를 실행할 수 있다는 연구 보도(2026-11-06)