
Next.js 프로젝트에서 CVE-2025-55182 (React2Shell) 및 자격 증명 노출을 탐지하는 Bash 스크립트. 종속성 없음.
한국어 버전은 README.ja.md를 참조하세요.
CVE-2025-55182(React2Shell) 및 Next.js 프로젝트의 자격 증명 노출을 탐지하는 Bash 스크립트. 종속성 불필요.
CVSS: 10.0 (치명적) | CWE-502: 신뢰할 수 없는 데이터의 역직렬화 | SNORT SID: 65554
Next.js 서버 컴포넌트에서 신뢰할 수 없는 데이터의 역직렬화를 통한 인증되지 않은 원격 코드 실행. 공격자는 모든 Next.js 서버 컴포넌트 엔드포인트에 조작된 HTTP 요청을 보내며, 서버는 페이로드를 역직렬화하고 임의 코드를 실행합니다.
영향받는 버전:
| 패키지 | 취약한 범위 |
|---|---|
| Next.js | 15.0.0–15.0.4, 15.1.0–15.1.8, 15.2.0–15.2.5, 15.3.0–15.3.5, 15.4.0–15.4.7, 15.5.0–15.5.6, 15.6.0, 16.0.0–16.0.6 |
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
참고 자료:
1단계 — Next.js 버전: package.json, package-lock.json, yarn.lock을 읽어 확인된 Next.js 버전을 찾고 취약한 범위와 비교합니다.
2단계 — React 버전: React(19.0.0, 19.1.0, 19.1.1, 19.2.0)에 대해 동일한 접근 방식입니다.
3단계 — App Router / 서버 컴포넌트: app/ 디렉토리 및 "use server" 지시문을 감지합니다. 서버 컴포넌트가 활성화된 취약한 버전은 활성 공격 표면입니다.
4단계 — 자격 증명 노출: .env* 파일(.env.example 및 .env.sample 제외), next.config.*, 소스 파일을 스캔하여 API 키, 데이터베이스 URL, JWT 시크릿 및 하드코딩된 시크릿 접두사(sk-, AKIA, ghp_, npm_)를 찾습니다.
5단계 — SSH 키: 프로젝트 내에 커밋된 개인 키 파일(id_rsa, *.pem, *.p12 등) 및 .ssh/ 디렉토리를 찾습니다.
6단계 — 클라우드 구성: Docker Compose 파일에서 하드코딩된 시크릿, Kubernetes 매니페스트에서 서비스 계정 토큰 노출, AWS SDK 사용에서 IMDSv2 힌트를 확인합니다.
7단계 — IOC 확인: Cisco Talos 인텔리전스의 C2 IP 주소 및 의심스러운 /tmp/ 도트 파일 패턴(Linux)을 검색합니다.
C2 IP (Cisco Talos): 144.172.102.88 / 172.86.127.128 / 144.172.112.136 / 144.172.117.112
8단계 — 요약: CRITICAL/WARNING/INFO 개수와 수정 단계를 표시합니다.
설치가 필요 없습니다. 다운로드하여 실행하세요:
curl -O https://raw.githubusercontent.com/aliksir/nextjs-security-scanner/main/scan.sh
bash scan.sh [target-directory]
또는 클론:
git clone https://github.com/aliksir/nextjs-security-scanner.git
bash nextjs-security-scanner/scan.sh /path/to/your/nextjs-app
# 현재 디렉토리 스캔
bash scan.sh
# 특정 프로젝트 스캔
bash scan.sh /path/to/nextjs-app
# CI/CD에서 (0이 아닌 종료 코드 = 파이프라인 실패)
bash scan.sh . || exit 1
종료 코드:
0 — 문제 없음1 — 경고 (자격 증명 패턴 감지, 검토 필요)2 — 치명적 (취약한 버전 확인, 즉시 조치 필요)=== Next.js Security Scanner ===
Target: /home/user/myapp
Date: 2026-04-04 12:00
CVE: CVE-2025-55182 (React2Shell, CVSS 10.0)
[Phase 1] Next.js version check
[CRITICAL] Next.js v15.2.4 is vulnerable to CVE-2025-55182 (React2Shell)
-> package.json: "next": "^15.2.4"
-> This version allows unauthenticated RCE via deserialization of Server Components
[Phase 2] React version check
[CRITICAL] React v19.1.0 is in the CVE-2025-55182 vulnerable list
[Phase 3] App Router / Server Components detection
[INFO] App Router detected (app/ directory exists)
[CRITICAL] Vulnerable Next.js + Server Components = active attack surface for React2Shell
...
=== Scan Summary ===
CRITICAL : 3
WARNING : 0
INFO : 2
CRITICAL issues found. Immediate action required.
=== Remediation (CVE-2025-55182) ===
1. Upgrade Next.js to a patched version:
npm install next@latest
...
즉시 업그레이드:
npm install next@latest
npm install react@latest react-dom@latest
각 마이너 시리즈의 첫 번째 패치 버전은 https://github.com/vercel/next.js/releases에서 확인하세요.
악용이 의심되는 경우:
ps aux | grep -E '\.sh|\.py'
crontab -l; cat /etc/cron*
ss -tnp | grep -E '144\.172|172\.86'
ls -la /tmp/ | grep '^\.'
144.172.102.88, 172.86.127.128, 144.172.112.136, 144.172.117.112bash scan.sh [target-directory]
트리거 키워드: "next.js security check", "CVE-2025-55182", "React2Shell", "Next.js vulnerability scan"
스킬 래퍼는 claude-code/SKILL.md를 참조하세요.
이 도구는 방어적 보안 목적으로만 제공됩니다. 자신의 프로젝트 파일에 대해 로컬 전용 읽기 전용 검사를 수행합니다. 네트워크 연결이 이루어지지 않으며, 외부로 데이터가 전송되지 않으며, 익스플로잇이 실행되지 않습니다.
취약점 정보 및 IOC 데이터는 공개적으로 이용 가능한 출처(NVD, Cisco Talos)를 기반으로 합니다. 이 스캐너는 오탐을 생성하거나 특정 공격 벡터를 놓칠 수 있습니다. 전문적인 보안 감사, 침투 테스트 또는 공급업체 제공 보안 패치를 대체하지 않습니다.
사용에 따른 위험은 본인이 부담합니다. 저자는 이 도구 사용으로 인한 손해에 대해 어떠한 책임도 지지 않습니다.
MIT — LICENSE 참조