DEEP DIVE REPORT

CVE-2026-48027: Nx Console 악성 코드 삽입 취약점과 개발자 공급망 보안

SecurityDesk
2026.05.30 조회 10

CVE-2026-48027: Nx Console 악성 코드 삽입 취약점과 개발자 공급망 보안

취약점 개요

2026년 5월 18일, 널리 사용되는 Visual Studio Code 확장 프로그램인 Nx Console의 악성 버전이 공식 마켓플레이스에 게시되는 사건이 발생했다. Nx Console은 Nx & Lerna를 위한 사용자 인터페이스로, 220만 건 이상의 설치 기록을 보유한 인기 있는 개발 도구다. 공격자는 CVE-2026-48027(CVSS 4.0 점수 9.3)으로 추적되는 이 취약점을 악용하여 GitHub 내부 저장소 약 3,800개에 침투하는 데 성공했다.

이번 사건은 개발자 도구의 공급망 보안 취약성이 어떻게 대규모 보안 사고로 확대될 수 있는지를 명확히 보여준다. 공격자는 TanStack 공급망 침해 사건에서 탈취한 자격증명을 사용하여 정당한 Nx 핵심 기여자의 신원을 위장하고, 악성 버전인 v18.95.0을 공식 마켓플레이스에 게시했다.

공격 체인 분석

1단계: TanStack 공급망 침해

공격 체인의 시작점은 2026년 5월 11일 발생한 TanStack 공급망 침해 사건이다. 공격자는 GitHub Actions 캐시 포이징 기법과 OIDC 토큰 추출을 결합하여, @tanstack/* npm 패키지 84개의 악성 버전을 발행했다. 이 패키지들은 유효한 npm 프로바이더를 가지고 있어 정상적인 릴리스와 구별이 어려웠다.

2단계: 자격증명 탈취

Nx 프로젝트의 한 기여자가 5월 11일 외부 저장소에서 pnpm install을 실행할 때, 최근에 게시된 악성 @tanstack/zod-adapter@1.166.15 패키지를 다운로드하고 실행했다. 해당 패키지의 prepare 스크립트는 난독화된 자격증명 스크립트(2.3MB)를 가져와서 실행했다. 이 악성코드는 기여자의 GitHub CLI OAuth 토큰을 탈취했다.

3단계: Nx Console 확장 프로그램 탈취

탈취한 자격증명을 사용하여 공격자는 7일 동안 Nx의 GitHub 저장소에 활동하며 감지되지 않았다. 5월 18일 12:30 UTC, 공격자는 악성 Nx Console v18.95.0을 Visual Studio Marketplace와 Open VSX 레지스트리에 게시했다.

4단계: GitHub 침투

악성 확장 프로그램을 설치한 개발자의 시스템에서 자격증명이 수집되었고, 이를 통해 GitHub 내부 저장소에 침투하여 약 3,800개의 저장소를 탈취했다.

악성코드 동작 방식

지속성 메커니즘

악성 버전 v18.95.0은 확장 프로그램 활성화 시 다음 지속성 아티팩트를 디스크에 기록했다:

  • macOS/Linux:
  • ~/.local/share/kitty/cat.py (Python 백도어)
  • ~/Library/LaunchAgents/com.user.kitty-monitor.plist (재부팅 지속성을 위한 LaunchAgent)
  • /tmp/kitty-* (스테이징)
  • /var/tmp/.gh_update_state (상태)

  • Linux:

  • /etc/sudoers 수정 시도 (권한 지속성)

  • Windows:

  • %USERPROFILE%.local\share\kitty\cat.py (Python 백도어)
  • %TEMP%\kitty-* (스테이징)
  • %TEMP%.gh_update_state (상태)
  • %USERPROFILE%.bun\bin\bun.exe (지속성)

자격증명 수정 대상

악성코드는 다음과 같은 자격증명을 수정했다:

  • Vault: ~/.vault-token, /etc/vault/token, Kubernetes 서비스 계정 토큰, AWS IAM 인증 토큰
  • npm: .npmrc 토큰, OIDC 토큰 교환
  • AWS: IMDS/ECS 메타데이터 서비스, Secrets Manager, SSM Parameter Store, Web Identity 토큰
  • GitHub: ~/.config/gh/hosts.yml, ~/.git-credentials, 환경 변수, 프로세스 메모리에서 ghp_/gho_/ghs_ 토큰
  • 1Password: 실행 중인 경우 op CLI 세션 내용
  • 파일시스템: SSH 개인 키, .env 파일, GCP 애플리케이션 기본 자격증명, Docker 설정

데이터 유출 경로

수집된 데이터는 다음 경로를 통해 유출되었다:
- HTTPS를 통한 공격자 인플라
- GitHub API
- DNS 기반 암호 채널

영향 범위 및 심각도

노출 시간

  • Visual Studio Marketplace: 2026-05-18 12:30-12:48 UTC (약 18분)
  • Open VSX: 2026-05-18 12:33-13:09 UTC (약 36분)

설치 수

  • Visual Studio Marketplace: 28건 설치(Microsoft 원격 분석)
  • Open VSX: 41건 다운로드(21개 고유 IP)
  • Nx 내부 활성화 분석: v18.95.0에서 약 6,000건 활성화(설치가 아닌 활성화)

영향을 받은 실제 사용자 수는 이보다 훨씬 많을 수 있으며, 노출 시간 동안 자동 업데이트가 활성화된 Nx Console을 사용한 모든 사용자는 잠재적 침해로 간주해야 한다.

직접적 영향

  • GitHub 내부 저장소 약 3,800개 침투
  • 고객 정보 영향 없음(내부 저장소 외부에 저장된 고객 데이터는 영향받지 않음)
  • GitHub는 중요한 비밀을 교체하고 사태를 포함하는 조치를 취함

CVSS 4.0 평가

  • 벡터: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
  • 기본 점수: 9.3 (Critical)
  • 공격 벡터: 네트워크
  • 공격 복잡성: 낮음
  • 권한: 필요 없음
  • 사용자 상호작용: 필요 없음
  • 영향: 기밀성, 무결성, 가용성 모두 높음

대응 방안

즉시 대응

1. 영향 여부 확인

다음 조건 중 하나라도 해당하는 경우 기기를 침해된 것으로 간주해야 한다:
- 노출 시간 동안(2026-05-18 12:30-13:09 UTC) Nx Console v18.95.0을 설치한 경우
- 노출 시간 동안 자동 업데이트가 활성화된 Nx Console이 설치된 경우

2. 자격증명 교체

영향을 받은 경우 다음 모든 자격증명을 즉시 교체해야 한다:
- GitHub 토큰(ghp_, gho_, ghs_)
- npm 토큰
- AWS 자격증명(액세스 키, 보안 토큰)
- 1Password 계정(사용 중인 경우)
- SSH 개인 키
- API 키 및 토큰
- .env 파일에 저장된 모든 비밀

3. 확장 프로그램 업데이트

Nx Console을 v18.100.0 이상으로 업데이트해야 한다. 이 버전부터 안전하다:
- Nx CLI(npm 패키지)는 영향받지 않음
- 모든 공식 @nx/* 플러그인은 영향받지 않음
- Nx Cloud는 영향받지 않음
- 이번 침해는 Nx Console VS Code 확장 프로그램에만 국한됨

시스템 점검

1. 악성 아티팩트 탐지

다음 위치에 악성 아티팩트가 있는지 확인해야 한다:

macOS/Linux:

# 백도어 파일 확인
ls -la ~/.local/share/kitty/cat.py
ls -la ~/Library/LaunchAgents/com.user.kitty-monitor.plist
ls -la /tmp/kitty-*
ls -la /var/tmp/.gh_update_state

# 권한 확인
sudo grep -r "kitty" /etc/sudoers

Windows:

# 백도어 파일 확인
Get-ChildItem "$env:USERPROFILE\.local\share\kitty\cat.py"
Get-ChildItem "$env:TEMP\kitty-*"
Get-ChildItem "$env:TEMP\.gh_update_state"
Get-ChildItem "$env:USERPROFILE%\.bun\bin\bun.exe"

2. 네트워크 연결 확인

의심스러운 네트워크 연결이 있는지 확인해야 한다:

# macOS/Linux
netstat -an | grep -E "ESTABLISHED|LISTEN"
lsof -i -P | grep LISTEN

# Windows
netstat -an | findstr ESTABLISHED
netstat -an | findstr LISTEN

3. 프로세스 확인

의심스러운 프로세스가 실행 중인지 확인해야 한다:

# macOS/Linux
ps aux | grep -E "kitty|python.*cat\.py"

# Windows
tasklist | findstr /I "python kitty"

장기적 완화 방안

1. 공급망 보안 강화

  • 최소 릴리스 나이 정책 설정: npm 패키지 설치 시 최소 릴리스 나이(minimum-release-age)를 설정하여 최근에 게시된 패키지 설치 방지
  • 패키지 관리자 버전 확인: pnpm 10.16 이상을 사용하여 minimum-release-age 설정이 적용되도록 확인
  • CI 가드 추가: 빌드 실패 조건으로 패키지 관리자 버전 검증 추가

2. 자격증명 관리 개선

  • 영구 자격증명 폐기: 가능한 경우 영구 자격증명 대신 OIDC, 임시 토큰 등을 사용
  • 1Password 플러그인 활용: gh CLI와 1Password 플러그인을 함께 사용하여 자격증명이 로컬에 영구적으로 저장되지 않도록 함
  • 프로세스 격리: 자격증명 접근 권한을 최소화

3. 개발 도구 보안

  • 자동 업데이트 감시: 확장 프로그램 자동 업데이트 기능 감시하고, 필요 시 수동 업데이트로 전환
  • 게시 파이프라인 강화: 2단계 승인 요구 등 게시 파이프라인 보안 강화
  • OIDC 신뢰된 게시: npm OIDC 신뢰된 게시 기능 활용 및 트리거 사용자 승인 요구

4. 모니터링 및 탐지

  • 비정상적 활동 모니터링: GitHub 저장소에서 비정상적인 커밋, 워크플로우 실행, 권한 변경 등 모니터링
  • 확장 프로그램 활동 추적: 확장 프로그램 활동을 모니터링하여 비정상적 활동 탐지
  • EDR/보안 솔루션: 엔드포인트 탐지 및 대응 솔루션 배포

기업/기관별 권장사항

1. 개발 환경 분리

  • 개발 환경과 프로덕션 환경 분리
  • 개발자 기기에서 민감한 자격증명 사용 최소화
  • 임시 개발 환경 활용

2. 접근 제어 강화

  • 최소 권한 원칙 적용
  • MFA(다단계 인증) 필수화
  • 정기적 권한 검토 및 교체

3. 보안 교육

  • 공급망 보안 위협에 대한 교육
  • 의심스러운 활동 보고 프로세스 정립
  • 포렌식 분석 준비

4. 인시던트 대응 계획

  • 공급망 침해 인시던트 대응 절차 수립
  • 자격증명 교체 절차 문서화
  • 포렌식 분석 준비

CISA KEV 카탈로그

미국 사이버보안 및 인프라 보안국(CISA)은 CVE-2026-48027을 Known Exploited Vulnerabilities(KEV) 카탈로그에 추가했다. 연방 민간 집행 지부(FCEB) 기관은 다음과 같은 조치를 취해야 한다:

  • 마감일: 2026년 6월 10일
  • 필수 조치: 공급업체 지침에 따른 완화 조치 적용, 클라우드 서비스에 대한 BOD 22-01 지침 준수, 또는 완화 조치를 사용할 수 없는 경우 제품 사용 중단

결론

CVE-2026-48027 사건은 개발자 도구의 공급망이 조직의 전체 보안 태세에 미칠 수 있는 파괴적인 영향을 보여준다. 18분이라는 짧은 노출 시간 동안에도 대규모 데이터 침해가 발생했으며, 이는 자동 업데이트 기능의 이중적인 면모(편의성 vs 보안 위험)를 명확히 보여준다.

이번 사건에서 가장 중요한 교훈은 개발자 생태계의 상호 연결성이다. TanStack → Nx Console → GitHub으로 이어지는 공격 체인은 하나의 취약점이 어떻게 연쇄적인 보안 사고로 확대될 수 있는지 보여준다. 단일 실패 지점 방어가 아니라, 다층적 방어 체계가 필수적이다.

국내 기업과 기관은 다음을 우선적으로 수행해야 한다:
1. Nx Console 사용 여부 및 버전 확인
2. 영향을 받은 기기의 자격증명 전면 교체
3. 공급망 보안 정책 재검토 및 강화
4. 개발자 보안 교육 및 인식 고취

보안책상은 이번 사건을 계기로 개발자 도구와 공급망에 대한 지속적인 모니터링과 분석을 수행할 예정이다.

대응 체크리스트

즉시 확인 (24시간 이내)

  • [ ] Nx Console 사용 여부 확인
  • [ ] 사용 중인 Nx Console 버전 확인
  • [ ] v18.95.0 설치 여부 확인
  • [ ] 노출 시간 동안 자동 업데이트 활성화 여부 확인

즉시 대응 (48시간 이내)

  • [ ] Nx Console을 v18.100.0 이상으로 업데이트
  • [ ] GitHub 토큰 전면 교체
  • [ ] npm 토큰 전면 교체
  • [ ] AWS 자격증명 교체
  • [ ] SSH 개인 키 교체
  • [ ] 1Password 비밀번호 변경(사용 중인 경우)

시스템 점검 (72시간 이내)

  • [ ] 악성 아티팩트 탐지 및 제거
  • [ ] 의심스러운 네트워크 연결 확인
  • [ ] 의심스러운 프로세스 확인
  • [ ] 로그 분석 및 비정상적 활동 탐지

장기적 완화 (1주 이내)

  • [ ] 공급망 보안 정책 재검토
  • [ ] 최소 릴리스 나이 정책 설정
  • [ ] 패키지 관리자 버전 확인 및 업데이트
  • [ ] 자격증명 관리 정책 개선
  • [ ] 개발 도구 보안 강화
  • [ ] 모니터링 및 탐지 시스템 배포

참고자료

  1. NVD - CVE-2026-48027
    https://nvd.nist.gov/vuln/detail/CVE-2026-48027

  2. Nx Console Postmortem
    https://nx.dev/blog/nx-console-v18-95-0-postmortem

  3. GitHub Security Advisory - GHSA-c9j4-9m59-847w
    https://github.com/nrwl/nx-console/security/advisories/GHSA-c9j4-9m59-847w

  4. The Hacker News - GitHub Internal Repositories Breached
    https://thehackernews.com/2026/05/github-internal-repositories-breached.html

  5. CISA Known Exploited Vulnerabilities Catalog
    https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-48027

  6. GitHub Issue Tracking - nrwl/nx-console#3139
    https://github.com/nrwl/nx-console/issues/3139

  7. OX Security Blog - TeamPCP Strikes Again
    https://www.ox.security/blog/teampcp-strikes-again-how-a-trojan-vs-code-extension-brought-down-github


본 콘텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9