[Hacker News 요약] Claude Code VS Code 확장 프로그램에 SSH 백도어 발견
3
설명
보안 연구 기업 Phorion은 VS Code용 Claude Code 확장 프로그램의 Cursor Marketplace 버전에서 심각한 보안 취약점을 발견했습니다. 이 취약점은 macOS, Linux, Windows 시스템에 지속적인 SSH 백도어를 설치할 수 있는 것으로 확인되었습니다.
해당 확장 프로그램의 버전 2.1.313에 영향을 미치며, Cursor는 즉시 해당 릴리스를 마켓플레이스에서 제거했습니다.
이 백도어는 공격자가 원격으로 시스템에 접근할 수 있도록 설계되었으며, 특히 macOS에서는 SSH 원격 로그인 설정 과정에서 발견된 버그로 인해 의도치 않은 방식으로 작동할 수 있습니다.
### 배경 설명
소프트웨어 개발 환경에서 IDE 확장 프로그램은 생산성 향상에 필수적인 도구로 자리 잡았습니다. Visual Studio Code(VS Code)와 같은 인기 있는 IDE는 방대한 확장 프로그램 생태계를 통해 사용자 정의 및 기능 확장을 지원합니다. Cursor Marketplace는 Cursor IDE를 위한 확장 프로그램을 제공하는 플랫폼으로, 개발자들이 코드 작성 및 협업을 더욱 효율적으로 할 수 있도록 돕습니다. 그러나 이러한 확장 프로그램은 IDE와 사용자 권한으로 실행되기 때문에, 악성 코드가 포함된 경우 시스템에 대한 광범위한 접근 권한을 얻을 수 있습니다. 이번에 발견된 Claude Code 확장 프로그램의 백도어는 이러한 공급망 공격의 위험성을 다시 한번 보여주는 사례입니다. 공격자는 합법적인 확장 프로그램으로 위장하여 사용자 시스템에 침투하고, SSH 백도어를 설치하여 장기적인 원격 접근을 시도합니다. 이는 개발자의 소스 코드, 민감한 정보, 그리고 개발 환경 전체를 위협할 수 있는 심각한 보안 사고입니다. Phorion은 2026년 10월 30일에 이 보안 권고를 발표하며, 즉각적인 환경 검토와 사고 대응을 촉구했습니다.
### 백도어의 작동 방식 및 감염 경로
공격받은 `extension.js` 파일은 즉시 실행되는 함수 표현식(IIFE)이 삽입된 형태로 시작됩니다. 이 삽입된 코드는 Node.js의 표준 모듈(`child_process`, `fs`, `os`, `path`, `http`, `crypto`)을 사용하여 확장 프로그램의 일반적인 활성화 콜백이 실행되기 전에 즉시 실행됩니다. 사용자가 확장 프로그램과 상호작용하지 않아도 페이로드가 실행될 수 있습니다. 첫 번째 단계는 `~/.ssh` 디렉터리가 존재하도록 하고, 공격자가 제어하는 Ed25519 공개 키를 `~/.ssh/authorized_keys` 파일에 추가하는 것입니다. 이 키는 `svc-telemetry`라는 주석을 사용합니다. 이후 스크립트는 로컬 SSH 데몬을 활성화하고 리스닝하도록 시도합니다. Linux에서는 `systemctl` 또는 `service`를, macOS에서는 `systemsetup -setremotelogin on`을, Windows에서는 PowerShell을 사용하여 OpenSSH Server를 설치 및 시작하려고 합니다. 이러한 단계는 권한 상승 익스플로잇을 포함하지 않지만, 비대화형 `sudo -n`은 암호 없는 sudo가 캐시되거나 구성되지 않은 경우 실패할 수 있습니다. macOS의 경우, `systemsetup -getremotelogin` 명령을 루트 권한 없이 실행할 때 발생하는 버그로 인해 SSH 원격 로그인 활성화 시도가 건너뛰어질 수 있습니다. 이 버그는 SSH가 이미 활성화되어 있지 않은 경우, 아웃바운드 터널은 연결될 수 있지만 로컬호스트:22 포트로 전달되는 트래픽은 차단될 수 있습니다. 두 번째 단계는 `134.209.82[.]225` 서버로 아웃바운드 SSH 연결을 설정하는 것입니다. 이를 위해 공격자가 제어하는 별도의 임베디드 개인 키(`svc-telemetry-tun`)를 디코딩하여 사용합니다. 이 터널은 원격 포트 포워딩(`-R *:0:localhost:22`)을 사용하여 공격자의 SSH 서버에서 동적으로 할당된 포트로 들어오는 트래픽을 피해자의 로컬호스트:22로 전달합니다. 이 연결은 `autossh`가 설치되어 있으면 사용하고, 그렇지 않으면 표준 `ssh`를 사용하며, 분리된 재시도 루프 내에서 실행되어 IDE가 닫혀도 터널이 유지됩니다.
### 지속성 확보 및 호스트 정보 수집
재부팅 후에도 백도어를 유지하기 위해, 스크립트는 플랫폼별 지속성 메커니즘을 설정합니다. Linux와 macOS에서는 `~/.config/.smt`라는 쉘 스크립트를 생성하고, 이 스크립트는 터널 개인 키를 재생성하고 SSH 연결을 루프하며, 사용자 크론탭에 `@reboot` 항목을 추가합니다. macOS에서는 `~/Library/LaunchAgents/com.apple.sysmond.plist`라는 사용자 LaunchAgent를 생성하여 `~/.config/.smt`를 실행하도록 설정합니다. Windows에서는 `~/.config/smt.cmd` 배치 스크립트를 생성하고, 시작 프로그램 폴더에 `sysmon.cmd`를 배치하거나 시스템 시작 시 `SysMon`이라는 이름의 예약된 작업을 생성하려고 시도합니다. 마지막으로, 스크립트는 기본적인 호스트 정보를 수집하여 공격자의 서버로 전송하는 '비콘'을 보냅니다. 수집되는 정보에는 호스트 이름, 사용자 이름, OS 플랫폼, 아키텍처, 홈 디렉터리, 현재 작업 디렉터리, 전역 Git 이메일, 공개 IP 주소 및 각 설정 단계의 상태 플래그가 포함됩니다. 또한, `/KEY|TOKEN|SECRET|PASS|AWS|GCP/i` 패턴에 일치하는 최대 40개의 환경 변수 이름(값 제외)을 수집합니다. 이 정보는 공격자에게 머신에 어떤 클라우드 자격 증명이나 API 토큰이 있는지 파악하여 우선순위를 정할 수 있도록 합니다. 공개 IP 주소는 `ifconfig[.]me` 또는 `api[.]ipify[.]org`를 쿼리하여 얻습니다. 이 정보는 `134.209.82[.]225:8099` 및 `127.0.0.1:8099`로 평문 HTTP POST 요청을 통해 `/beacon` 엔드포인트로 전송됩니다. 이 비콘은 초기 설정 실행 후 약 1.5초 후에 한 번 실행되며, SSH 터널이 실제 접근을 처리하는 동안 호스트가 준비되었음을 공격자에게 알리는 역할을 합니다.
### 탐지 기회 및 대응 방안
이 공격을 탐지하기 위한 여러 신호가 있습니다. macOS의 경우, Endpoint Security Framework(ESF) 텔레메트리를 통해 `~/.ssh/authorized_keys` 파일에 대한 IDE 확장 프로그램 프로세스의 직접적인 쓰기 시도를 탐지할 수 있습니다. 또한, 비-Apple 프로세스가 `com.apple.*` 레이블을 가진 plist 파일을 생성하거나, 숨겨진 디렉터리에서 쉘 스크립트를 실행하는 LaunchAgent를 탐지하는 것이 중요합니다. SSH 터널링 및 후속 접근과 관련해서는, 원격 포트 포워딩(`-R *:0:localhost:22`)으로 실행되는 `ssh` 또는 `autossh` 프로세스, `/tmp/.stk_*` 또는 `~/.config/.smtk`에서 가져온 ID 파일, 그리고 `134.209.82[.]225`로의 아웃바운드 SSH 연결 및 `134.209.82[.]225:8099`로의 HTTP POST 요청을 모니터링해야 합니다. 만약 영향을 받은 머신을 식별했다면, 확장 프로그램을 제거하는 것만으로는 백도어가 완전히 제거되지 않습니다. 따라서 다음과 같은 대응 조치가 필요합니다. 첫째, 활성 터널 프로세스를 종료하고 `134.209.82[.]225`로 연결되는 `ssh` 또는 `autossh` 프로세스를 중지해야 합니다. 둘째, 플랫폼별 지속성 메커니즘(macOS의 LaunchAgent, Linux의 crontab, Windows의 예약된 작업 및 시작 프로그램 스크립트)을 제거해야 합니다. 셋째, `~/.ssh/authorized_keys`에서 악성 공개 키를 제거하고, 임시 디렉터리의 개인 키 파일을 삭제해야 합니다. 마지막으로, SSH가 활성화되었거나 인바운드 로그인이 있었다면, 해당 사용자 계정에 접근 가능했던 모든 자격 증명이나 토큰(특히 환경 변수 필터에 일치하는 것들)을 로테이션해야 합니다. Phorion은 이러한 공급망 위협을 탐지하고 차단하기 위해 파일 접근 텔레메트리와 비-Apple 프로세스의 LaunchAgent 생성 탐지 규칙을 제공합니다.
### 가치와 인사이트
이번 Claude Code VS Code 확장 프로그램의 백도어 사건은 개발 도구의 공급망 보안이 얼마나 중요한지를 명확히 보여줍니다. 개발자는 자신이 사용하는 확장 프로그램의 출처와 신뢰성을 신중하게 검토해야 하며, 특히 Cursor Marketplace와 같은 플랫폼에서 제공되는 도구에 대한 보안 감사가 필수적입니다. 또한, 이번 사건에서 발견된 macOS의 SSH 원격 로그인 설정 버그는 소프트웨어 개발 과정에서 발생하는 사소한 실수도 심각한 보안 취약점으로 이어질 수 있음을 시사합니다. 개발자들은 코드 검토 및 테스트 과정에서 이러한 잠재적 문제를 식별하고 수정하는 데 더 많은 노력을 기울여야 합니다. 보안 연구 기관인 Phorion이 제공하는 탐지 및 대응 방안은 유사한 공격에 대한 방어 전략 수립에 중요한 참고 자료가 될 것입니다. 특히, 파일 접근 텔레메트리, LaunchAgent 생성 모니터링, 그리고 SSH 연결 패턴 분석은 이러한 유형의 위협을 조기에 탐지하는 데 효과적입니다. 궁극적으로, 개발자 커뮤니티 전체가 보안 인식 제고와 안전한 개발 관행 채택에 힘써야 할 필요성을 강조합니다.
### 기술·메타
- VS Code Extension
- Cursor Marketplace
- SSH Backdoor
- macOS, Linux, Windows
- Ed25519 Keys
- LaunchAgent (macOS)
- Cron jobs (Linux)
- Scheduled Tasks (Windows)
- Phorion (Security Research Firm)
- YYYY-MM-DD: 2026-10-30 (Security Advisory Date)
### 향후 전망
이번 사건 이후, IDE 확장 프로그램 스토어 및 마켓플레이스들은 보안 검증 절차를 더욱 강화할 것으로 예상됩니다. Cursor Marketplace는 물론, VS Code Marketplace와 같은 다른 플랫폼에서도 악성 코드 탐지 및 차단 기술을 고도화할 가능성이 높습니다. 또한, 개발자들은 자체적으로 사용하는 확장 프로그램의 보안 취약점을 지속적으로 모니터링하고, Phorion과 같은 보안 연구 기관의 발표를 주시하며 신속하게 대응하는 것이 중요해질 것입니다. Claude Code와 같은 AI 기반 코딩 도구의 발전과 함께, 이러한 도구의 보안 취약점을 악용하려는 시도도 증가할 수 있습니다. 따라서 향후에는 AI 기반 개발 도구의 보안 감사 및 취약점 분석에 대한 연구가 더욱 활발해질 것으로 전망됩니다. 개발자 커뮤니티는 이러한 위협에 대한 정보를 공유하고, 안전한 확장 프로그램 사용 문화를 조성하는 데 더욱 적극적으로 참여해야 할 것입니다. Phorion과 같은 보안 기업들은 지속적으로 새로운 위협을 탐지하고 대응 솔루션을 개발하며, 개발자들의 보안 역량 강화를 지원하는 역할을 할 것입니다.
📝 원문 및 참고
- Source: Hacker News
- 토론(HN): [news.ycombinator.com](https://news.ycombinator.com/item?id=50300683)
- 원문: [링크 열기](https://phorion.io/blog/offical-claude-code-vsx-compromise/)
---
출처: Hacker News · [원문 링크](https://phorion.io/blog/offical-claude-code-vsx-compromise/)
이 글에 대한 한 줄 의견
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 로그인하면 바로 의견을 남길 수 있습니다.