가짜 클로드 코드 확장이 커서에서 11시간 퍼졌다…최대 5,000명 SSH 백도어 노출

Google 검색에서
선호 출처로 추가

선호 출처로 추가하면 Google 주요 뉴스에 위키트리 기사가 더 자주 표시됩니다.

커서 마켓의 변조 클로드 코드 확장 2.1.313, 최대 5,000명에 SSH 백도어 설치
삭제해도 키·지속성 장치 남아 SSH 키 점검과 자격 증명 교체 필요

잠금 표시 노트북과 케이블로 연결된 자물쇠, 기술 서적 더미 — AI로 생성한 자료 이미지
잠금 표시 노트북과 케이블로 연결된 자물쇠, 기술 서적 더미 — AI로 생성한 자료 이미지

앤트로픽(Anthropic)의 공식 클로드 코드 VS 코드 확장으로 위장한 변조 버전이 AI 코딩 도구 커서(Cursor)의 확장 마켓플레이스에서 유통됐다. 이 버전은 감염된 PC에 지속형 SSH 백도어(원격 접속용 비밀 통로)를 심었다. 커서는 10월 29일(현지시각, 이하 날짜 모두 현지시각) 태평양시 기준 오전 2시 27분쯤부터 오후 1시 35분쯤까지 이 버전을 설치한 사용자가 최대 5,000명이라고 밝혔다. 커서는 해당 버전이 앤트로픽이 만든 것이 아니라고 선을 그었다.

11시간 동안 열려 있던 가짜 ‘2.1.313’

문제의 패키지는 스스로를 anthropic.claude-code 버전 2.1.313이라고 소개했다. The Hacker News에 따르면 오픈소스멀웨어(OpenSourceMalware) 공동 창업자 젠 길(Jenn Gile)은 메인 자바스크립트 번들에 정상 확장 코드보다 앞서 66줄짜리 악성 로더(loader, 다른 코드를 불러와 실행하는 프로그램)가 끼워져 있었다고 설명했다. 보안업체 스텝시큐리티(StepSecurity)는 악성 파일이 직전 정상 버전보다 약 7KB 크고 크기는 3,692,922바이트라고 밝혔다.

피해 시간대는 스텝시큐리티의 타임라인으로 가늠할 수 있다. 정상 버전인 2.1.312는 10월 27일 협정세계시(UTC) 20시 26분에 오픈 VSX에 올라왔다. 변조본은 10월 29일 UTC 9시 27분쯤 노출됐고 20시 35분에 커서가 이를 내리면서 마켓플레이스 전체를 오프라인으로 돌렸다. 정상 버전 2.1.314는 10월 30일 UTC 1시 7분에 올라왔다.

커서는 이후 마켓플레이스를 닫고 키를 교체한 뒤 다시 구축해 복구했다. 레스카나에 따르면 커서는 접근 기록을 감사한 결과 변조된 다른 확장은 없었고 다른 버전이나 공식 배포본이 영향을 받았다는 증거도 없다고 밝혔다. 공격자 서버는 호스팅 업체와 협력해 오프라인으로 전환됐다. 앤트로픽은 오픈 VSX와 마이크로소프트 VS 코드 마켓플레이스에 2.1.314를 게시했다.

책상 앞에서 노트북 화면의 코드를 확인하며 입력하는 모습 — AI 자료 이미지
책상 앞에서 노트북 화면의 코드를 확인하며 입력하는 모습 — AI 자료 이미지

어디서 뚫렸나…분석마다 엇갈린 유입 경로

침투 경로는 아직 설명되지 않았다. The Hacker News는 초기 기사에서 오픈 VSX 확장이 침해됐다고 썼다가 이후 커서 마켓플레이스 침해로 정정했다. 커서도 자사 마켓플레이스를 통해 접근된 변조 확장이라고 밝혔다. 레스카나는 오픈소스멀웨어가 처음에 오픈 VSX발이라고 보고했다가 커서의 연락을 받고 글을 고쳤다고 전했다. 같은 보고서는 오픈 VSX에 2.1.313 기록이 없고 npm에도 해당 버전이 없다고 적었다.

반면 스텝시큐리티는 2.1.313이 10월 29일 오픈 VSX에 게시됐고 이를 미러링하는 커서 마켓플레이스로 퍼졌다고 분석했다. 이 업체는 오픈 VSX의 앤트로픽 네임스페이스(게시자 이름 공간)가 앤트로픽 직원 소유라고 적었다. 다만 게시자 자격 증명 탈취 같은 경로로 들어갔는지는 공개적으로 확인되지 않았다고 했다. 오픈 VSX는 커서 외에 VSCodium, 윈드서프, 깃포드도 쓰는 레지스트리라고 한다.

앤트로픽의 공식 입장도 확인되지 않는다. 레스카나는 앤트로픽 뉴스 페이지, 상태 페이지, 클로드 코드 깃허브 보안 공지에서 관련 성명을 찾지 못했다고 밝혔다. 클로드 코드 변경 기록도 2.1.312에서 2.1.314로 이어지고 2.1.313 항목은 없다고 한다. 공격 주체 역시 알려지지 않았다.

키 심고 터널 열고 정보 보냈다

The Hacker News 보도에 따르면 확장은 VS 코드 시작 후 웹뷰가 열릴 때 작동하도록 설계됐다. 이어 사용자의 ~/.ssh/authorized_keys 파일에 공격자 통제 키를 추가한다. 키 이름은 무해해 보이도록 svc-telemetry로 붙었다. 스텝시큐리티는 샌드박스 분석에서 확장 모듈을 로드하는 것만으로 페이로드(공격 코드)가 실행됐고 클로드와의 대화는 필요 없었다고 밝혔다.

이후 윈도우·리눅스·맥OS에서 SSH로 접근할 수 있게 만들고 134.209.82[.]225로 리버스 터널(피해 PC가 먼저 바깥으로 연결을 여는 우회 접속로)을 만든다. 지속성 장치로는 예약 작업과 크론탭, 런치에이전트가 설치된다. 스텝시큐리티가 공개한 흔적에는 윈도우 작업 ‘SysMon’과 맥OS의 com.apple.sysmond.plist 파일이 포함돼 있다. 호스트 정찰 정보는 같은 서버의 8099번 포트로 암호화되지 않은 HTTP 요청에 실려 전송됐다.

수집 항목은 공용 IP 주소, 호스트 이름과 로컬 사용자 이름, 운영체제와 CPU 아키텍처, 홈 디렉터리와 현재 작업 디렉터리, 전역 깃 이메일이다. 여기에 KEY·TOKEN·SECRET·PASS·AWS·GCP가 들어간 환경 변수 이름이 최대 40개까지 포함됐다. 보안 연구자 폴 매카티는 초기 신호에 환경 변수 값은 담기지 않았다고 말했다. 그러면서도 이름만으로 어떤 클라우드와 CI 시스템, 자격 증명 유형이 설정돼 있는지 드러날 수 있다고 지적했다.

피해 정도와 점검 요령

위험의 크기는 환경에 따라 다르다. 커서는 자체 분석에서 로컬 SSH 서비스를 켜려면 관리자 권한이 필요한데 확장은 대부분의 맥OS와 윈도우 환경에서 이 권한이 없다고 밝혔다. 이런 PC에서는 단계가 실패해 공격자가 터널로 로그인할 수 없었을 것이라는 설명이다. 레스카나에 따르면 포리온은 맥OS 확인 과정의 오류로 일반 사용자 계정에서 이 단계가 실패하는 것으로 보인다고 별도로 보고했다.

그러나 안심하기는 이르다. 커서는 SSH 단계가 실패해도 공격자 키 추가와 지속성 설치, 호스트 정보 전송은 이뤄진다고 밝혔고 어떤 경우든 조치 절차를 따르라고 권고했다. 추가 페이로드는 관찰되지 않았지만 리버스 터널은 운영자가 명령을 내리거나 파일을 옮길 수 있는 통로가 된다. 길은 “자동 업데이트로 설정해 둔 사용자라면 악성코드를 받았을 수 있다”고 말했다. 레스카나는 공급망 침해로서 심각도를 ‘높음’으로 평가했고 CVE나 CVSS 점수는 부여되지 않았다.

해당 시간대에 설치했다면 호스트를 격리하고 승인되지 않은 SSH 키와 지속성 장치를 지운 뒤 자격 증명과 세션을 교체해야 한다. 스텝시큐리티는 확장 삭제만으로는 부족하다고 못박았다. 로더가 확장과 별개로 남는 지속성 장치를 깔기 때문이다. 확장 폴더에서 134.209.82[.]225나 svc-telemetry 문자열을 검색하는 방법도 제시됐다. 커서는 영향받은 사용자에게 직접 연락하겠다고 밝혔다.

사건은 개발 도구 공급망을 노린 최근 공격의 연장선에 있다. The Hacker News는 사건 공개 약 일주일 전 오브이에이치클라우드 공식 CLI의 배포 바이너리 5개 버전이 비밀 탈취 악성코드로 바뀌었다고 전했다. 정상 기여자의 깃허브 계정이 3월에 탈취된 글래스웜 작전의 일부였다. 앞서 AI 코딩 도구 내장 브라우저의 보안 결함이 보고된 데 이어 개발 환경 전반의 공격 표면이 다시 확인됐다.