React와 Next.js에서 원격 코드 실행이 가능한 취약점 CVE-2025-55182(React2Shell)
(securitylabs.datadoghq.com)- React 서버 컴포넌트에서 인증 없이 임의 코드를 실행할 수 있는 원격 코드 실행(RCE) 취약점이 발견되어 즉시 업그레이드 필요
- Next.js도 영향을 받으며, App Router 기능을 사용하는 경우 취약함. Next.js는 이를 CVE-2025-66478로 추적 중임
- 취약점의 근본 원인은 서버 측 프로토타입 오염(server-side prototype pollution) 으로, 공격자가 JavaScript 객체의 프로토타입을 조작해
child_process.execSync등으로 명령 실행 가능 - 공개 PoC(개념증명) 코드가 빠르게 확산되었고, Datadog은 12월 5일 기준 800개 이상의 IP에서 실제 공격 시도를 탐지함
- CVSS 점수 10점으로 평가된 이 취약점은 Next.js 15.x~16.x 버전에서 특히 심각하며, 최신 패치 적용이 필수적임
주요 취약점 개요
- 12월 3일 React Server Components에서 인증 없이 임의 코드 실행이 가능한 취약점이 발견되어 CVE-2025-55182로 등록
- 취약점은 서버 측에서 실행되며, 공격자가 원격으로 코드를 실행할 수 있음
-
Next.js는 해당 취약한 컴포넌트를 포함하고 있어 영향을 받음
- Next.js는 CVE-2025-66478로 별도 관리 중이나, NVD에서는 이 CVE를 공식적으로 거부함
- CVSS 점수는 10/10으로, Datadog은 공격이 매우 간단하며 기본 템플릿으로 생성된 Next.js 앱에서도 재현 가능하다고 확인
- 12월 5일 기준, 무기화된 페이로드를 포함한 실제 공격 시도가 관찰됨
영향받는 버전 및 완화 방법
- 취약한 React 라이브러리:
-
react-server-dom-parcel,react-server-dom-webpack,react-server-dom-turbopack - 취약 버전: 19.0~19.2.0 / 패치 버전: 19.0.1, 19.1.2, 19.2.1
-
-
Next.js 영향 버전
- 취약: 15.x, 16.x, 14.3.0-canary.77 이후
- 패치: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
-
npm audit명령으로 취약 여부 확인 가능 - 해결책은 패치된 버전으로 업그레이드하는 것
취약점 분석 및 PoC
- 12월 3일 React 저장소에 패치 코드가 커밋됨
- 수정 내용은
requireModule함수에서 객체 속성 존재 여부를 검사하도록 변경
- 수정 내용은
- 이 취약점은 서버 측 프로토타입 오염 유형으로, 객체의 프로토타입을 오염시켜 임의 코드 실행 가능
- 공개된 PoC:
- 첫 번째 PoC(
ejpir/CVE-2025-55182-poc)는 비작동 상태 - 두 번째 PoC(
msanft/CVE-2025-55182)는 기본 Next.js 앱에서도 작동 - 12월 5일 원 보고자 Lachlan Davidson이 세 가지 변형의 공식 PoC를 공개
- 첫 번째 PoC(
실제 공격 활동
- Datadog은 12월 3일 22시(UTC)부터 스캐닝 활동을 탐지
- 12월 5일 기준 800개 이상의 IP에서 스캔 및 공격 시도 확인
- 두 개 이상의 조직이 공격 대상이 되었으며, 12월 4일 이후 지속적 활동 관찰
- 공격 흐름:
- 초기에는 비작동 PoC 기반 스캔
- 이후 Moritz Sanft의 PoC, 마지막으로 Davidson의 PoC 순으로 페이로드 교체
- 관찰된 페이로드:
-
/etc/passwd읽기,whoami실행,curl·wget을 통한 원격 스크립트 다운로드 등 - 일부는 환경 변수(
.env) 탈취 및 시스템 정보 수집 기능 포함
-
서버 측 프로토타입 오염 개념
- CWE-1321 유형으로, 객체 프로토타입 속성을 잘못 제어할 때 발생
- 일반적으로 프론트엔드에서 XSS로 악용되지만, 서버 측에서는 RCE나 파일 읽기로 이어질 수 있음
- 예시 코드에서
__proto__를 통한 오염으로Object.prototype이 수정되어, 이후 생성된 객체 모두 영향을 받음 - 결과적으로
spawnSync('sh')호출 시 악성 명령이 입력으로 전달되어 실행됨
Datadog의 탐지 및 방어 기능
-
Datadog Code Security는 GitHub 또는 런타임에서 취약 라이브러리를 탐지
- CVE-2025-55182 또는 CVE-2025-66478 관련 검색 기능 제공
- Datadog App and API Protection (AAP) 은 런타임에서 공격 차단 가능
-
Datadog Workload Protection은 Node 프로세스에서
wget,curl,bash등 명령 실행을 탐지하는 커스텀 규칙 제공
참고 자료
- 공식 권고: React, Next.js
- 클라우드 제공자 대응: AWS, Vercel, Google Cloud, Akamai, Cloudflare
- 보안업체 분석: Wiz, Tenable, SearchLight Cyber
- CERT 경고: CERT-EU, CERT-SE, CERT-AU
- 공개 스캐너: assetnote/react2shell-scanner
Vercel 팀에서 해당 이슈 버전을 한번에 업데이트 하는 npx command 배포 했더라고요.
npx fix-react2shell-next