React2Shell 취약점 완벽 가이드: Next.js 개발자가 지금 당장 해야 할 일
React2Shell(CVE-2025-55182)은 CVSS 10.0 원격 코드 실행 취약점입니다. Next.js와 React Server Components 영향 범위, 패치 방법, WAF 방어 전략을 상세히 안내합니다.
2026-02-17T12:31:24.231Z
2.15M 사이트를 위협하는 CVSS 10.0 취약점
2025년 12월 3일, React 생태계 역사상 가장 심각한 보안 취약점이 공개되었습니다. **React2Shell(CVE-2025-55182)**로 명명된 이 취약점은 CVSS 최고 점수인 10.0을 기록했으며, React Server Components의 Flight 프로토콜에 존재하는 안전하지 않은 역직렬화(deserialization) 결함을 통해 **인증 없이 원격 코드 실행(RCE)**이 가능합니다. 공개 직후 수 시간 만에 중국 연계 국가 위협 행위자들이 실제 공격을 시작했고, Cloudflare의 관측에 따르면 공개 후 8일간 5억 8,210만 건의 공격 시도가 탐지되었습니다.
Next.js App Router를 사용하는 모든 애플리케이션이 영향권에 있으며, 기본 설정만으로도 익스플로잇이 가능하다는 점에서 이 취약점의 위험성은 2021년 Log4Shell에 비견됩니다.
React Server Components의 새로운 공격 표면
React Server Components(RSC)는 서버에서 컴포넌트를 렌더링하여 클라이언트에 전송하는 혁신적인 아키텍처입니다. 이 과정에서 서버와 클라이언트 간 데이터 교환에 사용되는 것이 Flight 프로토콜인데, 이 프로토콜의 직렬화/역직렬화 과정에서 치명적인 결함이 발견되었습니다.
문제의 핵심은 React가 Flight 프로토콜로 들어오는 데이터를 역직렬화할 때 적절한 타입 검증을 수행하지 않았다는 것입니다. 공격자는 이를 악용하여 내부 가젯(gadget)을 체이닝해 Promise와 유사한 객체를 생성하고, 공격자가 제어하는 .then 속성을 통해 임의의 JavaScript 코드를 실행할 수 있었습니다. 역직렬화 과정에서 이러한 Promise 유사 객체가 자동으로 resolve되면서 코드 실행이 이루어지는 구조입니다.
실질적으로 이는 인증되지 않은 원격 공격자가 단일 HTTP 요청만으로 서버의 child_process 모듈을 로드하고 임의의 시스템 명령을 실행할 수 있음을 의미합니다. 테스트에서 익스플로잇 성공률은 거의 100%에 달했습니다.
영향 받는 버전과 범위
React2Shell의 영향 범위는 React 생태계 전반에 걸쳐 있습니다. 영향을 받는 패키지와 버전은 다음과 같습니다.
React 관련 패키지:
react-server-dom-webpack: 19.0.0react-server-dom-parcel: 19.0.0, 19.1.0~19.1.1, 19.2.0react-server-dom-turbopack: 영향 받는 19.x 버전
Next.js:
- 15.0.0~15.5.6
- 16.0.0~16.0.6
- 14.3.0-canary.77 이후의 canary 릴리스
기타 프레임워크:
- Vite RSC 플러그인, Parcel RSC 플러그인, React Router RSC 프리뷰, RedwoodSDK, Waku
특히 create-next-app으로 생성한 기본 프로젝트도 App Router를 기본으로 사용하기 때문에, 별도의 코드 변경 없이도 취약하다는 점이 중요합니다.
실제 공격 현황: 국가 수준의 위협
이 취약점의 심각성은 공개 후 벌어진 상황에서 여실히 드러났습니다. AWS 보안 블로그에 따르면, 공개 수 시간 만에 중국 연계 국가 위협 그룹인 Earth Lamia와 Jackpot Panda가 공격을 시작했습니다.
Google Threat Intelligence Group(GTIG)은 12월 12일까지 여러 중국 연계 위협 클러스터를 확인했습니다. UNC6595는 ANGRYREBEL.LINUX 악성코드를 배포했고, UNC6600은 MINOCAT 터널러를 전달했으며, UNC6603은 Cloudflare Pages와 GitLab을 활용하는 Go 기반 백도어 HISONIC의 업데이트 버전을 배포했습니다.
Cloudflare의 관측 데이터는 공격의 규모를 보여줍니다. 시간당 평균 349만 건의 공격 요청이 기록되었고, 피크 시간에는 1,272만 건에 달했습니다. 시간당 평균 3,598개의 고유 IP에서, 최대 6,387개의 고유 User-Agent를 사용한 공격이 관측되었습니다. 공격자들은 Nuclei 스캐너, 커스텀 React2ShellScanner, Burp Suite 등 다양한 도구를 활용했습니다.
공격 대상에는 우라늄과 핵연료 수출입을 담당하는 국가 기관, 정부 웹사이트, 학술 기관, SSL VPN 어플라이언스 등이 포함되었으며, 아시아 태평양(APAC) 지역의 AWS 및 알리바바 클라우드 인스턴스가 집중 타깃이 되었습니다.
즉시 패치하기: 버전별 업그레이드 가이드
가장 확실한 대응은 즉시 패치 버전으로 업그레이드하는 것입니다. 다음은 프레임워크별 패치 가이드입니다.
Next.js 업그레이드
# Next.js 15.x 사용자 (가장 가까운 패치 버전으로)
npm install next@15.5.7 react@latest react-dom@latest
# Next.js 16.x 사용자
npm install next@16.0.7 react@latest react-dom@latest
# Next.js 14.x canary 사용자 - 안정 버전으로 다운그레이드
npm install next@14.2.35
# TypeScript 사용자는 타입도 함께 업그레이드
npm install @types/react@latest @types/react-dom@latest
React 패키지 직접 사용 시
# react-server-dom-webpack
npm install react-server-dom-webpack@19.0.1
# react-server-dom-parcel (버전에 따라)
npm install react-server-dom-parcel@19.2.1
패치 후 추가 CVE 확인
CVE-2025-55182 패치 이후 추가로 발견된 취약점들(CVE-2025-55183, CVE-2025-55184, CVE-2025-67779)도 반드시 확인해야 합니다. 이들은 서버 함수 소스 코드 노출과 DoS 공격을 가능하게 하며, React 19.0.3, 19.1.4, 19.2.3으로의 추가 업그레이드가 필요합니다.
탐지와 방어: 다층 보안 전략
패치가 최우선이지만, 패치를 즉시 적용할 수 없는 환경이라면 다층 방어 전략이 필수적입니다.
WAF 규칙 적용
주요 클라우드 제공업체들은 이미 관리형 WAF 규칙을 배포했습니다.
- AWS WAF:
AWSManagedRulesKnownBadInputsRuleSet버전 1.24 이상에서 자동 보호 - Google Cloud Armor: CVE-2025-55182 탐지 및 차단 전용 규칙 배포
- Cloudflare: 무료 및 유료 티어 모두에서 6개의 보호 규칙 제공
- Vercel: 호스팅 프로젝트에 자동 WAF 보호 적용 (단, WAF만으로는 불완전)
공격 패턴 탐지
로그에서 다음 패턴을 모니터링해야 합니다.
# 의심스러운 User-Agent
Nuclei - CVE-2025-55182
React2ShellScanner/1.0.0
# 요청 헤더에서 탐지할 패턴
next-action 또는 rsc-action-id 헤더가 포함된 POST 요청
# 페이로드 내 의심 패턴
:constructor:constructor (역직렬화 공격 특성)
"status":"resolved_model"
$@ 직렬화 마커
"_prefix", "_formData" 등의 내부 필드
HTTP 403 에러의 급증은 WAF가 공격 시도를 차단하고 있음을 나타내므로 함께 모니터링해야 합니다.
취약 여부 스캔
Assetnote에서 공개한 오픈소스 react2shell-scanner를 사용하면 취약 여부를 확인할 수 있습니다. 이 스캐너는 특수 제작된 multipart POST 요청을 전송하고, 취약한 호스트는 E{"digest"가 포함된 500 상태 코드를 반환합니다.
임시 완화 조치
즉시 패치가 불가능한 경우, App Router를 사용하지 않는다면 Pages Router로 마이그레이션하는 것도 임시 방안이 될 수 있습니다. 또한 소스 코드에서 'use server' 지시어를 검색하여 서버 함수가 정의된 파일을 파악하고, 해당 엔드포인트에 대한 접근을 제한하는 것이 필요합니다.
장기적인 RSC 보안 전략
이번 사건은 React Server Components라는 새로운 아키텍처가 새로운 공격 표면을 만들었음을 보여줍니다. 장기적으로 다음 사항을 실천해야 합니다.
서버 컴포넌트의 모듈 시스템을 이해하고, 데이터베이스 패키지나 환경 변수가 Data Access Layer 외부에서 임포트되지 않도록 해야 합니다. Flight 프로토콜 엔드포인트를 핵심 보안 표면으로 간주하고 지속적으로 모니터링해야 합니다. Dependabot이나 Renovate 같은 자동화 도구를 설정하여 보안 패치를 신속하게 적용하는 파이프라인도 구축해야 합니다.
핵심 체크리스트
React2Shell은 Log4Shell 이후 웹 생태계에서 발생한 가장 심각한 취약점 중 하나입니다. Next.js 15.x 또는 16.x를 사용하고 있다면 지금 즉시 패치 버전으로 업그레이드하세요. WAF 규칙을 적용하되 이를 패치의 대체재로 여기지 마세요. 후속 CVE(55183, 55184, 67779)까지 모두 패치했는지 확인하고, 인터넷에 노출된 모든 RSC 엔드포인트를 인벤토리화하세요. Cloudflare가 강조했듯이, "네트워크 수준의 보호는 소스 코드 수준의 수정을 대체할 수 없습니다."
Start advertising on Bitbake
Contact Us