VSCode SSH 원격 편집의 충격적 실체
원제: VSCode's SSH Agent Is Bananas (2025)
왜 중요한가
LLM 에이전트 개발이 확산되면서 VSCode 원격 편집의 보안 공격 표면이 크게 주목받기 시작했다.
Fly.io의 보안 연구자 Thomas Ptacek이 2025년 2월 7일 VSCode의 SSH 원격 편집 기능을 분석한 결과, 단순한 원격 접속이 아닌 Node.js 바이너리를 포함한 전용 에이전트를 원격 서버에 설치하고, WebSocket으로 파일시스템 접근·셸 실행·자기 영속화까지 수행한다는 사실을 공개했다.
Fly.io가 VSCode의 SSH 원격 편집 기능을 자사 Fly Machine과 통합하는 과정에서 해당 기능의 내부 동작을 분석했다. 결과는 예상 밖이었다.
Emacs의 원격 편집 도구 'Tramp'는 SSH 세션 위에서 Bourne shell 명령만으로 작동한다. 반면 VSCode는 전혀 다른 방식을 택했다. 접속 시 Bash 스니펫 스테이저가 실행되고, 이 스테이저가 Node.js 바이너리를 포함한 전용 에이전트를 원격 서버에 다운로드·설치한다. 에이전트는 포트 포워딩된 SSH 위에서 실행되며, 로컬 VSCode 프론트엔드와 WebSocket 연결을 맺는다.
이 WebSocket 기반 프로토콜이 할 수 있는 일의 범위가 문제다. 파일시스템 탐색, 임의 파일 편집, 독립적인 셸 PTY 프로세스 실행, 그리고 프로세스 자기 영속화까지 가능하다. Ptacek은 보안 업계에서 이런 동작 방식을 가진 도구에 붙이는 이름이 따로 있다고 언급하며, 직접 표현은 피했지만 "murid(쥐목)적 특성"이라고 완곡하게 표현했다.
그는 개발 서버에서 VSCode 원격 편집을 허용하는 것도 불안하지만, 운영 서버 인시던트 대응 중에 이 기능이 사용된다면 "경악스러울 것"이라고 밝혔다.
이번 분석은 LLM 에이전트 기반 개발 환경과 Fly Machine 통합을 검토하는 과정에서 나온 부산물이다. LLM 코드 생성 → 에이전트 실행 → 오류 피드백 → 재생성의 폐쇄 루프 구조를 로컬 환경이 아닌 격리된 Linux 인스턴스에서 돌리는 방안을 모색하던 중이었다.