상황
최근 기술 트렌드를 살펴 보다가 엄청난 보안 이슈를 발견했다. React 19 버전의 Server Components에서
원격 코드 실행(RCE) 취약점이 발견되어 CVSS 점수 10.0 (Critical)을 받은 것이다. 심지어 미국
CISA(사이버보안 및 인프라 보안국)에서도 연방 기관들에게 12월 12일까지 패치를 강제하는 지시를
내렸다고 한다.
내가 운영 중인 프로젝트가 영향을 받는지 확인하기 위해 취약점을 분석하고, 안전성을 검토해보았다.
취약점 분석
CVE-2025-55182: 무엇이 문제인가?
핵심 문제:
- React Server Components의 역직렬화(deserialization) 과정에서 발생
- 공격자가 Server Function 엔드포인트로 악의적인 HTTP 요청을 보내면
React가 이를 역직렬화하는 과정에서 서버에서 임의의 코드가 실행됨→ 인증 없이, 사용자 개입 없이, 네트워크를 통해 서버를 완전히 장악할 수 있다는 뜻이다.
영향 받는 버전(취약한 버전)
* React 19.0.0
* React 19.1.0
* React 19.1.1
* React 19.2.0
영향 받는 패키지(취약한 패키지)
* react-server-dom-webpack
* react-server-dom-parcel
* react-server-dom-turbopack
위 내용을 보면 최신 React 19 버전으로 운영 중인 프로젝트가 있다면 모두 해당된다는 것이다.
위험한 프로젝트 코드
다음 중 하나라도 해당되면 취약하다고 한다
// React 19.x를 사용 중
// package.json 내에서...
{
"dependencies": {
"react": "^19.0.0" // 위험
}
}
// Next.js 13.3 이상 사용 중에서 (App Router)
// app/page.tsx
'use server'; // Server Component 사용 시 위험
export async function submitForm(data) {
// 서버에서 실행되는 코드
// → 악의적 요청으로 RCE 가능
}
// React Server Functions 구현한 경우
// actions.ts
'use server';
export async function createPost(formData) {
// 아래와 같은 패턴이 있다면 위험
const post = await db.posts.create(formData);
return post;
}
- 기타 RSC 지원 프레임워크
- React Router (SSR 지원 버전)
- Waku
- Redwood SDK
- Vite + RSC plugin
필자의 프로젝트들을 점검해보니 다행히도 react 19 최신 버전을 사용하고 있는 프로젝트가 없었다(18버전 사용중)
이로 인해 다행히 공격은 받지 않는 구조였다.
그러나 특정 프로젝트 중에 next.js를 사용 중인 프로젝트가 있어서 해당 프로젝트의 경우, 차후의 위험성을 제거하기 위해서 next.js 버전을 업그레이드하는게 필요할 거 같았다.
// 나의 프로젝트의 의존성 패키지 내용
//FRONTEND/package.json
{ "dependencies":
{
"react": "^18.2.0", // React 18 사용
"react-dom": "^18.2.0", // 안전
"react-scripts": "^5.0.0" // Create React App
}
}
next.js 재설치
react 공식 사이트에 따르면 사실상 모든 next.js 버전들(13.x, 14.x, 15.x, 16.x) 이 취약성이 존재한다고 한다.
그리고 hot-fix된 아래의 버전으로 설치하는 것을 추천
npm install next@14.2.35 // for 13.3.x, 13.4.x, 13.5.x, 14.x
npm install next@15.0.7 // for 15.0.x
npm install next@15.1.11 // for 15.1.x
npm install next@15.2.8 // for 15.2.x
npm install next@15.3.8 // for 15.3.x
npm install next@15.4.10 // for 15.4.x
npm install next@15.5.9 // for 15.5.x
npm install next@16.0.10 // for 16.0.x
npm install next@15.6.0-canary.60 // for 15.x canary releases
npm install next@16.1.0-canary.19 // for 16.x canary releases
react 재설치 및 그외 종속성이 있는 취약 패키지들
React 관련해서 다음의 종속성이 있는 패키지들도 최신 버전으로 재설치 필요(해당한다면)
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
참고: yarn을 통한 재설치 프로세스
필자의 프로젝트는 yarn을 통해 패키지 관리 중이라 yarn을 통한 삭제 및 재설치를 진행하였다.
# 프로젝트 내에서 기존 노드 모듈 정보 삭제
rm -rf node_modules
# Next.js 15.5.9 설치(next.js 15.x를 사용중이라 해당 버전으로 재설치)
yarn add next@15.5.9
# 그외 관련 있는 패키지들도 동일 버전으로 재설치 진행!
# @next/third-parties도 동일 버전으로
yarn add @next/third-parties@15.5.9
# eslint-config-next도 동기화
yarn add -D eslint-config-next@15.5.9
# 의존성 정리
yarn install
# 빌드 테스트
yarn build
# 개발 서버 실행 테스트
yarn dev
위와 같은 과정으로 fix를 진행하여 조치
참고
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
https://nvd.nist.gov/vuln/detail/CVE-2025-55182
https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71912&menuNo=205020
'개발 일상' 카테고리의 다른 글
| React 사이드바 토글 시 ECharts 레이아웃 깨짐 해결법 (w.ResizeObserver) (0) | 2025.11.27 |
|---|---|
| Windows 서버에서 FastAPI 자동 실행 시 발생한 서비스 오류 대응기 (0) | 2025.11.11 |
| 서로 다른 서버 간 MongoDB 컬렉션 데이터 마이그레이션(ubuntu) (2) | 2025.07.03 |
| [ubuntu 22.04] 최신 chrome 브라우저에서 키보드 입력 문제 해결법 (1) | 2025.06.23 |
| YOLO 객체 감지 후 위험 영역 판단 로직 개선기 (1) | 2025.06.10 |
