spoonai
TOPGitHubSupply Chain AttackTeamPCP

깃허브 내부 저장소 3,800개가 18분 만에 털렸어 — 악성 'Nx Console' 확장이 입구였던 거야

사이버범죄 그룹 TeamPCP(UNC6780)가 깃허브 직원이 설치한 변조된 VS Code 확장 'Nx Console'(v18.95.0)을 통해 내부 저장소 약 3,800개를 탈취했어. 악성 버전은 마켓플레이스에 단 18분간 올라왔지만 그걸로 충분했어. 1Password 볼트, 앤트로픽 Claude Code 설정(~/.claude/settings.json), npm·깃허브·AWS 토큰을 노렸고, 오픈AI·미스트랄·EU 집행위까지 번진 'Mini Shai-Hulud' 웜 캠페인의 일부야.

·7분 소요·Help Net SecurityHelp Net Security
공유
깃허브 내부 저장소, 악성 Nx Console VS Code 확장 통한 공급망 공격으로 유출
출처: GitHub

개발자가 매일 신뢰하는 확장 하나가, 깃허브 내부를 통째로 연 거야

5월 18일, 사이버범죄 그룹 **TeamPCP(별칭 UNC6780)**가 깃허브의 내부 저장소 약 3,800개를 탈취했어. 입구는 어이없을 만큼 평범했어. 깃허브 직원 한 명이 설치한 변조된 VS Code 확장 'Nx Console'(nrwl.angular-console, v18.95.0). 개발자라면 누구나 한 번쯤 깔아 봤을 그 확장이 무기가 된 거야.

가장 소름 끼치는 디테일은 시간이야. 악성 버전은 비주얼스튜디오 마켓플레이스에 5월 18일 UTC 12:30~12:48, 단 18분간 올라와 있었어. 그런데 그 18분이면 충분했어. 확장은 워크스페이스를 여는 순간 조용히 셸 명령을 실행해서, 498KB짜리 난독화 페이로드를 nrwl/nx 공식 저장소의 'dangling orphan commit'(매달린 고아 커밋)에서 끌어왔어. 공식 저장소 안에 숨겨 둔 거라 더 교묘했지.

이 페이로드는 자격증명 탈취 도구였어. 노린 건 (1) 1Password 볼트, (2) 앤트로픽 Claude Code 설정 파일(~/.claude/settings.json), (3) npm·깃허브·AWS 토큰. AI 코딩 도구 설정 파일까지 표적이 됐다는 점이 이번 사건의 시대적 특징이야. 개발자 머신에 깔린 AI 에이전트의 자격증명이, 이제 공격자의 1순위 전리품이 된 거지.

그리고 이건 단발 사건이 아니야. **'Mini Shai-Hulud'**라 불리는 웜 캠페인의 일부였어. 5월 11일 TanStack의 npm 생태계(170여 패키지, CVE-2026-45321, CVSS 9.6)를 시작으로 번졌고, 피해는 깃허브에서 끝나지 않았어. 오픈AI(직원 기기 2대 감염, 6월 12일 macOS 앱 서명 인증서 전면 폐기 예정), 미스트랄AI(2.5만 달러 모네로 협박), 유럽연합 집행위, 그라파나 랩스까지 줄줄이 엮였어. 깃허브는 "공격자가 주장하는 약 3,800개 저장소 규모는 우리 조사 방향과 대체로 일치한다"고 확인했어.

등장 인물 — TeamPCP, 깃허브, Nx, 그리고 휘말린 AI 랩들

TeamPCP(UNC6780). 최근 몇 달 새 대규모 소프트웨어 공급망 공격으로 악명을 쌓은 그룹이야. 특징은 표적 선정이 영리하다는 거 — 개발자들이 광범위하게 의존하는 오픈소스 프로젝트와 보안 인접 도구를 노려. 한 번 뚫으면 수천 개 다운스트림으로 번지는 '레버리지'가 큰 지점만 골라 치는 거지. 탈취한 데이터를 판매하려 시도 중인 것으로 알려졌어.

깃허브(GitHub). 아이러니의 정점이야. 전 세계 개발자가 코드를 맡기는 플랫폼이, 자사 직원의 변조된 확장을 통해 내부가 털렸으니까. 깃허브 CISO 알렉시스 웨일스(Alexis Wales)가 대응을 이끌고 있어. 깃허브는 "고객 데이터가 내부 저장소 밖에서 영향받은 증거는 없다"고 선을 그었지만, 신뢰 타격은 불가피해.

Nx / nrwl. Nx Console은 Nx 모노레포 도구의 인기 VS Code 확장이야. Nx CEO 제프 크로스(Jeff Cross)는 마이크로소프트·깃허브와 함께 영향 범위를 조사 중이라고 밝혔고, 실제 설치 수가 마이크로소프트의 초기 집계(28건)를 훨씬 넘어 6,000건 이상일 수 있다고 경고했어. Nx 개발자 시스템이 TanStack 공급망 공격의 여파로 먼저 뚫린 게 시작이었어.

휘말린 AI 랩들. 오픈AI는 직원 기기 2대가 감염돼 macOS 앱 코드서명 인증서를 6월 12일 전면 폐기하기로 했어. 미스트랄은 2.5만 달러 모네로 협박을 받았고, EU 집행위와 그라파나 랩스도 같은 뿌리(TanStack→Nx)에 엮였어. AI 코딩 도구 설정 파일이 표적이 된 이번 캠페인은, AI 개발 도구 시대의 공급망 보안에 대한 경종이야.

핵심 내용 — 공격 체인이 어떻게 작동했나

1단계: TanStack npm 침해(5월 11일). 시작은 인기 npm 생태계 TanStack의 170여 패키지 침해였어. CVE-2026-45321(CVSS 9.6)로 추적되는 이 공격으로, TanStack에 의존하던 개발자·조직의 시스템이 1차 감염됐어. Nx 개발자 시스템도 이 여파로 뚫렸지.

2단계: Nx Console 확장 변조(5월 18일). 뚫린 Nx 개발자 자격증명을 통해 공격자는 악성 버전 v18.95.0을 마켓플레이스에 게시했어. 단 18분. 하지만 자동 업데이트가 켜진 개발자 머신들이 그 사이 받았어. 확장은 시작 시 셸 명령으로 페이로드를 내려받아 실행했어.

3단계: 자격증명 탈취. 페이로드는 1Password 볼트, ~/.claude/settings.json(Claude Code 토큰), npm·깃허브·AWS 토큰을 수집했어. AI 코딩 에이전트가 가진 광범위한 권한(레포 접근, 배포 권한 등)이 그대로 공격자 손에 넘어갈 위험이 컸지.

4단계: 깃허브 내부 침투. 감염된 깃허브 직원의 자격증명으로 공격자는 내부 저장소 약 3,800개에 접근·탈취했어. 깃허브는 고객 데이터(외부 저장소)는 영향 없다고 했지만, 내부 코드·설정의 유출은 향후 추가 공격의 청사진이 될 수 있어.

단계 시점 무슨 일 핵심 위험
TanStack 침해 5/11 npm 170+ 패키지 변조 (CVE-2026-45321) 다운스트림 광범위 감염
Nx Console 변조 5/18 12:30 UTC 악성 v18.95.0 게시(18분) 자동 업데이트로 확산
자격증명 탈취 5/18 1Password·Claude 설정·토큰 수집 AI 에이전트 권한 탈취
깃허브 침투 5/18~20 내부 저장소 ~3,800개 유출 내부 코드·설정 노출

각자의 이득과 손해

공격자(TeamPCP)의 이득. 막대한 레버리지를 얻었어. 단 18분의 노출로 깃허브 내부 3,800개 저장소 + 다수 AI 랩의 자격증명을 손에 넣었으니까. 탈취 데이터 판매·협박(미스트랄 사례)으로 직접 수익화도 시도 중이야. '개발자 신뢰 인프라'를 치면 비용 대비 효과가 극대화된다는 걸 다시 입증했어.

깃허브·마이크로소프트의 손해. 신뢰 타격이 가장 커. 마켓플레이스의 확장 검수 체계(18분이라도 악성 게시를 허용)와 직원 단말 보안이 동시에 도마에 올랐어. 다만 빠른 탐지·공개·인증서 폐기 대응은 '투명성' 측면에서 일부 평가받아.

AI 코딩 도구 생태계의 경각심. 앤트로픽 Claude Code, 오픈AI 등 AI 에이전트 도구는 '~/.claude/settings.json 같은 설정 파일이 1순위 표적'이라는 교훈을 얻었어. 광범위한 권한을 가진 에이전트일수록 자격증명 보호·최소권한·토큰 회전이 필수라는 거지. 이건 손해라기보단 '강제된 보안 성숙'이야.

보안 업계의 이득. StepSecurity, Socket, Sophos, ox.security 같은 공급망 보안 업체엔 수요가 폭증하는 사건이야. '확장·패키지도 신뢰하면 안 된다'는 제로트러스트 공급망 보안의 필요성이 실증됐거든.

과거 유사 사례 — 성공과 실패

Shai-Hulud 웜(2025). 이번 'Mini Shai-Hulud'의 원조 격이야. npm 생태계를 통해 자기복제하며 자격증명을 훔치고 다시 패키지를 감염시키는 웜이었어. 자기증식형 공급망 웜의 위험을 처음 대중에 각인시킨 사건이지. 이번엔 그 축소·변종판이 VS Code 확장 경로로 들어온 거야.

SolarWinds(2020). 공급망 공격의 교과서. 빌드 시스템에 백도어를 심어 1.8만 고객에 배포했어. '신뢰된 업데이트 채널'이 무기가 된다는 걸 보여준 사건. 이번 Nx 사례도 '신뢰된 마켓플레이스 업데이트'가 같은 역할을 했다는 점에서 본질이 닮았어.

xz utils 백도어(2024). 오픈소스 핵심 라이브러리에 장기 침투해 백도어를 심으려던 정교한 시도였어. 다행히 발각됐지만, '오픈소스 의존성 사슬'의 취약성을 드러냈지. TanStack→Nx→깃허브로 이어진 이번 연쇄는, xz가 경고한 그 사슬형 위험이 현실화된 셈이야.

Codecov(2021). CI 도구 Codecov의 Bash 업로더가 변조돼 고객 환경변수(토큰)가 유출된 사건. '개발 도구 = 자격증명의 보고'라는 공식을 보여줬어. 이번에도 표적은 정확히 자격증명이었고, AI 에이전트 토큰이 추가됐다는 점만 진화했어.

경쟁자 카운터 플레이 — 방어 진영의 대응

마이크로소프트(VS Code 마켓플레이스). 확장 게시 검수 강화가 불가피해. 게시 전 서명 검증, 이상 행위 탐지, 게시 후 빠른 회수 체계를 손봐야 해. '18분'이 가능했다는 건 자동 검수의 공백을 드러낸 거니까.

공급망 보안 업체(Socket·StepSecurity·ox.security). 'IDE 확장·CI 플러그인까지 감시 범위 확대'를 세일즈 포인트로 밀 거야. 패키지 설치 시점의 행위 분석, 토큰 유출 탐지, dangling commit 스캔 같은 기능 수요가 커져.

AI 코딩 도구 제공사(앤트로픽·오픈AI·커서 등). 설정 파일 암호화, 토큰 단기 만료·자동 회전, 최소권한 기본값, 의심스러운 셸 실행 차단 같은 방어를 기본 탑재하는 방향으로 갈 거야. '에이전트가 강력할수록 탈취 시 피해도 크다'는 역설을 제품 설계로 풀어야 해.

기업 보안팀. 개발자 단말의 EDR, 확장 화이트리스트, 자동 업데이트 정책 재검토가 필요해. '개발자는 편의를 위해 무엇이든 깐다'는 현실을 전제로, IDE·CI 레이어까지 제로트러스트를 확장하는 게 카운터야.

그래서 뭐가 달라지는데 — 페르소나별

개발자. 가장 직접적인 교훈이야. VS Code 확장·npm 패키지의 자동 업데이트를 무조건 신뢰하지 마. (1) 확장 자동 업데이트 재검토, (2) ~/.claude/settings.json 등 AI 도구 설정·토큰 점검 및 회전, (3) 1Password 등 비밀번호 매니저 마스터 보안 강화. v18.95.0을 받았다면 즉시 자격증명을 전면 교체해야 해.

AI 에이전트 사용자. Claude Code·Codex 같은 도구를 쓴다면, 그 토큰이 어떤 권한을 갖는지부터 파악해. 레포 쓰기·배포 권한을 가진 토큰이 유출되면 피해가 커. 최소권한 토큰, 단기 만료, 의심 활동 알림을 켜 둬.

보안·플랫폼 팀. IDE 확장과 CI 플러그인을 '소프트웨어 자재명세서(SBOM)' 범위에 포함시켜. 마켓플레이스 신뢰만으로는 부족하다는 게 입증됐어. 확장 화이트리스트, 행위 기반 탐지, 자격증명 회전 자동화가 우선순위야.

경영진·CISO. 이번 사건은 'AI 시대 공급망 공격이 자격증명 + AI 에이전트 권한을 동시에 노린다'는 신호야. 보안 예산을 엔드포인트뿐 아니라 개발자 도구체인 레이어로 확장할 근거가 됐어. '우리도 깃허브처럼 직원 단말 하나로 뚫릴 수 있다'를 전제로 설계해.

규제·정책. 공교롭게도 트럼프가 AI 보안 행정명령을 엎은 바로 그 주에 터진 사건이야. 'AI 보안 위협은 현실'이라는 반증 사례로 정책 논쟁에 인용될 가능성이 커. SBOM 의무화, 확장 마켓플레이스 책임 강화 같은 논의가 탄력받을 수 있어.

참고 자료

관련 기사

무료 뉴스레터

AI 트렌드를 앞서가세요

매일 아침, 엄선된 AI 뉴스를 받아보세요. 스팸 없음. 언제든 구독 취소.

매일 30개+ 소스 분석 · 한국어/영어 이중 언어광고 없음 · 1-클릭 해지