React

React Server Components의 치명적인 보안 취약점

원문은 CC-BY-4.0
라이선스로 제공되며, 이 글은 한국어로 번역한 2차 저작물입니다.
React Server Components에 인증되지 않은 원격 코드 실행 취약점이 존재합니다.
즉시 업그레이드할 것을 권장합니다.

2025년 11월 29일, Lachlan Davidson은 React Server Function 엔드포인트로 전송된 페이로드 디코딩 방식의 결함을 악용하여 인증되지 않은 원격 코드 실행을 허용하는 React의 보안 취약점을 보고했습니다.
애플리케이션에 React Server Function 엔드포인트가 구현되어 있지 않더라도, React Server Components를 지원하는 경우 취약할 수 있습니다.
이 취약점은 CVE-2025-55182
로 공개되었으며 CVSS 점수 10.0으로 평가되었습니다.
이 취약점은 다음 패키지의 버전 19.0, 19.1.0, 19.1.1, 19.2.0에 존재합니다:

즉시 조치 필요

버전 19.0.1
, 19.1.2
, 19.2.1
에 수정 사항이 도입되었습니다. 위의 패키지 중 하나를 사용 중이라면 즉시 수정된 버전으로 업그레이드하십시오.
애플리케이션의 React 코드가 서버를 사용하지 않는 경우, 이 취약점에 영향을 받지 않습니다. 애플리케이션이 React Server Components를 지원하는 프레임워크, 번들러 또는 번들러 플러그인을 사용하지 않는 경우, 이 취약점에 영향을 받지 않습니다.

영향을 받는 프레임워크 및 번들러

일부 React 프레임워크 및 번들러는 취약한 React 패키지에 의존하거나, peer dependency로 포함하거나, 함께 포함하고 있었습니다. 다음 React 프레임워크 및 번들러가 영향을 받습니다: next
, react-router
, waku
, @parcel/rsc
, @vitejs/plugin-rsc
, 그리고 rwsdk
.
패치로 업그레이드하는 방법은 아래 [업데이트 지침]을 참조하십시오.

호스팅 제공업체 완화 조치

저희는 여러 호스팅 제공업체와 협력하여 임시 완화 조치를 적용했습니다.
이러한 조치에만 의존하지 마시고, 즉시 업데이트하십시오.

취약점 개요

React Server Functions
는 클라이언트가 서버의 함수를 호출할 수 있도록 합니다. React는 프레임워크와 번들러가 React 코드를 클라이언트와 서버 양쪽에서 실행할 수 있도록 돕는 통합 지점과 도구를 제공합니다. React는 클라이언트의 요청을 HTTP 요청으로 변환하여 서버로 전달합니다. 서버에서 React는 HTTP 요청을 함수 호출로 변환하고 필요한 데이터를 클라이언트로 반환합니다.
인증되지 않은 공격자는 Server Function 엔드포인트로 악의적인 HTTP 요청을 조작할 수 있으며, React가 이 요청을 역직렬화할 때 서버에서 원격 코드 실행을 달성할 수 있습니다. 취약점에 대한 자세한 내용은 수정 사항 배포가 완료된 후 제공될 예정입니다.

업데이트 지침

Next.js

모든 사용자는 릴리스 라인의 최신 패치 버전으로 업그레이드해야 합니다:
npm install next@14.2.35  // for 13.3.x, 13.4.x, 13.5.x, 14.xnpm install next@15.0.8   // for 15.0.xnpm install next@15.1.12  // for 15.1.xnpm install next@15.2.9   // for 15.2.xnpm install next@15.3.9   // for 15.3.xnpm install next@15.4.11  // for 15.4.xnpm install next@15.5.10  // for 15.5.xnpm install next@16.0.11  // for 16.0.xnpm install next@16.1.5   // for 16.1.xnpm install next@15.6.0-canary.60   // for 15.x canary releasesnpm install next@16.1.0-canary.19   // for 16.x canary releases
15.0.8, 15.1.12, 15.2.9, 15.3.9, 15.4.10, 15.5.10, 15.6.0-canary.61, 16.0.11, 16.1.5
Next.js 13 버전 (
13.3.x
,
13.4.x
, 또는
13.5.x
)의
13.3
또는 그 이후 버전을 사용 중이라면
14.2.35
버전으로 업그레이드하십시오.
next@14.3.0-canary.77
또는 이후 버전의 canary 릴리스를 사용 중이라면, 최신 안정화된 14.x 릴리스로 다운그레이드하십시오:
npm install next@14
최신 업데이트 지침은 Next.js 블로그
를 참조하고, 자세한 내용은 이전 변경 로그
를 확인하십시오.

React Router

React Router의 불안정한 RSC API를 사용하는 경우, 다음
package.json
종속성을 업그레이드해야 합니다:
npm install react@latestnpm install react-dom@latestnpm install react-server-dom-parcel@latestnpm install react-server-dom-webpack@latestnpm install @vitejs/plugin-rsc@latest

Expo

완화 조치에 대한 자세한 내용은 expo.dev/changelog
에서 해당 문서를 읽어보십시오.

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 문서
를 참조하십시오.

Waku

최신
react-server-dom-webpack
으로 업그레이드하십시오:
npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
마이그레이션 지침은 Waku 공지
를 참조하십시오.

@vitejs/plugin-rsc

최신 RSC 플러그인으로 업그레이드하십시오:
npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest

react-server-dom-parcel

최신 버전으로 업데이트하십시오:
npm install react@latest react-dom@latest react-server-dom-parcel@latest

react-server-dom-turbopack

최신 버전으로 업데이트하십시오:
npm install react@latest react-dom@latest react-server-dom-turbopack@latest

react-server-dom-webpack

최신 버전으로 업데이트하십시오:
npm install react@latest react-dom@latest react-server-dom-webpack@latest

React Native

모노레포 또는
react-dom
을 사용하지 않는 React Native 사용자의 경우,
package.json
react
버전이 고정되어 있으므로 추가적인 단계가 필요하지 않습니다.
모노레포에서 React Native를 사용하는 경우, 설치된 경우에만 영향을 받는 패키지를 업데이트해야 합니다:
  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
이는 보안 권고를 완화하기 위해 필요하며,
react
react-dom
을 업데이트할 필요가 없으므로 React Native에서 버전 불일치 오류가 발생하지 않습니다.
자세한 내용은 이 이슈
를 참조하십시오.

타임라인

  • 11월 29일: Lachlan Davidson이 Meta Bug Bounty
    를 통해 보안 취약점을 보고했습니다.
  • 11월 30일: Meta 보안 연구원들이 이를 확인하고 React 팀과 함께 수정 작업을 시작했습니다.
  • 12월 1일: 수정 사항이 생성되었고 React 팀은 영향을 받는 호스팅 제공업체 및 오픈 소스 프로젝트와 협력하여 수정 사항을 검증하고, 완화 조치를 구현하며, 수정을 배포하기 시작했습니다.
  • 12월 3일: 수정 사항이 npm에 게시되었고 CVE-2025-55182로 공개되었습니다.

출처

이 취약점을 발견, 보고하고 수정하는 데 도움을 준 Lachlan Davidson
에게 감사드립니다.