이롭게 현명하게
[React] React Server Components 보안 취약점 본문

목차
React 보안 취약점
Next.js 보안 취약점
Vercel 보안 취약점
요약
12월 3일 리액트 공식 블로그에 React Server Component 관련 보안 취약점이 발표되었다.
이어 12월 6일에는 Next.js 공식 블로그에서도 관련된 취약점을 공지하였다.
두 팀이 비슷한 시기에 공지를 낸 것은 단순한 패치가 아닌 심각한 영향이 있는 취약점이기 때문이다.
특히 Next.js는 React Server Component에 의존하는 구조로 React에서 발생한 취약점이 그대로 Next.js에도 영향을 미치는 연관성이 있기 때문이다.

https://www.dailysecu.com/news/articleView.html?idxno=203111
[단독] “Log4j 이후 ‘최악의 취약점’ 터졌다”...중국 해커, React2Shell RCE 실제 공격 테스트 돌입,
2025년 IT·보안 커뮤니티는 지금 ‘React2Shell(리액트투쉘)’이라는 이름 하나로 술렁이고 있다. CVSS 10.0 등급이 부여된 신규 취약점 CVE-
www.dailysecu.com

KISA 보호나라&KrCERT/CC
KISA 보호나라&KrCERT/CC
www.krcert.or.kr:443
[사건 TimeLine]
- 11월 29일: Lachlan Davidson이 취약점 보고 (Meta Bug Bounty)
- 11월 30일: Meta 보안팀 확인, React 팀과 패치 작업 시작
- 12월 1일: 패치 생성 및 호스팅 제공업체와 검증·완화 작업 진행
- 12월 3일: npm 배포 및 CVE-2025-55182 공개
[React 보안 취약점]

https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Critical Security Vulnerability in React Server Components – React
The library for web and native user interfaces
react.dev
2025년 12월 3일 React 공식 블로그에서 보안 관련 공지가 발표되었다.
이번 취약점은 단순 버그가 아닌 React Server Component (RSC)에 인증되지 않은 원격 코드를 실행할 수 있는 심각한 보안 취약점이다.
즉 해커가 인증받지 않은 코드를 원격으로 실행할 수 있다는 것이다.
그렇게 되면 내 서버에서 허용하지 않은 남의 코드가 실행되는 상황이 발생할 수 있다.
[취약점이 발견된 React 버전]

RSC 취약점이 존재하는 React 버전은 다음과 같다.
- 19.0
- 19.1.0
- 19.1.1
- 19.2.0
그뿐만 아니라 RSC 빌드, 런타임에 사용되는 패키지들의 동일 버전에서도 문제가 확인되었다.
이 버전들을 사용하는 모든 RSC 기반 프로젝트는 취약할 수 있다.
[취약점이 수정된 React 버전]
React 19.x 라인의 각 취약 버전은 아래 패치 버전에서 수정되었다.
<취약점이 수정된 버전>
- 19.0.1 (19.0 라인 패치)
- 19.1.2 (19.1 라인 패치)
- 19.2.1 (19.2 라인 패치)
즉 React 19.0.1 / 19.1.2 / 19.2.1 중 하나 이상으로 업그레이드하면 안전하다.
서버를 사용하지 않는 앱은 안전하다.
React 코드를 브라우저에서만 실행(Client Side Rendering : CSR)하고, 서버에서 React를 렌더링 하지 않는다면 영향은 없다.
18 버전은 서버 컴포넌트가 없어서 괜찮다.
[영향을 받는 프레임워크 및 번들러]

일부 React 프레임워크나 번들러가 취약한 React 패키지에 의존(dependency)하거나 peer dependency로 연결되어 있거나, 해당 패키지를 자체적으로 포함하고 있다.
<영향을 받는 프레임워크 / 번들러 목록>
- Next.js
- React Router
- Waku
- Parcel RSC 지원 패키지 @parcel/rsc
- Vite RSC 지원 패키지 @vite/plugin-rsc
즉 이 프레임워크나 플러그인을 사용하는 프로젝트라면 직접 React RSC 패키지를 설치하지 않았더라도 취약점에 영향받을 수 있다.
현재까지는 구체적인 패치 방법이 일부 프레임워크, 번들러에 대해 나오지 않아 추후 공지가 있을 예정이다.
[호스팅 제공 업체의 임시 완화책]

이번 RSC 취약점과 관련해 일부 호스팅 제공업체(Vercel, Netlify, AWS 등)와 협력하여 임시 완화 조치를 적용했다.
여기서 주의해야 할 점은 호스팅사가 제공한 임시 조치는 시간 벌기용일뿐, 근본적인 해결책은 아니므로 반드시 React와 RSC 패치를 적용해야 한다.
근본적인 해결책은 React RSC 관련 패키지를 패치된 버전으로 즉시 업데이트하는 것뿐이다.
[취약점 개요]

React Server Funtions (RSF)는 클라이언트가 서버에서 함수를 호출할 수 있도록 한다.
쉽게 말하면 브라우저에서 "서버에서 이 함수 좀 실행해 줘"라고 요청할 수 있는 구조다.
React는 서버와 클라이언트에서 동작할 수 있도록 연동지점(integration points)과 도구를 제공한다.
Next.js, Vite, Parcel 같은 프레임워크 / 번들러들이 이 기능을 이용해 React 코드를 서버와 클라이언트에서 동시에 실행할 수 있게 한다.
서버에서 React는 HTTP 요청을 함수 호출로 변환하고 필요한 데이터를 클라이언트에게 반환한다.
공격자가 인증 없이 (Server Function Endpoint 접근 권한 없이) 악의적인 HTTP 요청을 만들 수 있다.
이 요청이 서버에서 React에 의해 역직렬화(deserialized)될 때, 서버에서 원하지 않는 코드가 실행될 수 있다.(RCE : Remote Code Excution)
[환경별 업데이트 지침]
- Next.js 업데이트
- React Router 업데이트
- Expo / Redwood SDK / Waku 업데이트
- @vitejs/plugin-rsc
- react-server-dom-parcel
- react-server-dom-turbopack
- react-server-dom-webpack
1. Next.js 업데이트
모든 사용자들은 자신이 사용하고 있는 버전의 최신 버전으로 업데이트해야 한다.
npm install next@15.0.5 // for 15.0.x
npm install next@15.1.9 // for 15.1.x
npm install next@15.2.6 // for 15.2.x
npm install next@15.3.6 // for 15.3.x
npm install next@15.4.8 // for 15.4.x
npm install next@15.5.7 // for 15.5.x
npm install next@16.0.7 // for 16.0.x
만약 Next.js 14.3.0-canary.77 이상의 버전 사용자는 안정(stable) 버전 14.x로 다운그레이드해야 한다.
canary는 실험용 버전으로 안정성을 위해 패치가 적용된 stable로 다운그레이드해야 안전하다.
npm install next@14
자세한 내용은 Next.js 변경 로그를 확인해 보세요. [Next.js 변경 로그 확인하기]
Security Advisory: CVE-2025-66478
A critical vulnerability (CVE-2025-66478) has been identified in the React Server Components protocol. Users should upgrade to patched versions immediately.
nextjs.org
2. React Router
React Router에서 RSC 관련 API를 사용한다면 아래 패키지들을 최신 버전으로 업데이트해야 한다.
npm install react@latest
npm install react-dom@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-webpack@latest
npm install @vitejs/plugin-rsc@latest
3. Expo
Expo 환경에서는 공식 문서를 참고해서 패치 적용 방법을 확인해야 한다.
4. Redwood SDK
rwsdk ≥ 1.0.0-alpha.0 이상이어야 한다.
최신 베타 버전 설치 :
npm install rwsdk@latest
최신 react-server-dom-webpack 업데이트 :
npm install react@latest react-dom@latest react-server-dom-webpack@latest
자세한 마이그레이션 지침은 Redwood 문서를 참조하세요. [Redwood 문서 참조]
5.Waku
최신 react-server-dom-webpack 업데이트 :
npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
자세한 마이그레이션 지침은 Waku 문서를 참조하세요. [Waku 문서 참조]
6. @vitejs/plugin-rsc
RSC 플러그인 업데이트
npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest
7. react-server-dom-parcel
최신버전으로 업데이트
npm install react@latest react-dom@latest react-server-dom-parcel@latest
8. react-server-dom-turbopack
최신버전으로 업데이트
npm install react@latest react-dom@latest react-server-dom-turbopack@latest
9. react-server-dom-webpack
최신 버전으로 업데이트
npm install react@latest react-dom@latest react-server-dom-webpack@latest
[Next.js 보안 취약점]

https://nextjs.org/blog/CVE-2025-66478
Security Advisory: CVE-2025-66478
A critical vulnerability (CVE-2025-66478) has been identified in the React Server Components protocol. Users should upgrade to patched versions immediately.
nextjs.org
https://www.cve.org/CVERecord?id=CVE-2025-55182
https://www.cve.org/CVERecord?id=CVE-2025-55182
www.cve.org
https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp
RCE in React Server Components
A vulnerability affects certain React packages<sup>1</sup> for versions 19.0.0, 19.1.0, 19.1.1, and 19.2.0 and frameworks that use the affected packages, including Next.js 15.x and 16.x using the A...
github.com
React Server Component 취약점은 React 자체에서 발생했지만 RSC 기능을 기반으로 동작하는 Next.js도 동일하게 영향받는다.
Next.js는 서버에서 React 코드를 실행하기 때문에 RSC의 취약점이 그대로 전파된다.
이 취약점은 CVSS 10.0등급으로 보안 취약점 중 가장 심각한 등급이다.
패치되지 않으면 서버에서 공격자가 마음대로 코드를 실행할 수 있다.(RCE)
React 팀은 CVE-2025-55182를 발표했고, Next.js팀은 CVE-2025-66478을 발표했다.
[추가] 12월 6일 Next.js 앱을 업데이트하는 패키지를 공개했다.
[영향을 받는 Next.js 버전]
RSC를 사용하는 App Router 기반으로 앱이 영향을 받는다.
<영향을 받는 버전>
- Next.js 15.x
- Next.js 16.x
- Next.js 14.3.0-canary.77 및 이후 Canary 릴리스
<영향을 받지 않는 버전>
- Next.js 13.x
- Next.js 14.x stable
- Pages Router 기반 앱
- Edge Runtime
<수정된 버전(Fixed Versions)>
이 취약점은 다음 패치된 Next.js 버전에서 해결되었다.
- 15.0.5
- 15.1.9
- 15.2.6
- 15.3.6
- 15.4.8
- 15.5.7
- 16.0.7
Next.js 15 및 16에 대해 패치된 canary릴리스도 출시했다.
- 15.6.0-canary.58(15.x canary 릴리스용)
- 16.1.0-canary.12(16.x canary 릴리스용)
이러한 버전에는 강화된 React Server Components 구현이 포함되어 있다.
[필요한 조치]

모든 사용자들은 릴리스 라인의 최신 패치 버전으로 업그레이드해야 한다.
npm install next@15.0.5 # for 15.0.x
npm install next@15.1.9 # for 15.1.x
npm install next@15.2.6 # for 15.2.x
npm install next@15.3.6 # for 15.3.x
npm install next@15.4.8 # for 15.4.x
npm install next@15.5.7 # for 15.5.x
npm install next@16.0.7 # for 16.0.x
npm install next@15.6.0-canary.58 # for 15.x canary releases
npm install next@16.1.0-canary.12 # for 16.x canary releases
Next.js 14.3.0-canary.77 또는 이후의 canary 릴리스를 사용하는 경우 최신 안정 버전인 14.x 릴리스로 다운그레이드해야 한다.
Partial Prerendering(PPR)을 사용하기 위해 canary를 사용하는 사람들은 취약점이 수정된 canary를 사용해야 한다.
<취약점이 수정된 버전>
- 15.6.0-canary.58
만약 어떠한 이유로 가장 최신 canary로 업데이트하기 어렵다면 어떻게 패치를 적용할지 아래 글을 참고하면 된다.
https://github.com/vercel/next.js/discussions/86813
이 명령어는 위에서 권장하는 버전에 따라 버전을 확인하고 결정적 버전 상향 조정을 수행할 수 있는 대화형 도구를 실행하는 명령어이다.
npx fix-react2shell-next
- 개발자가 사용하는 Next.js / React 관련 패키지 버전을자동으로 체크
- 어떤 버전으로 업그레이드해야 안전한지 알려준다
- 자동으로 버전 업그레이드까지 도와주는 도구를 제공
[자세한 내용] : https://github.com/vercel-labs/fix-react2shell-next
GitHub - vercel-labs/fix-react2shell-next: One command to fix CVE-2025-66478 (React 2 Shell RCE) in your Next.js / React RSC app
One command to fix CVE-2025-66478 (React 2 Shell RCE) in your Next.js / React RSC app. - vercel-labs/fix-react2shell-next
github.com
임시 조치는 없다.
업데이트가 필수이다.
[Vercel 보안 취약점]

https://vercel.com/kb/bulletin/react2shell
React2Shell Security Bulletin | Vercel Knowledge Base
CVE-2025-55182 is a critical vulnerability in React, Next.js, and other frameworks that requires immediate action
vercel.com
12월 8일 Vercel 또한 이번 RSC 보안 취약점에 관한 내용이 올라왔다.
Vercel의 자체 결함이 아닌 React RSC 기반 앱을 대량으로 호스팅 하기 때문에 고객 보호를 위해 플랫폼 차원의 임시 완화를 적용했다.
Vercel이 별도의 공지를 낸 이유는 이번 취약점이 Next.js와 RSC 기반 워크로드 전체에 영향을 주며, 대부분의 Next.js 프로젝트가 Vercel에서 호스팅 되고 있기 때문이다.
즉 React → Next.js → Vercel의 체인에 따라 상류(React)에서 발생한 취약점이 하류(Vercel)까지 그대로 영향을 주게 되는 구조이다.
Vercel도 마찬가지로 완벽하게 해결된 것이 아닌 임시 조치일 뿐이다.
그래서 개발자가 직접 패치 버전으로 업데이트해야 한다.

[업데이트 대상]
- Next.js 15.0.0~16.0.6 버전을 실행하는 모든 Next.js 앱
- Next.js 14 Canary, 14.3.0-canary.76 이후의 Next.js 앱 → 다운그레이드나 업그레이드
- App Router 기반 프로젝트
- 기존 React RSC 패키지(react-server-dom-webpack)를 사용하는 워크로드
[업데이트 대상 X]
- Pages Router 기반 Next.js 앱
- SSR/ISR 없이 CSR만 사용하는 SPA 앱
- Edge Runtime 기반앱
[React2Shell 이해하기]
React2Shell은 React Server Components (RSC)에서 발견된 취약점 이름이다.
이번 취약점 문제는 React 19.x 및 해당 기능을 사용하는 모든 프레임워크(Next.js 등)에 영향을 준다.
해커가 인증받지 않은 코드를 원격으로 실행할 수 있는 취약점으로 그렇게 되면 내 서버에서 허용하지 않은 남의 코드가 실행되는 상황이 발생할 수 있다.
[취약성 상태 확인하기]
취약성 여부를 확인하는 방법은 React 및 Next.js 버전을 확인하는 것이다.
- next
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
vercel에서 취약한 버전의 프로젝트를 감지하면 [vercel.com](http://vercel.com) 대시보드 상단에 경고 배너를 띄워준다.
이 배너는 배포를 검토하기 위한 추가 표시로 모든 사람이 자신의 버전을 직접 확인해야 한다.


[Vercel WAF(웹 방화벽) protection]
vercel의 웹 방화벽 규칙은 알려진 익스플로잇 패턴을 필터링하여 추가적인 방어 계층을 제공한다.
- CVE(https://vercel.com/changelog/cve-2025-55182) 발표에 따르면 해커들이 가장 쉽게 시도할 수 있는 익스플로잇 패턴을 먼저 차단했다.
- [2025년 12월 5일] 새로운 공격 방식이 발견될 때마다 룰을 업데이트하여 방어력을 유지하고 있다.
- WAF 규칙은 모든 해킹 공격에 대해 보호를 보장할 수는 없다.
따라서 서버를 완전히 안전하게 하려면 React/Next.js를 패치해야 한다.
[Vercel의 배포 보호 권장]

https://vercel.com/docs/deployment-protection#understanding-deployment-protection-by-environment
Deployment Protection on Vercel
Learn how to secure your Vercel project's preview and production URLs with Deployment Protection. Configure fine-grained access control at the project level for different deployment environments.
vercel.com
Vercel은 운영 도메인(=배포 도메인) 외의 모든 배포에 대해 ‘배포 보호 설정’을 켜라고 권장한다.
- preview URL
- test URL
- 팀 내부 QA URL
처럼 외부에 노출되면 안 되는 URL들에 접속 제한을 걸어야 한다.
해커들은 production에만 공격하지 않기 때문이다.
즉 preview 환경을 뚫으면 production과 동일한 서버 코드가 실행되어 위험해지기 때문이다.
[요약]
1. Next.js, React 버전 확인(package.json)
{
"dependencies": {
"next": "15.3.4",
"react": "19.1.1",
}
}
2. 패치 버전으로 업데이트
| 취약한 버전 | 패치 릴리스 |
| Next.js 15.0.x | 15.0.5 |
| Next.js 15.1.x | 15.1.9 |
| Next.js 15.2.x | 15.2.6 |
| Next.js 15.3.x | 15.3.6 |
| Next.js 15.4.x | 15.4.8 |
| Next.js 15.5.x | 15.5.7 |
| Next.js 16.0.x | 16.0.7 |
| Next.js 14.3.0-canary.76 이후 14개의 canary | 14.3.0-canary.76으로 다운그레이드(취약하지 않음) |
| Next.js 15.6.0-canary.58 이전의 15개 canary | 15.6.0-카나리아.58 |
| Next.js 16.1.0-canary.12 이전의 16개 canary | 16.1.0-canary.12 및 이후 |
3. Next.js 버전 업데이트
{
"dependencies": {
"next": "15.3.6",
"react": "19.2.1",
}
}
종속성 설치
# npm
npm install
# yarn
yarn install
# pnpm
pnpm install
# bun
bun install
4. 즉시 배포
테스트가 완료되면 업데이트된 애플리케이션을 최대한 빨리 배포하세요.
Vercel에 배포하는 경우, 해당 플랫폼은 이미 취약한 버전의 새로운 배포를 차단하고 WAF 규칙을 적용하고 있지만, 업그레이드는 여전히 중요합니다.
vercel --prod
잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊
댓글과 좋아요는 큰 힘이 됩니다!

[ 참고자료 ]
https://www.dailysecu.com/news/articleView.html?idxno=203111
[단독] “Log4j 이후 ‘최악의 취약점’ 터졌다”...중국 해커, React2Shell RCE 실제 공격 테스트 돌입,
2025년 IT·보안 커뮤니티는 지금 ‘React2Shell(리액트투쉘)’이라는 이름 하나로 술렁이고 있다. CVSS 10.0 등급이 부여된 신규 취약점 CVE-
www.dailysecu.com
KISA 보호나라&KrCERT/CC
KISA 보호나라&KrCERT/CC
www.krcert.or.kr:443
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Critical Security Vulnerability in React Server Components – React
The library for web and native user interfaces
react.dev
https://nextjs.org/blog/CVE-2025-66478
Security Advisory: CVE-2025-66478
A critical vulnerability (CVE-2025-66478) has been identified in the React Server Components protocol. Users should upgrade to patched versions immediately.
nextjs.org
https://nextjs.org/blog/CVE-2025-66478
Security Advisory: CVE-2025-66478
A critical vulnerability (CVE-2025-66478) has been identified in the React Server Components protocol. Users should upgrade to patched versions immediately.
nextjs.org
https://www.cve.org/CVERecord?id=CVE-2025-55182
https://www.cve.org/CVERecord?id=CVE-2025-55182
www.cve.org
https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp
RCE in React Server Components
A vulnerability affects certain React packages<sup>1</sup> for versions 19.0.0, 19.1.0, 19.1.1, and 19.2.0 and frameworks that use the affected packages, including Next.js 15.x and 16.x using the A...
github.com
https://vercel.com/kb/bulletin/react2shell
React2Shell Security Bulletin | Vercel Knowledge Base
CVE-2025-55182 is a critical vulnerability in React, Next.js, and other frameworks that requires immediate action
vercel.com
'웹 개발 > React' 카테고리의 다른 글
| [React] 이벤트 핸들러 네이밍 on vs handle (0) | 2025.11.07 |
|---|---|
| [React] 리액트 폴더 구조 (0) | 2025.10.31 |
| [React] vite로 리액트 설치하기 (0) | 2025.10.22 |
| [React] EmailJS 사용방법 / 자바스크립트로 이메일 보내기 (2) | 2024.04.29 |
| [React] 리액트 useReducer (0) | 2024.01.18 |
