
VS Code 확장 프로그램으로 해킹당한 GitHub(2026년 5월): 모든 개발자가 오늘 밤 실행해야 하는 60분 긴급 대응 매뉴얼
2026년 5월 20일, GitHub는 직원의 워크스테이션에 설치된 악성 VS Code 확장 프로그램을 통해 내부 소스 코드 저장소 약 3,800개가 유출되었음을 확인했습니다. 지난 14일 동안 VS Code 내에서 GitHub PAT(개인 액세스 토큰)나 npm 토큰을 사용했다면,接下来的 60분이 중요합니다. 이것이 바로 대응 매뉴얼입니다. 실제로 무슨 일이 있었는지, 내가 영향을 받았는지, 그리고 무엇을 가장 먼저 교체해야 하는지 설명합니다.
핵심 요약
- 사건 개요: GitHub.com 프로덕션 환경이 침해된 것이 아닙니다. 직원의 VS Code에 독성이 주입된 확장 프로그램(높은 확률로 Nx Console v18.95.0)이 설치되어 PAT를 유출하고 내부 저장소 약 3,800개를 덤프했습니다.
- 고객 데이터: 영향 없음. 침해된 데이터는 GitHub의 내부 소스 코드이며, 고객 코드나 계정은 포함되지 않았습니다.
- 위험 대상: 대략 UTC 기준 5월 18일 12:36부터 12:47까지(11분간) VS Code 확장 프로그램을 설치한 모든 개발자, 또는 VS Code 내부에서 장기 유효 GitHub PAT를 사용하는 사용자.
- 지금 해야 할 일: 먼저 GitHub PAT를 교체하고, 다음으로 npm 토큰, 그다음으로 AWS/클라우드 키를 교체하세요. 자세한 내용은 아래 '개발자가 반드시 수행해야 할 사항' 섹션을 참조하십시오.
TL;DR: 다음 1시간 내에 해야 할 6가지 작업
github hacked vscode extension(GitHub 해킹 VS Code 확장) 사태로 인한 피해 범위를 가장 빠르게 차단하는 방법은 독성 확장 프로그램이 접근할 수 있는 자격 증명을 교체하고, 노트북에 설치된 내용을 감사하며, GitHub 조직 로그에서 UTC 기준 5월 18~20일 구간을 확인하는 것입니다. 영향력 순서대로 정리한 6가지 조치입니다.
- 지난 30일 동안 VS Code에서 생성되거나 사용된 모든 GitHub 개인 액세스 토큰(PAT)을 폐기하세요.
npm token revoke를 통해 npm 토큰을 교체하고, 2FA 및 신뢰할 수 있는 게시(trusted publishing)로 다시 발급받으세요.- GHSA-c9j4-9m59-847w의 IoC(침해 지표)(파일 경로, 프로세스; 명령어는 아래 참조)에 대해 노트북을 스캔하세요.
code --list-extensions --show-versions를 감사하고 정당화할 수 없는 확장 프로그램은 모두 제거하세요.devcontainer.json에서 확장 프로그램 버전을 **고정(pin)**하고 조직 수준의 허용 목록(allow-list)을 적용하세요.- UTC 기준 5월 18~20일 사이에 익숙하지 않은 저장소 푸시가 있는지 GitHub 조직 감사 로그를 확인하세요.
시간이 부족해 두 가지만 할 수 있다면 #1과 #3을 수행하세요. 나머지는 1시간 뒤에 해도 됩니다.
GitHub가 실제로 해킹당했는가? 헤드라인의 오해를 풀자
아니요, 2026년 5월 20일 GitHub.com의 프로덕션 인프라가 침해되지는 않았습니다. 한 GitHub 직원의 워크스테이션이 직원이 악성 VS Code 확장 프로그램(높은 확률로 Nx Console v18.95.0)을 설치한 후 침해되었습니다. 공격자 집단 TeamPCP(UNC6780으로 추적됨)는 GitHub의 내부 소스 코드 저장소 약 3,800개를 유출했습니다. 고객 코드, 고객 계정 및 GitHub의 프로덕션 서비스는 영향을 받지 않았습니다.
무슨 일이 일어났고 일어나지 않았는지 더 명확하게 정리해 보겠습니다.
| 발생한 일 | 발생하지 않은 일 |
|---|---|
| 직원의 노트북이 독성이 주입된 VS Code 확장 프로그램을 통해 침해됨 | GitHub.com 프로덕션 환경 침해 |
| 내부 소스 코드 저장소 약 3,800개 유출 | 고객 저장소 또는 계정 접촉 |
| 해당 엔드포인트의 GitHub 직원 자격 증명 탈취 | GitHub 시스템에서 고객 PAT, npm 토큰 또는 OAuth 권한 탈취 |
| TeamPCP가 몸값 요구(Tom's Hardware 보도) | GitHub가 몸값 지급(지급 증거 없음) |
왜 이러한 구분이 중요할까요? 교훈이 "github hacked(GitHub 해킹)"이 아니기 때문입니다. 교훈은 이제 개발자 엔드포인트가 모든 엔지니어링 조직의 취약점이라는 점입니다. 팀이 소유한 모든 시크릿(GitHub PAT, npm 토큰, AWS 키, Vault 세션, AI 제공자 키)은 EDR(엔드포인트 탐지 및 대응) 커버리지가 거의 없는 노트북에 존재합니다. IDE에서 실행되는 단일 독성 확장 프로그램은 이 모든 것을 상속받습니다.
Bleeping Computer에 인용된 GitHub 대변인은 직원 엔드포인트 침해 프레임과 "고객 데이터 없음" 입장을 확인했습니다. Help Net Security는 TeamPCP의 소 attribution을 추가했습니다. 확장 프로그램의 기술적 증거 확보 과정은 advisories GHSA-c9j4-9m59-847w에 있습니다.
GitHub.com이 침해된 것이 아닙니다. GitHub 직원이 침해된 것입니다. 나머지 내용을 읽으면서 이 프레임을 기억하세요.
실제发生了什么: 2026년 5월 침해 사건의 타임라인
github breach 2026(GitHub 침해 2026) 사건은 약 48시간에 걸쳐 네 단계로 전개되었습니다. 5월 18일 독성 확장 프로그램이 게시되었고, 11분 후 제거되었으며, 다음 날 GitHub가 감지했고, 5월 20일 공개되었습니다. 출처와 함께 간략한 타임라인을 정리합니다.
| 시간 (UTC) | 사건 | 출처 |
|---|---|---|
| 5월 18일, 12:36 | Nx Console v18.95.0이 OpenVSX / Visual Studio Marketplace에 게시됨(높은 확률) | StepSecurity / GHSA-c9j4-9m59-847w |
| 5월 18일, 12:47 | 악성 버전 제거, 11분의 창(window) | StepSecurity |
| 5월 19일 | GitHub가 직원 엔드포인트 침해 감지; 인시던트 containment | Bleeping Computer를 통한 GitHub 대변인 |
| 5월 20일 | 공개 발표; TeamPCP / UNC6780이 공개적으로 책임 주장 | Help Net Security, Hackread |
그 11분의 창이 가장 이상한 세부 사항입니다. 이는 공격자가 마켓플레이스 탐지를 피하기 위해 확장 프로그램을 회전시켰음을 시사하며, 이는 Koi Security가 2025년 10월 GlassWorm OpenVSX 웜에서 문서화한 패턴과 동일합니다. TeamPCP / UNC6780은 이전에 Trivy, KICS, LiteLLM, TanStack 및 MistralAI에 대한 2026년 침해를 주장한 바 있습니다. 같은 그룹, 같은 플레이북, 다른 타겟입니다.
지난달에는 Vercel의 환경 변수였고, 오늘은 GitHub의 저장소입니다. 9개월 동안 지켜본 패턴은 피해 범위를 계속 외부로 확장하고 있습니다. 형제 사건인 Vercel 침해 대응 분석을 참조하세요.
문제의 확장 프로그램: Nx Console v18.95.0 (그리고 GitHub가 확인하지 않는 이유)
GitHub는 직원 엔드포인트 침해에 관여한 확장 프로그램을 공식적으로 명시하지 않았습니다. 포렌식 증거는 Nx Console v18.95.0과 강력하게 일치하지만, 이는 여전히 높은 확률일 뿐 확정된 사실은 아닙니다. GitHub가 다른 확장 프로그램을 공개적으로 지명하면 이 게시물을 업데이트하겠습니다. 이 섹션의 나머지는 선언된 사실이 아닌 최선의 귀속(attribution)으로 취급하세요.
Nx Console을 GitHub 공개 내용과 연결하는 네 가지 정황 증거가 일치합니다.
- 시기 일치: GHSA-c9j4-9m59-847w advisory 창(UTC 5월 18일 12:36-12:47)이 GitHub 자체 공개 내용中的 직원 엔드포인트 침해 창 안에 있습니다.
- 포렌식 IoC 중복: StepSecurity가 게시한 Nx Console 페이로드 분석(파일 경로,
__DAEMONIZED같은 프로세스, 네트워크 엔드포인트)이 Wiz의 보고서에 따른 침해 엔드포인트에서 발견된 아티팩트와 일치합니다. - TeamPCP 귀속 패턴: TeamPCP / UNC6780은 일관된 페이로드 구조로 VS Code 공급망 공간(2026년 Trivy, KICS, LiteLLM, TanStack, MistralAI)에서 활동해 왔습니다.
- 11분 제거 창: 공격자가 게시 순간을 제어하지만 마켓플레이스가 빠르게 잡아내는 공급망 공격의 특징입니다.
Nx Console을 설치하지 않았다 해도 아직 안전하지는 않습니다. 더 넓은 공격 패턴(__DAEMONIZED 프로세스, IMDS 남용, ~/.claude/settings.json 유출)은 모든 독성 확장 프로그램으로 일반화됩니다. 다음 섹션의 트리아지는 어떤 확장 프로그램을 의심하든 적용됩니다.

내가 영향을 받았는가? 5분 트리아지
세 가지 빠른 테스트가 있습니다. (1) UTC 기준 5월 18일 12:36~12:47 사이에 VS Code 확장 프로그램을 설치하거나 자동 업데이트했는가? (2) 현재 노트북에 GHSA-c9j4-9m59-847w의 IoC 파일이 있는가? (3) 지난 14일 동안 VS Code 내에서 GitHub PAT를 사용했는가? 이 세 가지를 5분 이내에 모두 실행하세요.
테스트 1, 확장 프로그램 감사
# List all installed extensions with versions
code --list-extensions --show-versions
# Specifically check for Nx Console v18.95.0
code --list-extensions --show-versions | grep -i "nrwl.angular-console\|nx-console"5월 17일부터 5월 18일 사이에 자동 업데이트된 항목은 다시 살펴볼 가치가 있습니다. Nx Console이 정확히 18.95.0이라면 가능성이 높습니다. 패치된 버전은 18.100.0입니다. 제거하거나 아래 플레이북으로 바로 이동하세요.
테스트 2, IoC 스캔
# Check for the daemonized credential-harvest process artifacts (GHSA-c9j4-9m59-847w)
ps aux | grep -i "__DAEMONIZED" | grep -v grep
ls -la ~/.local/share/kitty/ 2>/dev/null
find ~ -name "*.daemonized*" 2>/dev/null
# IMDS abuse indicator (AWS credential harvest)
# Check shell history for unexpected curl to 169.254.169.254
grep -E "169\.254\.169\.254|metadata\.google\.internal" ~/.zsh_history ~/.bash_history 2>/dev/null정상적인 머신이라면 __DAEMONIZED grep에서 아무것도 반환되지 않고, .daemonized 파일이 없으며, 셸 히스토리에서 IMDS hits가 없어야 합니다. 만약 이들 중 하나라도 해당되면 노트북이 침해되었다고 가정하고 지난 30일 동안触及한 모든 자격 증명을 폐기된 것으로 처리하세요.
테스트 3, PAT 노출
지난 14일 동안 VS Code 터미널, 통합 git 또는 GitHub API를 호출하는 확장 프로그램 내에서 GitHub PAT(클래식 또는 세분화된)를 사용했다면, 침해되었다고 가정하고 아래 교체 플레이북으로 진행하세요. 이것은 보수적인 기본값입니다. "확장 프로그램이 활성화되어 있는 동안 토큰이 메모리에 있었는가"를 감사할 수는 없습니다. 교체하세요.
Claude Code를 사용하는 경우, IoC 목록에는 구체적으로 ~/.claude/settings.json이 포함됩니다. 해당 파일에 저장된 내용과 가장 먼저 교체해야 할 키에 대해서는 Claude Code 훅 가이드를 확인하세요.
판단. 이 세 가지 중 하나라도 양성 반응이 나오면 서술적 읽기를 중단하세요. 다음 섹션의 플레이북으로 바로 이동하세요. 사후 분석보다 다음 55분이 더 중요합니다.
개발자가 반드시 수행해야 할 사항: 60분 긴급 대응 플레이북
우선순위 순서대로 자격 증명을 교체하세요. Tier 0(다음 30분): GitHub PAT 및 npm 토큰. Tier 1(오늘): AWS/클라우드 키, 1Password/Vault, GitHub Actions 시크릿. Tier 2(이번 주): 서드파티 SaaS, OAuth 권한, SSH 키. Tier 3(편할 때): 읽기 전용 및 공개 키. 각 티어는 특정 피해 범위 감소에 매핑됩니다.

지금 당장: 영향을 받은 것 같다면
트리아지 결과가 양성이었다면, 다른 무엇보다 먼저 이 세 가지를 순서대로 수행하세요.
- 데몬 종료 및 의심스러운 확장 프로그램 제거:
# Kill the malicious payload (GHSA-c9j4-9m59-847w)
pkill -f __DAEMONIZED
pkill -f "nx-console.*18.95.0"
# Uninstall the suspect extension immediately
code --uninstall-extension nrwl.angular-console- 활성 유출 증거가 있다면 노트북의 네트워크 케이블을 뽑으세요. 극단적으로 들릴 수 있습니다. 맞습니다. 그래도 하세요. 오프라인에서 재조사할 수 있습니다.
- 다른 작업을 실행하기 전에 보안 팀에 연락하거나
#securitySlack 채널에 게시하세요. 솔로라면 아래 Tier 0으로 건너뛰세요.
Tier 0 (다음 30분): GitHub + npm
gh CLI 및 웹 설정 UI를 통한 GitHub PAT 폐기:
# Confirm what you're authenticated as
gh auth status
# List app installations the token has access to (helps inventory blast radius)
gh api -H "Accept: application/vnd.github+json" /user/installations
# The gh CLI cannot revoke classic PATs directly — use the web UI:
# https://github.com/settings/tokens
# Click "Revoke" on EVERY token. Do not selectively keep "the one that's probably fine."
# Re-issue with fine-grained PATs + ≤90-day expiration:
# https://github.com/settings/personal-access-tokens/new
# Scope one repo at a time, never the whole account.
# For org-owned PATs and installations:
gh api /orgs/{ORG}/installationsnpm 토큰 교체:
# List and revoke every npm token
npm token list
npm token revoke <token-id-1>
npm token revoke <token-id-2>
# Force 2FA on auth and writes
npm profile enable-2fa auth-and-writes
# For CI: migrate to OIDC trusted publishing — no more long-lived tokens
# Docs: https://docs.npmjs.com/trusted-publishers게시된 패키지를 관리하는 경우, npm 토큰은 당신이 소유한 가장 위험한 단일 자격 증명입니다. AWS보다 먼저 교체하세요.
Tier 1 (오늘): 클라우드 + Vaults + CI 시크릿
다음은 AWS 액세스 키입니다. IoC는 IMDS 남용을 보여주므로, 침해된 엔드포인트에触及한 IAM 사용자는 모두 의심스럽습니다.
# List access keys for the current IAM user
aws iam list-access-keys --user-name $(aws sts get-caller-identity --query 'Arn' --output text | cut -d/ -f2)
# Deactivate the old key (don't delete yet — let workloads fail loudly first)
aws iam update-access-key --access-key-id AKIA... --status Inactive --user-name <user>
# Create a new key
aws iam create-access-key --user-name <user>
# Once deployed and verified, delete the old key
aws iam delete-access-key --access-key-id AKIA... --user-name <user>
# If any EC2 instance was using IMDSv1, force IMDSv2 immediately
aws ec2 modify-instance-metadata-options --instance-id i-... --http-tokens required1Password CLI: 모든 장치에서 로그아웃(op signout --all)하고, 세션 토큰을 재생성하며, 1Password의 웹 감사 로그를 통해 침해된 엔드포인트에서 실행된 최근 Vault 액세스를 감사하세요.
HashiCorp Vault: 사용자 토큰을 폐기(vault token revoke -self)하고 관리자가 더 짧은 TTL로 새 토큰을 발급하도록 하세요.
GitHub Actions 시크릿: 교체된 자격 증명이 Actions에도 있다면 업데이트하세요. 저장소별로 gh secret set GITHUB_PAT --body <new-pat>를 사용하거나 조직 시크릿의 경우 조직 수준 UI를 사용하세요.
Anthropic 및 OpenAI API 키: GHSA-c9j4-9m59-847w IoC 목록은 구체적으로 ~/.claude/settings.json을 수집 타겟으로 지적합니다. Anthropic 콘솔 API 키와 해당 파일에 저장했던 OpenAI 키를 폐기하고 재발급하세요.
Tier 2 (이번 주): SSH + OAuth + 비밀번호 보관소
SSH 키는 변화 속도가 느리지만 여전히 범위에 포함됩니다. 확장 프로그램은 ~/.ssh/에 대한 파일 시스템 읽기 권한을 가지고 있었습니다.
# Audit existing SSH keys (when were they generated?)
for key in ~/.ssh/id_*; do
if [ -f "$key" ]; then
echo "Key: $key"
stat -c '%y' "$key" 2>/dev/null || stat -f '%Sm' "$key"
fi
done
# Generate a new Ed25519 key
ssh-keygen -t ed25519 -C "rotated-$(date +%Y%m%d)" -f ~/.ssh/id_ed25519_new
# Upload public key to GitHub
gh ssh-key add ~/.ssh/id_ed25519_new.pub --title "rotated-$(date +%Y%m%d)"
# Delete the old key from GitHub via web UI, then verify SSH still works
ssh -T [email protected]브라우저 비밀번호 관리자 및 OS 키체인: 확장 프로그램이 클립보드를 통해 볼 수 있었을 만한 모든 비밀번호를 교체하세요. 현실적인 노출 위험은 확장 프로그램이 활성화되어 있는 동안 클립보드에 복사한 비밀번호입니다.
Tier 3 (편할 때): 감사 + 검증
침해 창 동안 GitHub 조직 로그를 감사하세요. 이는 조직 관리자가 필요합니다.
# Pull push events for the May 18-20 window
gh api -X GET /orgs/{ORG}/audit-log \
--paginate \
-f phrase='action:repo.push created:2026-05-18..2026-05-20' | jq '.[] | {actor, created_at, repo}'
# Spot-check suspicious commits (unexpected authors, large diffs)
gh api -X GET /repos/{ORG}/{REPO}/commits \
-f since=2026-05-18T00:00:00Z \
-f until=2026-05-20T23:59:59Z | jq '.[] | {sha, author: .commit.author, message: .commit.message}'
# Refresh OAuth grants
gh auth refresh -s admin:org -s admin:public_key감사 로그에서 귀하가 만들지 않은 침해 창의 푸시가 표시되면 보안 팀으로 에스컬레이션하고 감사 로그 JSON을 보존하세요. 저장소에서 무언가를 "되돌리려고" 하지 마세요. 먼저 증거를 보존하세요.
우리는 4월 Vercel env-var 침해에서도 동일한 계층적 교체 로직을 다루었습니다. 형태는 같지만 층위가 다릅니다.
5질문 확장 프로그램 감사 프레임워크 (영구적으로 사용하세요)
VS Code 확장 프로그램을 설치하거나 신뢰하기 전에 다섯 가지 테스트를 거치세요. 발행자 도메인 연령, 버전 속도, package.json 활성화 이벤트, 예상 동작 대비 권한 범위, 오픈소스 저장소 감사. Nx Console v18.95.0은 테스트 #2에서 실패했을 것입니다. 안정적인 릴리스 주기 후 갑작스러운 버전 점프는 고전적인 공급망 신호입니다.
- 발행자 도메인 연령. 발행자의 도메인이 1년 이상 되었는가? 새로 등록된 도메인의 신규 발행자는 더 높은 위험을 안고 있습니다. Visual Studio Marketplace 발행자 페이지 또는 발행자 이메일 도메인의
whois를 통해 확인하세요. - 버전 속도. 버전 기록이 정상적인 주기(1~4주마다 한 번의 릴리스)를 보여주는가, 아니면 갑작스러운 급증(24시간 내 세 번의 릴리스)을 보이는가? 갑작스러운 속도는 신호입니다. Nx Console v18.95.0은 속도 이상이었습니다.
package.json활성화 이벤트..vsix파일(zip 파일임)을 열고activationEvents를 읽으세요.*(항상 켬)에서 활성화되는 확장 프로그램은 공격 표면이 가장 큽니다. 특정 언어 또는 파일명에서 활성화되는 확장 프로그램을 선호하세요.- 필요 권한 vs 예상 동작. "테마" 확장 프로그램이 네트워크 액세스를 요청하는가? "스니펫" 확장 프로그램이 파일 시스템 쓰기가 필요한가? 불일치는 적신호입니다. Microsoft의 확장 프로그램 런타임 보안 문서와 교차 확인하세요.
- 오픈소스 저장소 감사. 소스가 GitHub에 있는가? 마지막 다섯 개의 커밋을 읽어 suspicious changes(설치 후 훅, base64로 인코딩된 blob, 낯선 도메인으로의 네트워크 호출)를 확인하세요.
*에서 활성화되고 네트워크 액세스를 요청하는 확장 프로그램은 기능적으로 VS Code가 부착된 원격 셸입니다.
동일한 감사 프레임워크는 MCP 서버, 다음 확장 프로그램 클래스 공급망 표면에도 적용됩니다. 우리가 신뢰하는 것과 그 이유에 대한 2026년 최고 MCP 서버 분석을 참조하세요.
왜 이런 일이 계속 발생하는가: 2025-2026 공급망 파도
5월 20일 GitHub 침해는 9개월 아크의 한 노드입니다. Shai-Hulud npm 웜(2025년 9월), GlassWorm OpenVSX 웜(2025년 10-11월), Shai-Hulud 2.0(2025년 11월, 25,000개 이상 저장소 영향), Mini Shai-Hulud(2026년 초), Nx Console(2026년 5월 18일), GitHub 엔드포인트 침해(2026년 5월 20일). 개발자 엔드포인트는 새로운 취약점이 되었습니다.
- 2025년 9월, Shai-Hulud npm 웜. 인기 있는 npm 패키지의 자가 전파 멀웨어. CISA가 광범위한 침해에 대한 경보를 발령했습니다.
- 2025년 10-11월, GlassWorm. OpenVSX의 VS Code 확장 프로그램을 대상으로 한 첫 번째 자가 전파 웜. Koi Security 공개.
- 2025년 11월, Shai-Hulud 2.0. 25,000개 이상의 저장소 유출. Microsoft Security Blog가 containment 가이드를 게시했습니다.
- 2026년 초, Mini Shai-Hulud. TeamPCP 변종. Trivy, KICS, LiteLLM, TanStack 및 MistralAI에 대한 소규모 반복 공격.
- 2026년 5월 18일, Nx Console v18.95.0. GitHub 엔드포인트 침해의 매우 유력한 벡터.
- 2026년 5월 20일, GitHub 공개. 내부 저장소 약 3,800개 유출. Wiz의 Shai-Hulud 포렌식 시리즈에 따르면, IMDS 남용 패턴은 직접적인 진화입니다.
패턴은 명확합니다. 개발자 노트북은 조직의 모든 시크릿(GitHub PAT, AWS 키, vault 토큰, AI 제공자 키)을 보유하면서 거의 제로에 가까운 EDR 커버리지를 가지고 있습니다. 그 불균형이 뒤집힐 때까지 이 파도는 계속됩니다.
방어용 AI는 답의 한 부분입니다. 올해 초 AI가 데이터 위반을 방지하는 방법 분석에서 이 각도를 다루었습니다.
GitHub의 더 큰 대응: 신뢰할 수 있는 게시, FIDO 2FA, 90일 토큰
GitHub는 5월 20일 이전에 이미 네 가지 공급망 통제를 롤아웃하고 있었습니다. npm 발행자를 위한 의무적 2FA, 세분화된 쓰기 토큰에 대한 90일 상한선, FIDO 및 패스키를 선호하는 TOTP 폐지, 그리고 GitHub Actions 및 GitLab CI를 위한 OIDC 신뢰할 수 있는 게시(trusted publishing). 5월 침해는 이미 진행 중인 마이그레이션을 가속화할 뿐, 새로운 정책을 도입하지는 않습니다.
| 통제 | 상태 | 사용자를 위한 조치 |
|---|---|---|
| 의무적 npm 2FA | 활성 | 지금 활성화: npm profile enable-2fa auth-and-writes |
| 90일 세분화된 쓰기 토큰 상한선 | 롤아웃 중(기존 토큰 만료 강제) | ≤90일 TTL의 세분화된 PAT로 마이그레이션 |
| TOTP 폐지, FIDO/패스키 | 2026년 단계적 롤아웃 | 오늘 모든 GitHub 계정에 패스키 등록 |
| OIDC 신뢰할 수 있는 게시 | GitHub Actions + GitLab CI용 활성 | CI를 장기 npm 토큰에서 OIDC로 마이그레이션 |
GitHub의 더 광범위한 더 안전한 npm 공급망을 위한 계획은 이번 사건보다 몇 달 앞섰습니다. 이에 빨리 적응할수록 다음 번 피해 범위는 더 작아집니다.
강화: 다음 사건에서 생존하는 방법
여섯 가지 미래 지향적 조치: devcontainer.json에서 확장 프로그램 버전 고정, 조직 수준 확장 프로그램 허용 목록 적용, 확장 프로그램 프로세스 가시성을 갖춘 EDR 실행, 모든 푸시에 대한 시크릿 스캔, PAT를 하나의 저장소로 범위 지정, 장기 토큰 대신 OIDC 신뢰할 수 있는 게시 채택. 이들 중 어느 것도 모든 인시던트를 예방하지는 못하겠지만, 함께 사용하면 피해 범위를 "노트북의 모든 것"에서 "하나의 저장소"로 줄입니다.
{
"name": "secure-dev",
"extensions": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"settings": {
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
},
"containerEnv": {
"VSCODE_GALLERY_SERVICE_URL": "https://your-internal-allow-list.example.com"
}
}요약하면:
- 자동 업데이트를 차단하기 위해
devcontainer.json에서 모든 확장 프로그램 버전을 고정하세요. VSCODE_GALLERY_SERVICE_URL을 내부 미러로 지정하여 조직 수준에서 허용 목록을 적용하세요.- IDE 프로세스 가시성을 갖춘 EDR: Crowdstrike, SentinelOne 또는 범위에 VS Code를 포함하는 Microsoft Defender for Endpoint.
- 모든 푸시에 대한 시크릿 스캔: pre-commit 및 푸시 시간, 서버 측.
- 모든 PAT를 하나의 저장소로 범위 지정:
*스코프는 절대 사용하지 마세요. - OIDC 신뢰할 수 있는 게시: CI에 장기 npm 또는 레지스트리 토큰을 사용하지 마세요.
지난주 Linux copy_file_range CVE는 형제 이야기입니다. 층위는 다르지만 교훈은 같습니다. 당신이 잊어버린 신뢰 경계가 당신을 공격합니다.
다음으로 AI 코딩 에이전트를 고려한다면, 동일한 감사 프레임워크를 적용하세요. 그들은 확장 프로그램과 동일한 신뢰 프로필을 가집니다. 어떤 에이전트가 그 신뢰를 얻는지 walkthrough하는 2026년 최고 AI 코딩 에이전트 분석을 참조하세요.
자주 묻는 질문
GitHub가 해킹당했나요?
대부분의 헤드라인이 암시하는 의미에서는 아닙니다. GitHub.com 프로덕션 환경은 침해되지 않았습니다. 한 GitHub 직원이 워크스테이션에 악성 VS Code 확장 프로그램을 설치했으며, 이로 인해 GitHub의 내부 소스 코드 저장소 약 3,800개가 유출되었습니다. 고객 코드, 고객 계정 및 GitHub의 프로덕션 서비스는 영향을 받지 않았습니다.
실제로 어떤 VS Code 확장 프로그램이 관여했나요?
GitHub는 확장 프로그램 이름을 공식적으로 확인하지 않았습니다. StepSecurity, Wiz 및 GHSA-c9j4-9m59-847w의 포렌식 증거는 UTC 기준 5월 18일 12:36에 게시되고 11분 후 제거된 Nx Console v18.95.0을 높은 확률로 지목합니다. 우리는 GitHub가 이를 지명할 때까지 이를 "높은 확률, 미확인"으로 취급합니다.
이제 Nx Console을 사용해도 안전한가요?
패치된 버전은 18.100.0입니다. 이전 v18.95.0이 설치되어 있다면 즉시 제거하고, 트리아지 섹션의 IoC 스캔을 실행한 후, 버전 18.100.0 이상에서만 공식 Nrwl 발행자로부터 다시 설치하세요. 다시 설치하기 전에 발행자 도메인을 확인하고 devcontainer.json에서 버전을 고정하세요.
고객 데이터가 GitHub 침해 사건의 영향을 받았나요?
아니요. Bleeping Computer를 통한 GitHub의 공식 성명에 따르면, 고객 소스 코드, 고객 계정, OAuth 토큰 및 GitHub 호스팅 프로덕션 데이터는 액세스되지 않았습니다. 침해된 데이터는 직원 엔드포인트의 GitHub 내부 소스 코드입니다. 이를 플랫폼 침해가 아닌 직원 노트북 인시던트로 취급하세요.
내 GitHub PAT가 탈취되었는지 어떻게 알 수 있나요?
확실하게 알 수는 없습니다. 보수적인 가정: 지난 14일 동안 VS Code 내에서 GitHub PAT를 사용했다면, 침해된 것으로 간주하고 교체하세요. gh api /orgs/{ORG}/audit-log를 통해 GitHub 감사 로그를 확인하여 UTC 기준 5월 18~20일 사이에 익숙하지 않은 푸시 이벤트가 있는지 확인한 후, 토큰을 폐기하고 재발급하세요.
TeamPCP와 UNC6780은 무엇인가요?
TeamPCP는 위협 행위자 그룹이며, UNC6780은 인시던트 대응 벤더가 할당한 추적 ID입니다. 그들은 GitHub 침해에 대한 책임을 공개적으로 주장했습니다. 같은 그룹은 Trivy, KICS, LiteLLM, TanStack 및 MistralAI에 대한 2026년 침해를 주장했으며, 일관된 VS Code 및 npm 공급망 타겟팅 패턴을 보입니다.
VS Code 확장 프로그램은 샌드박스 처리되나요?
의미 있게는 아닙니다. VS Code 확장 프로그램은 사용자의 전체 파일 시스템 및 네트워크 권한을 가진 IDE의 Node.js 프로세스에서 실행됩니다. SSH 키, ~/.aws/credentials, ~/.claude/settings.json 및 Linux의 /proc/*/mem을 통한 프로세스 메모리를 포함하여 홈 디렉토리의 모든 파일을 읽을 수 있습니다. Microsoft는 공식 확장 프로그램 문서에서 런타임 보안 모델과 그 한계를 문서화합니다.
이것이 GitHub Codespaces 또는 CI 러너에 영향을 미쳤나요?
현재까지 증거는 없습니다. 침해는 GitHub 호스팅 인프라가 아닌 직원 워크스테이션이었습니다. Codespaces, GitHub Actions 러너 및 고객 facing CI 인프라는 영향을 받은 것으로 보고되지 않았습니다. 새로운 IoC가 그 그림을 바꾸면 이 게시물을 업데이트하겠습니다.
결론
챙겨 가야 할 세 가지:
- GitHub.com은 해킹되지 않았습니다. 직원의 VS Code 워크스테이션이 해킹되었습니다. 이 교훈은 모든 개발자에게 일반화됩니다.
- 지금 교체하고, 감사 프레임워크는 영구적으로 사용하세요. 60분 플레이북은 패치이고, 5질문 감사 프레임워크는 면역 체계입니다.
- 이것은 일회성 사건이 아닙니다. 속도가 줄어들지 않는 9개월 공급망 파도의 6번째 노드입니다.
최종 업데이트: 2026년 5월 20일. 새로운 IoC, 벤더 advisories 및 GitHub가 확인한 확장 프로그램 귀속과 함께 2026년 5월 27일에 이 게시물을 업데이트할 예정입니다.
팀이 VS Code 확장 프로그램 표면, PAT 및 토큰 위생, 또는 조직 수준 허용 목록 정책 구축을 감사하는 데 도움이 필요하면 무료 상담을 받으세요. 우리는 4월 Vercel 침해 이후 개발자 엔드포인트 보안에 몰두해 왔으며, 위의 플레이북은 우리가 고객과 함께 첫날부터 실행하는 것입니다.