
"조작된 HTTP 요청 하나만으로 서버 전체가 손상될 수 있습니다." — React Security Team, 2025년 12월
심각도: 치명적 | CVSS v3.1: 10.0 (최대) | 상태: 활발히 악용 중
React2Shell은 React Server Components(RSC) — 브라우저 대신 서버에서 웹 앱의 일부를 실행하게 해주는 최신 기능 — 에서 발견된 치명적인 보안 취약점입니다.
이 결함으로 인해 인터넷상의 모든 공격자가 — 로그인 없이, 특별한 권한 없이, 시스템에 대한 사전 지식 없이 — 단 하나의 악성 HTTP 요청을 서버에 보내 서버에서 원하는 모든 코드를 실행할 수 있습니다. 즉, 데이터를 탈취하거나 악성코드를 설치하거나 랜섬웨어로 파일을 잠그거나 서버를 완전히 장악할 수 있습니다.
이렇게 생각해 보세요: 서버에는 신뢰할 수 있는 방문자만 열 수 있도록 설계된 문이 있는데, 알고 보니 특정한 방식으로 노크만 하면 누구나 들어올 수 있다는 것입니다.
| 속성 | 값 |
|---|
| CVE ID | CVE-2025-55182 (React2Shell이라고도 함) |
| 심각도 | 치명적 — 원격 코드 실행(RCE) |
| CVSS v3.1 점수 | 10.0 / 10.0 (최대 가능) |
| CVSS v4 점수 | 9.3 / 10.0 |
| 취약점 유형 | CWE-502 — 신뢰할 수 없는 데이터의 역직렬화 |
| 공격 방식 | 단일 HTTP POST 요청, 인증 불필요 |
| 발견자 | Lachlan Davidson (보안 연구원) |
| 공개일 | 2025년 12월 3일 |
| 악용 상태 | 공개 익스플로잇 사용 가능 — 공격자에 의해 활발히 악용 중 |
| 관련 CVE | CVE-2025-66478 (Next.js — 중복 확인됨) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### 영향을 받는 프레임워크
| 프레임워크 / 도구 | 영향 범위 |
|----------------------------|----------------------------------------------------|
| **Next.js 15.x – 16.x** | App Router 전용 — Pages Router는 **영향을 받지 않음** |
| **React Router RSC** | 불안정 / 미리보기 채널 전용 |
| **Redwood SDK** | RSC 모드 전용 |
| **Waku** | RSC가 활성화된 모든 버전 |
| **Expo** | RSC 미리보기 빌드 전용 |
| **Vite RSC Plugin** | 모든 통합 |
| **Parcel RSC Plugin** | 모든 통합 |
| **사용자 지정 RSC 설정** | RSC Flight 역직렬화를 사용하는 모든 서버 |
> ⚠️ **중요:** Server Actions 또는 Server Functions를 명시적으로 사용하지 않더라도 취약합니다. 앱에서 React Server Components가 활성화되어 있는 한 말이죠.
> ✅ **영향 없음:** Pages Router만 사용하는 앱, 또는 서버 사이드 React를 전혀 사용하지 않는 앱.
---
## 왜 이렇게 위험한가?
React2Shell이 특히 심각한 세 가지 이유는 다음과 같습니다:
1. **인증 불필요.** 인터넷의 누구나 이 공격을 시도할 수 있습니다. 계정, 토큰, 사전 접근 권한이 필요 없습니다.
2. **기본 설치에서 작동.** `create-next-app`으로 만든 완전히 새로운 Next.js 앱은 사용자 지정 구성이 전혀 없어도 즉시 공격이 가능합니다. 개발자가 잘못된 것을 하지 않아도 취약할 수 있습니다.
3. **거의 100% 신뢰성.** 보안 연구원들은 패치되지 않은 서버를 대상으로 이 익스플로잇이 거의 항상 작동한다는 것을 확인했습니다.
---
## 공격은 어떻게 작동하나요?
### 근본 원인 — 쉽게 설명하면
React 서버가 클라이언트로부터 데이터를 수신하면 다음에 무엇을 해야 하는지 이해하기 위해 해당 데이터를 처리(역직렬화)합니다. 문제는 React가 **데이터가 안전하거나 합법적인지 전혀 확인하지 않는다**는 것입니다. 도착하는 것을 맹목적으로 신뢰하기 때문입니다.
공격자는 서버 내부의 JavaScript 동작을 가로채는 특수하게 조작된 데이터를 전송하여 이를 악용하며, 궁극적으로 자신의 코드를 주입하고 실행할 수 있게 됩니다.
### 기술적 설명
이 익스플로잇은 **프로토타입 오염(prototype pollution)** 이라는 기법을 사용합니다:
1. 공격자는 아무 RSC 엔드포인트로 조작된 HTTP POST 요청을 전송합니다(특별한 URL이 필요 없습니다).
2. React Flight Protocol 파서는 구조적 검증 없이 페이로드를 처리합니다.
3. 악성 페이로드는 모든 다른 객체가 상속하는 기본 JavaScript 객체인 `Object.prototype.then`을 오염시킵니다.
4. 이로써 공격자는 JavaScript의 `Function` 생성자에 접근할 수 있게 됩니다.
5. 공격자는 `Function` 생성자를 사용하여 Node.js 서버 프로세스 권한으로 임의 코드를 실행합니다.```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### 공격의 형태```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
I don't see any content after "INPUT:" — the chunk text appears to be missing from the request. Please provide the actual Markdown content of chunk 9, and I'll translate it into Korean.```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **법적 경고:** 소유하지 않았거나 명시적 서면 승인을 받지 않은 시스템에는 사용하지 마십시오.
---
## 수정된 버전 — 지금 패치하세요
### React RSC 패키지
| 패키지 | 패치된 버전 |
|------------------------------|------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **권장 사항:** 관련 후속 취약점(CVE-2025-55183, CVE-2025-55184, CVE-2025-67779)까지 해결하려면 **19.2.3**으로 업그레이드하세요.
### Next.js
| 현재 버전 | 업그레이드 대상 |
|--------------|-------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## 자신을 보호하는 방법 — 단계별 가이드
아래 단계를 **순서대로** 따르세요. 1단계와 2단계는 필수입니다. 나머지는 추가 방어 계층을 제공합니다.
### 1단계 — React 패키지 업그레이드(가장 중요)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### Step 3 — WAF 보호 추가(심층 방어)
| Cloud Provider | Action Required |
|----------------------|-------------------------------------------------------------------------------------------|
| **AWS WAF** | `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ 활성화 — React2Shell 규칙 포함 |
| **AWS Network Firewall** | Active Threat Defense 관리 규칙 활성화(MadPot을 통해 자동 업데이트) |
| **Google Cloud Armor** | 콘솔에서 React2Shell 규칙 세트 배포 |
| **Cloudflare** | WAF 규칙 `react2shell-cve-2025-55182` — Pro+ 요금제에 자동 적용 >
> ⚠️ **WAF 규칙만으로는 충분하지 않습니다.** 모든 페이로드 변형을 차단할 수는 없습니다. 패키지를 패치하는 것이 유일한 완전한 해결책입니다.
### Step 4 — 즉시 패치할 수 없는 경우
- 서버에서 RSC Flight 엔드포인트를 일시적으로 **비활성화**하세요.
- 이렇게 하면 패치를 적용할 때까지 공격 표면이 줄어듭니다.
### Step 5 — 이미 공격을 받았는지 확인
- 패치 날짜 이전에 RSC/flight 엔드포인트로 향하는 의심스러운 POST 요청이 있는지 **서버 로그를 감사**하세요.
- 비정상적인 외부 연결, 새 사용자 계정, 예상치 못한 프로세스를 찾아보세요.
### Step 6 — 침해를 가정한 예방 조치
- **모든 비밀 정보를 교체**하세요 — API 키, 데이터베이스 자격 증명, 세션 토큰, 환경 변수.
- 취약한 버전을 실행한 모든 서버는 잠재적으로 손상된 것으로 취급하세요.
---
## 실제 공격 활동
### 규모 (2026년 4월 기준)
| Metric | Figure |
|--------------------------|-------------------------------------|
| 총 공격 세션 | **810만 건 이상** (GreyNoise) |
| 일일 공격량 | **300,000 – 400,000** 요청/일 |
| 일일 최대 공격량 | **430,000건 이상** (2025년 12월 말) |
| 고유 공격자 IP | **8,163개** (101개국) |
| 최초 감염까지 걸리는 시간 | 서버 노출 후 **2분** |
AWS 단독으로 관찰된 공격자 인프라의 3분의 1 이상을 차지합니다. 즉, 공격자들은 대부분 클라우드 호스팅 서버에서 운영되며 이러한 공격을 대규모로 수행하고 있습니다.
### 누가 공격하고 있나?
이 취약점을 악용하는 여러 뚜렷한 위협 행위자 그룹이 확인되었습니다:
**중국 연계 (국가 후원)**
- **Earth Lamia** (Google에서는 UNC5454로도 추적) — 중국 국가안전부(MSS)와 연계됨
- **Jackpot Panda** — AWS와 Google 위협 인텔리전스 팀 모두가 식별
- 또한 다른 최근 취약점들을 동시에 병행 악용 중
**이란 연계**
- 2025년 12월 Google GTIG가 관찰한 이란 관련 행위자
**북한 (DPRK)** ⚠️ *신규 — 2026년 1월*
- **Contagious Interview** 캠페인과 연관된 지표 (소프트웨어 개발자를 대상으로 하는 장기간 진행된 북한 작전)
- **EtherRAT** 배포 — **블록체인 기반 C2 인프라**를 사용하는 새로운 백도어로, 표준 IP/도메인 차단으로 차단하기 매우 어려움
**사이버 범죄자 / 금전적 동기**
- 랜섬웨어 운영자가 초기 침투에 React2Shell을 사용하는 것이 확인됨 ⚠️ *신규 — 2026년 12월*
- 초기 악용 후 **1분 이내**에 랜섬웨어가 배포된 사례가 최소 한 건 문서화됨
- 기회주의적 캠페인 전반에 걸쳐 암호화폐 채굴(XMRig)이 널리 배포됨
### 실제 환경에서 관찰된 악성코드
| Malware / Tool | What It Does | Who Uses It |
|-----------------------------------|---------------------------|----------------------------------|
| SNOWLIGHT | 추가 악성코드 다운로드 | Earth Lamia (중국) |
| MINOCAT | 숨겨진 터널 생성 | Earth Lamia (중국) |
| HISONIC | 지속성을 위한 백도어 | Earth Lamia (중국) |
| COMPOOD | 재부팅 후에도 생존 | Earth Lamia (중국) |
| **EtherRAT** ⚠️ *신규* | 블록체인 C2 백도어 | DPRK / Contagious Interview |
| XMRig | 암호화폐 채굴 | 여러 그룹 |
| Cobalt Strike | 원격 제어 프레임워크 | "emerald" 및 "nuts" 캠페인 |
| Sliver / Nezha | C2 프레임워크 | "emerald" 캠페인 |
| Fast Reverse Proxy (FRP) | 네트워크 터널링 | 여러 그룹 |
| Secret-Hunter | 자격 증명 탈취 | "nuts" 캠페인 |
| Mirai / Rondo 봇넷 | DDoS / 지속성 | 기회주의적 행위자 |
| MeshAgent (RMM 도구) | 원격 관리 | 여러 그룹 (지속성) |
| **인메모리 Next.js 웹 셸** ⚠️ *신규* | 은밀한 지속성 | 여러 행위자 (GTIG 확인) |
> 💡 **인메모리 웹 셸이란 무엇인가요?** 서버 메모리에서 완전히 실행되는 백도어로, 디스크에 파일을 남기지 않아 표준 안티바이러스나 파일 스캐닝 도구로 탐지하기가 매우 어렵습니다.
> 💡 **블록체인 기반 C2란 무엇인가요?** 일반적인 IP 주소나 도메인(차단 가능)을 통해 공격자 서버에 연결하는 대신, EtherRAT는 블록체인 트랜잭션에서 명령을 수신합니다. 이는 쉽게 중단하거나 차단할 수 없는 분산 시스템입니다.
---
## 탐지 도구
### Microsoft Defender for Cloud
보안 탐색기 갤러리에서 두 가지 전용 템플릿을 사용할 수 있습니다:
- *React2Shell — CVE-2025-55182에 취약한 컨테이너 이미지를 실행하는 인터넷 노출 컨테이너*
- *React2Shell — CVE-2025-55182에 취약한 인터넷 노출 가상 머신*
Microsoft 보안 노출 관리(Microsoft Security Exposure Management)는 또한 클라우드 인프라 전반의 React2Shell 공격 경로를 자동으로 매핑합니다.
### GreyNoise
바로 사용할 수 있는 차단 템플릿이 제공됩니다: **React Server Components Unsafe Deserialization CVE-2025-55182 RCE Attempt**
전체 공격자 핑거프린트 데이터셋(ASN, JA4T, JA4H)이 공개적으로 제공됩니다:```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
Runtime Vulnerability Analytics 사용 — CVE-2025-55182로 필터링하여 환경 내 취약한 React 또는 Next.js 패키지를 식별하세요.
공개 후 약 145개의 가짜 및 작동하지 않는 익스플로잇 도구가 온라인에 유포되었습니다 — 그중 다수는 AI로 생성되었습니다. 검증되지 않은 도구 사용의 위험:
검증되고 커뮤니티에서 신뢰받는 출처의 스캐너만 사용하세요.
| CVE ID | 설명 | 심각도 | 상태 |
|---|---|---|---|
| CVE-2025-55182 | RSC 원격 코드 실행 — 이 취약점 | 10.0 | 패치됨 |
| CVE-2025-66478 | Next.js 다운스트림 RCE (중복으로 확인됨) | 10.0 | 거부됨 — 중복 |
| CVE-2025-55183 | RSC를 통한 소스 코드 노출 | 5.3 | 19.2.2+에서 패치됨 |
| CVE-2025-55184 | RSC 파서의 무한 루프로 인한 서비스 거부(DoS) | 7.5 | 19.2.2+에서 패치됨 |
| CVE-2025-67779 | DoS — CVE-2025-55184의 불완전한 수정 | 7.5 | 19.2.3+에서 패치됨 |
| CVE-2026-23864 | 추가 RSC 서비스 거부(DoS) (2026년 1월) | 7.5 | 패치됨 |
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
---
## 참고 자료
| 출처 | 링크 |
|---------------------------------|-----------------------------------------------------------------------------------------------|
| React 공식 권고 | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell (발견자) | https://react2shell.com |
| Next.js 권고 | https://nextjs.org/blog/CVE-2025-66478 |
| Wiz 심층 분석 | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| Microsoft 보안 블로그 | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Google 위협 인텔리전스 | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| AWS 보안 게시판 | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| AWS China-Nexus 귀속 분석 | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Trend Micro 연구소 | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| GreyNoise Observation Grid | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Darktrace 분석 | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Dynatrace 권고 | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — 랜섬웨어 | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — DPRK 활동 | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| NVD 항목 | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**취약점 공로:**
**Lachlan Davidson**의 최초 발견 및 책임 있는 공개 (2025년 11월 29일).
---
*최종 업데이트: 2026년 4월 16일*
*본 문서는 교육 및 방어적 보안 목적으로만 제공됩니다.*