Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
OreNPMGuard — Shai-Hulud 공급망 공격에 대한 방어 | Kitploit
도구/GitHubGitHub/rapticore/orenpmguard
Indicator of Compromise (IOC) ManagementVulnerability ScannersCode AnalysisMalware AnalysisDevSecOpsThreat IntelligenceSupply Chain SecurityLearning & EducationIncident Response
GitHubrapticore/orenpmguard

OreNPMGuard

Shai-Hulud 공급망 공격에 대한 방어

13448개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

OreNPMGuard - Shai-Hulud Package Scanner

버전 2.0.0 - Shai-Hulud 2.0 탐지 및 향상된 방지 시스템

Shai-Hulud 공급망 공격(2025년 9월 원본 및 2025년 11월 Shai-Hulud 2.0)으로부터 손상된 npm 패키지를 탐지하는 보안 도구입니다. package.json 및 package-lock.json 파일을 모두 스캔하여 정확한 설치 버전과 손상 지표(IoC)를 감지합니다. Python 및 Node.js 구현 모두에서 사용 가능하며, 중앙 집중식 YAML 구성을 통해 손쉬운 유지 관리가 가능합니다.

최신 업데이트: 2025년 11월 24일 - 738개 이상의 손상된 패키지 추적, 1,291개의 고유 package@version 조합. 이제 원본 Shai-Hulud와 Shai-Hulud 2.0 공격 변종을 모두 탐지합니다.

다중 생태계 스캔은 ore-mal-pkg-inspector를 참조하세요.

🔗 관련 프로젝트

다중 생태계 악성 패키지 스캔(npm, PyPI, Maven, RubyGems, Go, Cargo)은 다음을 참조하세요. ore-mal-pkg-inspector - 동적 위협 인텔리전스를 갖춘 포괄적인 악성 패키지 스캐너.

OreNPMGuard는 npm 패키지에 대한 Shai-Hulud 공격 방어에 특화되어 있습니다.

🚨 Shai-Hulud 공격에 대해

Shai-Hulud는 2025년 9월 14~15일에 npm 패키지를 손상시키기 시작한 자가 복제 웜으로, npm 생태계에서 첫 번째로 성공한 자가 전파 공격이자 현재까지 관찰된 가장 심각한 JavaScript 공급망 공격 중 하나입니다. Frank Herbert의 Dune 시리즈에 등장하는 거대 모래벌레의 이름을 따서 명명된 이 악성코드는 여러 변종으로 진화했습니다.

원본 Shai-Hulud (2025년 9월)

원본 공격은 200개 이상의 npm 패키지(이 도구에서 추적 기준)를 감염시켰으며, 패키지당 여러 버전이 영향을 받았습니다.

Shai-Hulud 2.0 (2025년 11월) - 신규

2025년 11월에 등장한 새로운 변종으로, 중요한 변화가 있습니다.

  • 738개 이상의 손상된 패키지, 1,291개의 고유 package@version 조합
  • 약 350명의 고유 사용자에 걸친 25,000개 이상의 영향을 받은 저장소
  • 새로운 실행 단계: postinstall뿐만 아니라 preinstall 스크립트 사용
  • 새로운 페이로드 파일: setup_bun.js 및 bun_environment.js (bundle.js에 추가)
  • 향상된 지속성: 'SHA1HULUD'라는 이름의 자체 호스팅 러너 생성 및 새로운 GitHub 워크플로 패턴
  • 멀티 클라우드 타겟팅: AWS, Azure, GCP 자격 증명 수집
  • Docker 권한 상승: 권한 있는 컨테이너를 통해 루트 액세스 시도
  • 2025년 11월 21~23일 사이에 업로드된 패키지

참조: Wiz Research - Shai-Hulud 2.0 블로그 게시물

🦠 공격 작동 방식

Patient Zero: 손상된 "techsupportrxnt" npm 계정에 의해 2025년 9월 14일 17:58:50 UTC에 게시된 rxnt-authentication 패키지에서 공격이 시작되었습니다.

공격 체인 (원본 Shai-Hulud):

  1. 설치: 악성 패키지가 bundle.js(3MB 이상의 JavaScript 페이로드)를 실행하는 postinstall 스크립트 실행
  2. 자격 증명 수집: TruffleHog를 사용하여 GitHub/npm 토큰, AWS/GCP/Azure 자격 증명, 환경 변수, IMDS 노출 클라우드 키 스캔
  3. 데이터 유출: 피해자의 GitHub 계정 아래에 도난된 비밀이 포함된 data.json(이중 base64 인코딩)이 있는 공개 "Shai-Hulud" 저장소 생성
  4. 지속성: 저장소 비밀을 webhook[.]site로 유출하는 악성 GitHub Actions 워크플로(.github/workflows/shai-hulud-workflow.yml) 주입
  5. 저장소 마이그레이션: 비공개 조직 저장소를 "-migration" 접미사와 "Shai-Hulud Migration" 설명이 있는 공개 개인 저장소로 강제 변환
  6. 웜 전파: 도난된 npm 토큰을 사용하여 피해자가 유지 관리하는 다른 패키지에 악성코드를 주입하고, 버전 번호를 증가시키며 postinstall 후크 추가

공격 체인 (Shai-Hulud 2.0 - 2025년 11월):

  1. 설치: 악성 패키지가 setup_bun.js 또는 bun_environment.js(새로운 페이로드 파일)를 실행하는 preinstall 스크립트 실행
  2. 데이터 파일 생성: cloud.json, contents.json, environment.json, truffleSecrets.json 파일 생성
  3. 자격 증명 수집: 공식 SDK를 사용한 멀티 클라우드 타겟팅(AWS, Azure, GCP), 구성 파일, 환경 변수 및 IMDS에서 자격 증명 스크래핑
  4. 자체 호스팅 러너 등록: 감염된 머신을 'SHA1HULUD'라는 자체 호스팅 러너로 등록
  5. GitHub 워크플로 주입:
    • 백도어 액세스를 위한 자체 호스팅 러너와 함께 .github/workflows/discussion.yaml 생성
    • 비밀 유출을 위한 .github/workflows/formatter_*.yml 생성 (그런 다음 워크플로를 삭제하여 활동 숨기기)
  6. Docker 권한 상승: docker run --rm --privileged -v /:/host를 통해 루트 액세스 시도
  7. 클라우드 비밀 덤프: 인증된 세션을 사용하여 AWS Secrets Manager, Google Secret Manager 및 Azure Key Vault에서 비밀 덤프
  8. 저장소 생성: 유출을 위해 설명에 "Shai-Hulud"가 포함된 저장소 생성

🎯 도난당하는 항목

  • 개발 자격 증명: GitHub PAT(ghp_*, gho_*), npm 인증 토큰
  • 클라우드 자격 증명: AWS, GCP, Azure 액세스 키 및 토큰
  • API 키: Atlassian, Datadog 및 기타 서비스 자격 증명
  • 시스템 정보: 환경 변수, 호스트 세부 정보, 사용자 계정
  • 소스 코드: 공개되거나 복제된 비공개 저장소

📊 영향 규모

원본 Shai-Hulud (2025년 9월):

  • 이 추적 데이터베이스에서 200개 이상의 패키지 손상(인기 패키지 @ctrl/tinycolor, ngx-bootstrap 포함)
  • 여러 GitHub 계정 손상(정확한 수는 보고 소스에 따라 다름)
  • "Shai-Hulud Migration" 레이블이 있는 공개 저장소 생성
  • 패키지 종속성을 통해 영향을 받을 수 있는 개발자

Shai-Hulud 2.0 (2025년 11월):

  • 738개 이상의 손상된 패키지, 1,291개의 고유 package@version 조합
  • 약 350명의 고유 사용자에 걸친 25,000개 이상의 영향을 받은 저장소 생성
  • 초기 캠페인 시간 동안 30분마다 1,000개 이상의 새로운 저장소 추가
  • 주요 생태계의 패키지에 영향: Zapier, ENS Domains, PostHog, Postman, AsyncAPI 등
  • 멀티 클라우드 자격 증명 도용(AWS, Azure, GCP)
  • Docker 권한 상승 시도

확인된 자격 증명 도용(약 20,000개 분석된 저장소 기준):

  • 775개의 손상된 GitHub 액세스 토큰
  • 373개의 AWS 자격 증명 노출
  • 300개의 GCP 자격 증명 노출
  • 115개의 Azure 자격 증명 노출

⚠️ 피해자 간 유출 경고

중요: Wiz Research는 피해자 간 유출이 발생하고 있음을 확인했습니다. 즉,

  • 한 피해자의 도난된 비밀이 다른 관련 없는 피해자가 소유한 저장소에 게시될 수 있음
  • GitHub 저장소에서 의심스러운 데이터를 발견한 경우, 다른 손상된 사용자의 데이터일 수 있음
  • 귀하의 데이터가 귀하가 소유하지 않은 저장소로 유출되었을 수 있음
  • 이는 귀속 및 사고 대응을 복잡하게 만듦

조사 시사점: 저장소에서 유출된 데이터를 검토할 때, 데이터가 실제로 귀하의 조직에 속하는지 또는 다른 피해자의 것인지 확인하십시오.

🔗 이전 공격과의 연관성

이 공격은 2025년 8월의 s1ngularity/Nx 손상과 직접적으로 연결되며, 초기 GitHub 토큰 도용으로 더 광범위한 공급망 공격이 가능해졌습니다. 많은 초기 Shai-Hulud 피해자는 s1ngularity 공격의 알려진 피해자였습니다. 보안 연구원들은 또한 캠페인 내에서 AI 생성 콘텐츠의 통합을 지적하며, 악성 bash 스크립트를 생성하는 데 LLM이 사용되었을 가능성이 중간 수준으로 있다고 평가합니다.

📅 공격 타임라인

원본 Shai-Hulud 캠페인:

  • 2025년 8월 26일: s1ngularity/Nx 손상 발생(선행 공격)
  • 2025년 9월 14일 17:58 UTC: 첫 번째 악성 패키지 rxnt-authentication 게시("Patient Zero")
  • 2025년 9월 15일: 보안 연구원에 의해 공격 탐지 및 보고
  • 2025년 9월 15~16일: 웜이 npm 생태계 전체로 빠르게 확산
  • 2025년 9월 16일: 180개 이상의 패키지 손상 확인
  • 2025년 9월 17일: 지속적인 모니터링 및 정리 노력
  • 2025년 9월 18일: v1.2.0 릴리스, 200개 패키지 추적 및 향상된 방지 도구

Shai-Hulud 2.0 캠페인:

  • 2025년 11월 21~23일: 악성 패키지가 npm 레지스트리에 업로드됨
  • 2025년 11월 24일: Wiz Research 및 Aikido에 의해 공격 탐지 및 보고
  • 2025년 11월 24일: v2.0.0 릴리스, 738개 이상의 패키지 추적 및 Shai-Hulud 2.0 탐지 기능
  • 진행 중: GitHub는 공격자가 만든 저장소를 계속 제거하고 있으며, 공격자는 계속 새로운 저장소를 생성함

빠른 시작

사전 요구 사항

  • Python 스캐너: PyYAML 필요 (pip install pyyaml)
  • Node.js 스캐너: js-yaml 필요 (npm install js-yaml)

Python 스캐너

root@kitploit:~
# 실행 가능하게 만들기
chmod +x shai_hulud_scanner.py

# 단일 package.json 스캔
python3 shai_hulud_scanner.py ./package.json

# 정확한 버전을 위해 package-lock.json 스캔
python3 shai_hulud_scanner.py ./package-lock.json

# 전체 프로젝트 디렉토리 스캔
python3 shai_hulud_scanner.py ./my-project

# 현재 디렉토리 스캔
python3 shai_hulud_scanner.py .

Node.js 스캐너

root@kitploit:~
# 먼저 종속성 설치
npm install

# 실행 가능하게 만들기
chmod +x shai_hulud_scanner.js

# 단일 package.json 스캔
node shai_hulud_scanner.js ./package.json

# 정확한 버전을 위해 package-lock.json 스캔
node shai_hulud_scanner.js ./package-lock.json

# 전체 프로젝트 디렉토리 스캔
node shai_hulud_scanner.js ./my-project

# 현재 디렉토리 스캔
node shai_hulud_scanner.js .

스캐너 기능

✅ 정확한 일치 탐지: 알려진 손상된 버전과 정확히 일치하는 패키지 식별

⚠️ 잠재적 위험 탐지: 동일한 이름이지만 다른 버전의 패키지 플래그 지정(여전히 위험할 수 있음)

🔍 이중 파일 지원: package.json(선언된 종속성) 및 package-lock.json(정확히 설치된 버전) 모두 스캔

📦 포괄적인 범위: package-lock.json 스캔에는 중첩된 종속성 및 전이 패키지 포함

🔄 재귀적 스캔: node_modules를 건너뛰면서 모든 하위 디렉토리 자동 스캔

📋 상세 보고: 패키지 이름, 버전, 종속성 섹션 및 영향을 받는 버전 표시

🔎 IoC 탐지: 원본 Shai-Hulud 및 Shai-Hulud 2.0 모두에 대한 손상 지표 식별:

  • 원본 Shai-Hulud: "postinstall": "node bundle.js" 후크, bundle.js 파일, shai-hulud-workflow.yml
  • Shai-Hulud 2.0: "preinstall" 후크, setup_bun.js, bun_environment.js, discussion.yaml, formatter_*.yml 워크플로
  • 공통: webhook.site 유출 엔드포인트 참조, SHA1HULUD 러너 패턴, Docker 권한 상승

출력 예제

🚨 심각 (손상된 패키지 발견):

root@kitploit:~
🚨 심각: 2개의 확인된 손상된 패키지를 발견했습니다:
   • @ctrl/deluge v7.2.2 (dependencies)
     영향을 받는 버전: 7.2.2, 7.2.1
   • ngx-bootstrap v19.0.3 (devDependencies)
     영향을 받는 버전: 18.1.4, 19.0.3, 20.0.4, 20.0.5, 20.0.6, 19.0.4, 20.0.3

⚠️ 경고 (버전 불일치):

root@kitploit:~
⚠️ 경고: 다른 버전의 패키지 1개를 발견했습니다:
   • @ctrl/deluge v7.2.0 (dependencies)
     알려진 영향을 받는 버전: 7.2.2, 7.2.1

✅ 깨끗함:

root@kitploit:~
✅ 영향을 받는 패키지가 없습니다

손상된 패키지가 발견된 경우

즉시 조치:

  1. 영향을 받는 프로젝트에서 모든 개발 작업 중단
  2. 손상된 패키지 제거: npm uninstall <package-name>
  3. npm 캐시 지우기: npm cache clean --force
  4. node_modules 삭제: rm -rf node_modules

자격 증명 교체:

  1. GitHub 개인 액세스 토큰
  2. npm 인증 토큰
  3. SSH 키
  4. API 키 (AWS, Atlassian, Datadog 등)

조사:

  1. GitHub에서 "Shai-Hulud" 라는 이름의 공개 저장소 또는 설명에 "Shai-Hulud"가 있는 저장소 확인
  2. "-migration" 접미사가 있는 저장소 확인 (원본 Shai-Hulud)
  3. GitHub 감사 로그에서 무단 저장소 생성 검토
  4. shai-hulud라는 이름의 브랜치 확인
  5. IoC(손상 지표) 스캔:
    • 원본 Shai-Hulud:
      • package.json 파일에서 "postinstall": "node bundle.js" 검색
      • bundle.js 파일 찾기(3MB 이상, 악성 페이로드 포함)
      • .github/workflows/shai-hulud-workflow.yml 파일 검사
    • Shai-Hulud 2.0:
      • package.json 파일에서 "preinstall" 후크 검색
      • setup_bun.js 및 bun_environment.js 페이로드 파일 찾기
      • 데이터 파일 확인: cloud.json, contents.json, environment.json, truffleSecrets.json
      • .github/workflows/discussion.yaml 검사(자체 호스팅 러너 포함)

구성

패키지 데이터는 affected_packages.yaml에 중앙 집중화되어 있습니다. 새로운 손상된 패키지를 추가하려면:

  1. affected_packages.yaml 편집
  2. 다음 형식으로 항목 추가:
    root@kitploit:~
    - name: "package-name"
      versions: ["1.0.0", "1.0.1"]
    
  3. Python 및 JavaScript 스캐너 모두 업데이트된 데이터를 자동으로 사용합니다.

이 중앙 집중식 접근 방식은 새로운 위협이 발견될 때 여러 파일을 업데이트할 필요를 없앱니다.

배포 옵션

보안 팀용

root@kitploit:~
# 중앙 스캔 스크립트 생성
curl -O https://your-domain.com/shai_hulud_scanner.py
chmod +x shai_hulud_scanner.py

# 여러 프로젝트 대량 스캔
for dir in /projects/*/; do
    echo "$dir 스캔 중"
    python3 shai_hulud_scanner.py "$dir"
done

CI/CD 통합

root@kitploit:~
# GitHub Actions 예제
- name: Shai-Hulud 패키지 스캔
  run: |
    curl -O https://your-domain.com/shai_hulud_scanner.js
    npm install js-yaml
    node shai_hulud_scanner.js .
    if [ $? -ne 0 ]; then
      echo "보안 경고: 손상된 패키지가 감지되었습니다!"
      exit 1
    fi

엔터프라이즈 배포

root@kitploit:~
# 보안 툴킷에 추가
cp shai_hulud_scanner.py /usr/local/bin/
cp shai_hulud_scanner.js /usr/local/bin/
cp affected_packages.yaml /usr/local/bin/

# 쉬운 액세스를 위한 별칭 생성
echo 'alias scan-shai="python3 /usr/local/bin/shai_hulud_scanner.py"' >> ~/.bashrc

기술 참고 사항

  • 대상 플랫폼: Linux, macOS 및 Windows(Shai-Hulud 2.0은 Windows 지원 추가)
  • 페이로드 크기: 3MB 이상 축소된 JavaScript 번들(원본), Shai-Hulud 2.0의 새로운 페이로드
  • 자가 전파: npm 생태계에서 첫 번째로 성공한 자가 복제 웜
  • 실행 단계: 원본은 postinstall 사용, Shai-Hulud 2.0은 preinstall 사용(빌드 환경에서 노출 증가)
  • 종속성: Python은 PyYAML 필요, Node.js는 js-yaml 필요
  • 안전: 읽기 전용 작업, 파일 수정 없음
  • 빠름: 대규모 코드베이스의 빠른 스캔에 최적화됨
  • 정확함: 보안 연구원(Wiz Research, Aikido)의 공식 IoC 목록 기반
  • AI 생성 구성 요소: 보안 연구원들은 악성 bash 스크립트의 일부를 생성하는 데 LLM이 사용되었을 가능성이 중간 수준이라고 평가
  • 지속성 메커니즘:
    • 원본: GitHub Actions 워크플로, 악성 브랜치 및 저장소 마이그레이션
    • Shai-Hulud 2.0: 자체 호스팅 러너, 토론 기반 워크플로, 포매터 워크플로
  • 클라우드 통합:
    • 원본: SDK 라이브러리 및 IMDS 엔드포인트를 사용하여 AWS 및 GCP 환경 대상
    • Shai-Hulud 2.0: 공식 SDK를 사용한 멀티 클라우드 타겟팅(AWS, Azure, GCP), 비밀 관리자 덤프

손상 지표(IoC)

원본 Shai-Hulud (2025년 9월):

  • 악성 postinstall 후크: package.json의 "postinstall": "node bundle.js"
  • 페이로드 파일: bundle.js (일반적으로 3MB 이상 축소된 JavaScript)
  • 유출 엔드포인트: webhook.site 도메인 참조
  • GitHub 워크플로: 지속성을 위한 .github/workflows/shai-hulud-workflow.yml
  • 저장소 명명: "Shai-Hulud" 또는 "-migration" 접미사가 있는 저장소
  • 브랜치 지표: 악성 커밋이 포함된 shai-hulud 브랜치

Shai-Hulud 2.0 (2025년 11월):

  • 악성 preinstall 후크: package.json의 "preinstall": "node setup_bun.js" 또는 "preinstall": "node bun_environment.js"
  • 새로운 페이로드 파일: setup_bun.js, bun_environment.js (bundle.js에 추가)
  • 데이터 파일: cloud.json, contents.json, environment.json, truffleSecrets.json
  • GitHub 워크플로:
    • .github/workflows/discussion.yaml (runs-on: self-hosted 및 RUNNER_TRACKING_ID: 0 포함)
    • .github/workflows/formatter_*.yml (패턴 일치, 비밀 유출에 사용됨)

두 변종 공통:

  • 유출 엔드포인트: webhook.site 도메인 참조
  • 저장소 명명: 이름 또는 설명에 "Shai-Hulud"가 있는 저장소

📚 문서

  • 릴리스 노트 v1.2.0 - 전체 변경 로그 및 새로운 기능
  • 보안 평가 - 포괄적인 보안 분석
  • 방지 가이드 - 490줄 이상의 통합 지침
  • GitHub Actions 워크플로 - 자동화된 CI/CD 보호

🛡️ v2.0.0의 새로운 기능

Shai-Hulud 2.0 탐지

  • Preinstall 후크 탐지: preinstall 스크립트 감지(Shai-Hulud 2.0 실행 단계)
  • 새로운 페이로드 파일 탐지: setup_bun.js 및 bun_environment.js 스캔
  • 데이터 파일 탐지: cloud.json, contents.json, environment.json, truffleSecrets.json 식별
  • GitHub 워크플로 스캔: discussion.yaml 및 formatter_*.yml 워크플로 패턴 탐지
  • 자체 호스팅 러너 탐지: 'SHA1HULUD' 러너 등록 식별
  • Docker 권한 상승 탐지: 권한 있는 컨테이너 실행 패턴 스캔
  • 하위 호환성: 원본 Shai-Hulud(2025년 9월) 지표 계속 탐지

확장된 패키지 데이터베이스

  • 738개 이상의 손상된 패키지 추적(200개에서 증가)
  • 데이터베이스에 1,291개의 고유 package@version 조합
  • 25,000개 이상의 영향을 받은 저장소 식별
  • 약 350명의 고유 사용자 손상

향상된 방지 제품군 (v1.2.0부터)

  • 다중 형식 구성: 다양한 사용 사례를 위한 JSON, YAML, CSV
  • GitHub Actions 통합: 자동화된 CI/CD 차단 워크플로
  • 독립형 차단 스크립트: prevention/block-shai-hulud.sh
  • 패키지 동기화 도구: 자동화된 위협 인텔리전스 업데이트

개선된 탐지 기능

  • 원본 및 Shai-Hulud 2.0 변종 모두에 대한 IoC 스캔
  • 변종 식별과 함께 심각도 분류(심각/높음/중간)
  • 다운로드 수 및 공격 벡터가 포함된 향상된 위협 인텔리전스
  • 멀티 클라우드 자격 증명 탐지: AWS, Azure, GCP 타겟팅 패턴

지원

문제나 질문이 있는 경우:

  • 보안 팀: [email protected]
  • 개발: [email protected]
도구 다운로드
  • .github/workflows/formatter_*.yml 파일 검사
  • 워크플로에서 'SHA1HULUD' 러너 이름 확인
  • Docker 권한 상승 명령어 찾기(docker run --rm --privileged -v /:/host)
  • 공통:
    • 코드 또는 네트워크 로그에서 webhook.site 참조 확인
    • 자체 호스팅 러너 등록 검토
    • 클라우드 제공업체 자격 증명 및 비밀 관리자 액세스 확인
  • 자체 호스팅 러너: 감염된 머신에 등록된 'SHA1HULUD' 러너
  • Docker 권한 상승: docker run --rm --privileged -v /:/host와 같은 명령어
  • 저장소 설명: 설명에 "Shai-Hulud"가 있는 저장소
  • 멀티 클라우드 타겟팅: AWS Secrets Manager, Google Secret Manager, Azure Key Vault 액세스 시도
  • 유출 엔드포인트: webhook.site 도메인 참조(원본과 동일)