React 서버 컴포넌트에서 인증 없이 원격 코드 실행이 가능한 중대한 보안 취약점과 영향을 받는 버전, 프레임워크, 그리고 각 환경별 업데이트 방법을 안내합니다.
2025년 12월 3일 – React 팀
React 서버 컴포넌트(React Server Components)에 인증되지 않은 원격 코드 실행(Remote Code Execution, RCE) 취약점이 있습니다.
즉시 업그레이드할 것을 권장합니다.
11월 29일, Lachlan Davidson이 React에 존재하는 보안 취약점을 보고했습니다. 이 취약점은 React 서버 함수(React Server Function) 엔드포인트로 전송된 페이로드를 React가 디코딩하는 방식의 결함을 악용해, 인증 없이 원격 코드 실행을 가능하게 합니다.
앱이 어떤 React 서버 함수 엔드포인트도 구현하지 않았더라도, React 서버 컴포넌트를 지원한다면 여전히 취약할 수 있습니다.
이 취약점은 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 서버 컴포넌트를 지원하는 프레임워크, 번들러, 혹은 번들러 플러그인을 사용하지 않는다면 이 취약점의 영향을 받지 않습니다.
일부 React 프레임워크와 번들러는 취약한 React 패키지에 직접 의존하거나(peer dependency 포함), 해당 패키지를 내장하고 있었습니다. 영향을 받는 React 프레임워크 및 번들러는 다음과 같습니다: next, react-router, waku, @parcel/rsc, @vitejs/plugin-rsc, rwsdk.
업그레이드 방법이 준비되는 대로 이 글을 업데이트하여 안내할 예정입니다.
우리는 여러 호스팅 제공업체와 협력하여 임시 완화 조치를 적용했습니다.
하지만 이러한 조치에 의존해 앱을 보호해서는 안 되며, 반드시 즉시 업그레이드해야 합니다.
React 서버 함수(React Server Functions)는 클라이언트가 서버에서 함수를 호출할 수 있게 해줍니다. React는 프레임워크와 번들러가 클라이언트와 서버 모두에서 React 코드를 실행할 수 있도록 통합 지점과 도구를 제공합니다. React는 클라이언트의 요청을 HTTP 요청으로 변환하여 서버로 전달하고, 서버에서는 HTTP 요청을 함수 호출로 변환한 뒤 필요한 데이터를 클라이언트로 반환합니다.
인증되지 않은 공격자는 임의의 서버 함수 엔드포인트에 대해 악의적인 HTTP 요청을 조작할 수 있으며, 이 요청이 React에 의해 역직렬화(deserialize)될 때 서버에서 원격 코드 실행을 달성할 수 있습니다. 수정 배포가 완료된 후 취약점에 대한 더 자세한 내용을 제공할 예정입니다.
모든 사용자는 자신이 사용 중인 릴리즈 라인에서 패치된 최신 버전으로 업그레이드해야 합니다.
bashnpm install next@15.0.5 # 15.0.x 용 npm install next@15.1.9 # 15.1.x 용 npm install next@15.2.6 # 15.2.x 용 npm install next@15.3.6 # 15.3.x 용 npm install next@15.4.8 # 15.4.x 용 npm install next@15.5.7 # 15.5.x 용 npm install next@16.0.7 # 16.0.x 용
Next.js 14.3.0-canary.77 또는 그 이후의 카나리(canary) 릴리즈를 사용 중이라면, 최신 안정(stable) 14.x 릴리즈로 다운그레이드 하십시오.
bashnpm install next@14
자세한 내용은 Next.js 변경 로그(changelog)를 참고하세요.
React Router의 불안정(unstable) RSC API를 사용 중이라면, package.json에 다음 의존성이 존재하는 경우 업그레이드해야 합니다.
bashnpm 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
완화 방법에 대한 자세한 내용은 expo.dev/changelog의 글을 참고하세요.
rwsdk>=1.0.0-alpha.0 이상 버전을 사용 중인지 확인하세요.
최신 베타 버전으로 업데이트하려면 다음을 실행하세요.
bashnpm install rwsdk@latest
최신 react-server-dom-webpack으로 업그레이드하세요.
bashnpm install react@latest react-dom@latest react-server-dom-webpack@latest
더 자세한 마이그레이션 지침은 Redwood 문서를 참고하세요.
최신 react-server-dom-webpack으로 업그레이드하세요.
bashnpm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
더 자세한 마이그레이션 지침은 Waku 공지를 참고하세요.
@vitejs/plugin-rsc최신 RSC 플러그인으로 업그레이드하세요.
bashnpm install react@latest react-dom@latest @vitejs/plugin-rsc@latest
react-server-dom-parcel최신 버전으로 업데이트하세요.
bashnpm install react@latest react-dom@latest react-server-dom-parcel@latest
react-server-dom-turbopack최신 버전으로 업데이트하세요.
bashnpm install react@latest react-dom@latest react-server-dom-turbopack@latest
react-server-dom-webpack최신 버전으로 업데이트하세요.
bashnpm install react@latest react-dom@latest react-server-dom-webpack@latest
이번 취약점을 발견하고 보고했으며, 수정 작업에 협력해 준 Lachlan Davidson에게 감사드립니다.