악성 VS Code 확장 프로그램으로 GitHub 저장소 3,800개 탈취

손상된 개발자 도구로 인해 최근 기억에 남을 만한 저장소 침해 사고가 발생했습니다. GitHub은 현재 악성 Visual Studio Code 확장 프로그램이 직원 기기를 감염시켜 약 3,800개의 내부 저장소가 유출된 보안 사고를 조사 중입니다. 탈취된 코드는 이후 TeamPCP라고 자칭하는 위협 행위자 그룹에 의해 사이버범죄 포럼에서 판매 목록에 올라왔습니다. 내부 저장소에 의존하는 보안팀과 개발자들에게 이번 사건은 개발자 기기 보안과 코드 저장소 침해 위험이 분리될 수 없는 문제임을 날카롭게 상기시켜 줍니다.

악성 VS Code 확장 프로그램이 GitHub 직원을 어떻게 침해했는가

Visual Studio Code는 전문 소프트웨어 개발 분야에서 지배적인 에디터가 되었으며, 그 확장 프로그램 마켓플레이스는 방대합니다. 대부분의 개발자는 확장 프로그램을 모바일 앱과 동일하게 취급합니다. 설치하고, 신뢰하고, 넘어가는 것이죠. 공격자들이 악용하는 것이 바로 이러한 가정입니다.

이번 사고에서 GitHub 직원은 트로이목마화된 것으로 보이는 VS Code 확장 프로그램을 설치했습니다. 설치되자마자 악성 확장 프로그램은 개발자와 동일한 환경에 접근할 수 있었습니다. 파일 시스템, IDE에 캐시된 자격 증명, 활성 인증 토큰, 그리고 기기가 유지하는 모든 네트워크 연결이 포함됩니다. 그 단 하나의 진입점에서 공격자는 GitHub 내부 저장소에 접근하여 상당한 양의 독점 코드를 추출할 수 있었습니다.

이는 이론적인 공격 경로가 아닙니다. 악성 패키지와 확장 프로그램은 npm과 PyPI부터 브라우저 확장 스토어에 이르기까지 개발자 생태계 전반에서 점점 더 큰 문제가 되어 왔습니다. VS Code의 확장 프로그램 마켓플레이스는 크고 널리 사용되지만, 역사적으로 자동화된 스캐닝에 의존해 왔으며 정교한 위협 행위자들은 지연된 페이로드 전달이나 난독화를 통해 이를 우회할 수 있습니다.

무엇이 탈취되었고 TeamPCP의 판매 목록은 무엇을 드러내는가

현재까지 확인된 정보에 따르면, 사고 중에 약 3,800개의 GitHub 내부 저장소가 유출되었습니다. 책임을 주장하는 TeamPCP는 이후 이 자료를 사이버범죄 포럼에 판매 목록으로 올렸으며, 이는 동기가 첩보 활동보다 금전적임을 시사합니다.

목록의 규모는 주목할 만합니다. GitHub 같은 회사의 내부 저장소에는 독점 도구, 내부 인프라 코드, 보안 로직, 그리고 다른 Microsoft 서비스와의 통합이 포함될 수 있습니다. 고객 데이터가 직접 포함되지 않더라도, 내부 코드는 정교한 공격자들이 후속 침입을 계획하는 데 활용할 수 있는 아키텍처 가정, 인증 흐름, 시스템 경계를 노출할 수 있습니다.

판매 목록 자체도 중요한 사실을 시사합니다. 공격자가 탈취된 자료를 유출하고, 정리하고, 판매할 시간을 갖기 전에 침해가 즉각적으로 차단되지 않았다는 것입니다. 이 일련의 과정은 초기 침해가 상당한 체류 시간을 가졌거나, 최소한 유출이 탐지 및 차단 이전에 완료될 만큼 빠르게 이루어졌음을 시사합니다.

개발자 엔드포인트가 저장소 보안의 가장 취약한 고리인 이유

기업 조직은 일반적으로 프로덕션 시스템 주변의 경계 보안, 네트워크 모니터링, 접근 제어에 많은 투자를 합니다. 반면 종종 덜 주목받는 것은 개발자 엔드포인트 자체, 즉 소프트웨어 엔지니어가 매일 코드를 작성하고 테스트하고 푸시하는 데 사용하는 노트북이나 워크스테이션입니다.

개발자 기기는 바로 그 접근 권한 때문에 고가치 표적입니다. 단 하나의 인증된 개발자 세션이 내부 저장소, CI/CD 파이프라인, 시크릿 관리 시스템, 클라우드 인프라 콘솔에 접근할 수 있습니다. 그 기기 하나를 침해하면 공격자에게 기업 보안의 여러 레이어를 통과하는 사전 인증된 통행증을 사실상 건네주는 셈입니다.

확장 프로그램 및 패키지 기반 공급망 공격은 이 맥락에서 특히 위험합니다. 일반적인 개발자 행동과 구별이 어렵기 때문입니다. 새로운 도구를 설치하는 것은 일상적인 일입니다. 개발자들은 보안팀이 알 수 없는 실행 파일을 다루듯 모든 IDE 확장 프로그램을 잠재적인 위협 벡터로 취급하도록 훈련받지 않습니다. 이러한 자세의 격차가 바로 TeamPCP 같은 위협 그룹이 적극적으로 악용하는 부분입니다.

이번 사건은 더 광범위한 패턴을 반영합니다. 공격자들은 더 이상 방화벽을 직접 뚫으려 하지 않습니다. 그들은 이미 합법적인 접근 권한을 가진 신뢰받는 인간 엔드포인트를 침해하고 있습니다.

레이어드 방어: 내부 코드 접근 보호를 위한 VPN, 제로 트러스트, MFA

단일 제어로는 이 범주의 공격을 방지할 수 없지만, 레이어드 방어는 기기가 침해되었을 때 피해 범위를 크게 줄일 수 있습니다.

제로 트러스트 네트워크 접근은 이 부분에서 가장 관련성 높은 아키텍처 변화입니다. 제로 트러스트 모델에서는 기기 신뢰가 가정되지 않고 지속적으로 평가됩니다. 공격자가 유효한 세션 토큰을 보유하더라도, 비정상적인 행동(예: 비정상적인 시간대에 저장소를 대량으로 복제하는 것)은 재인증이나 자동화된 세션 종료를 유발할 수 있습니다. 제로 트러스트와 강력한 엔드포인트 탐지를 결합하면 보안팀이 악성 확장 프로그램을 포함하여 어떤 프로세스가 네트워크 호출을 하는지 파악할 수 있습니다.

하드웨어 바인딩 키를 사용한 다중 인증은 또 다른 장벽을 추가합니다. 피싱 저항성 MFA(FIDO2/패스키)는 기기가 완전히 침해되더라도 사용자의 물리적 상호작용 없이 새 세션에 자동으로 인증할 수 없도록 보장합니다.

VPN은 이 스택에서 특정하고 종종 저평가되는 역할을 합니다. 개발자가 원격으로 내부 시스템에 접근할 때, 엄격한 무로그 정책을 갖춘 프라이버시 감사를 받은 VPN을 통해 트래픽을 라우팅하면 세션 가로채기 위험을 줄이고 기기나 네트워크 경로를 부분적으로 침해한 공격자가 활용할 수 있는 네트워크 수준의 가시성을 제한합니다. 옵션을 평가하는 엔지니어링팀에게 Mullvad는 검토할 가치가 있습니다. 가입 시 이메일 주소가 필요 없고, 익명 계정 번호를 사용하며, 스웨덴 경찰이 압수수색을 집행했지만 압수할 것을 아무것도 발견하지 못했을 때 실제 상황에서 무로그 주장이 검증되었습니다. 앱은 완전한 오픈소스로, 자신들이 실행하는 것을 감사하고자 하는 개발자 중심 팀에게 의미 있는 특성입니다.

독립적으로 감사된 인프라를 우선시하는 팀의 경우, Private Internet Access는 연방 법원 소송에서 무로그 주장이 입증되었으며 서드파티 감사를 받은 완전한 오픈소스 앱을 유지합니다.

VPN 외에도 조직은 개발자 도구에 대한 확장 프로그램 허용 목록을 적용하고, 기업 기기에 IDE 확장 프로그램을 설치하기 전에 코드 서명이나 조직 승인을 요구하며, 대량 유출을 조기에 탐지하기 위해 저장소 접근 패턴의 상세한 감사 로그를 유지해야 합니다.

이것이 여러분에게 의미하는 바

내부 저장소에 원격으로 접근하는 개발자이거나 엔지니어링팀의 일원이라면, 이번 사건은 엔드포인트 보안 상태를 검토하라는 직접적인 신호입니다.

실행 가능한 조치:

  • 현재 업무용 기기에 설치된 모든 VS Code 확장 프로그램을 감사하세요. 의도적으로 설치하지 않았거나 더 이상 적극적으로 사용하지 않는 것은 모두 제거하세요.
  • IDE 확장 프로그램을 설치할 때 알 수 없는 실행 파일을 설치할 때와 동일한 수준의 의심을 적용하세요. 설치 전 게시자 인증과 리뷰 수를 확인하세요.
  • 조직이 관리되는 개발자 기기에 확장 프로그램 허용 목록을 구현하도록 권장하세요.
  • 내부 저장소 접근이 비밀번호+SMS가 아닌 피싱 저항성 MFA로 보호되는지 확인하세요.
  • 팀이 공용 또는 통제되지 않은 네트워크에서 내부 시스템에 접근한다면, 제로 트러스트 원격 접근 스택의 한 레이어로 프라이버시 감사를 받은 VPN을 추가하세요.
  • 보안팀과 협력하여 대량 저장소 접근이나 비정상적인 복제 행동에 대한 기준 알림을 설정하세요.

GitHub 사건은 아직 조사 중이며, 접근된 내용의 전체 범위는 한동안 공개되지 않을 수 있습니다. 이미 명확한 것은 개발자 엔드포인트가 대부분의 조직에서 고가치이면서도 충분히 보호받지 못하는 공격 표면을 나타낸다는 것입니다. 이 격차를 해소하는 데 완전한 인프라 개편이 필요하지 않습니다. 개발자 워크스테이션을 그 자체로 하나의 보안 경계로 취급하는 것에서 시작합니다.