Denial of Service and Source Code Exposure in React Server Components – React
The library for web and native user interfaces
react.dev
아래는 퍼플렉시티를 통해 얻은 분석
이 글은 최근 React Server Components(RSC) 관련 추가 보안 취약점 공지입니다.[2]
어떤 취약점인지
두 가지 새 취약점이 공개되었습니다.[1][2]
- Denial of Service (CVE-2025-55184, CVSS 7.5, High)
- Source Code Exposure (CVE-2025-55183, CVSS 5.3, Medium)
이 취약점들은 지난주 RCE 이슈(React2Shell, CVE-2025-55182)를 패치하는 과정에서 연구자들이 추가로 찾아낸 변종 취약점이며, 새로 공개된 두 취약점 자체는 원격 코드 실행은 허용하지 않습니다.[1][2]
영향 받는 버전과 패키지
취약점은 React Server Components를 지원하는 패키지들에 존재하며, 특히 다음 버전의 react-server-dom-* 계열에 영향을 줍니다.[2][1]
- 19.0.0, 19.0.1, 19.0.2
- 19.1.0, 19.1.1, 19.1.2, 19.1.3
- 19.2.0, 19.2.1, 19.2.2
수정은 19.0.3, 19.1.4, 19.2.3 이상에서 완료되었으므로, 해당 패키지를 사용하는 경우 반드시 이들 이상 버전으로 업데이트해야 합니다.[2]
Next.js, react-router, waku, @parcel/rsc, @vite/rsc-plugin, rwsdk 같은 RSC 지원 프레임워크/번들러도 영향을 받습니다.[1][2]
환경별 영향 정리
- 순수 클라이언트 React 앱(서버 없이) → 영향 없음.[1][2]
- RSC를 지원하지 않는 프레임워크/번들러 사용 → 영향 없음.[2]
- React Native 단독(모노레포 아님,
react-dom미사용) → 별도 조치 불필요.[1] - React Native 모노레포에서
react-server-dom-*설치된 경우 → 해당 패키지만 업데이트하면 되고,react/react-dom버전은 올리지 않아도 됩니다.[1]
취약점 동작 방식
1) DoS: 서버 무한 루프
공격자가 악의적인 HTTP 요청을 Server Functions 엔드포인트로 보내면, React가 이를 역직렬화하는 과정에서 특정 페이로드로 인해 무한 루프가 발생할 수 있습니다.[2][1]
이 루프는 서버 프로세스를 hang 시키고 CPU를 계속 소모하므로, RSC를 지원하는 서버라면 해당 엔드포인트를 직접 사용하지 않더라도 서비스 전체가 장애 상태에 빠질 수 있습니다.[2][1]
패치는 역직렬화 시 이 무한 루프 케이스를 차단하도록 변경해 DoS를 방지합니다.[2]
2) Source Code Exposure: 서버 함수 소스 노출
공격자가 취약한 Server Function에 특정 요청을 보내면, 해당 Server Function의 소스 코드 전체가 문자열로 응답에 노출되는 문제가 있습니다.[1][2]
이 취약점은 특히 매개변수를 문자열로 직렬화해서 로그·DB·응답 등으로 내보내는 코드 경로가 있을 때 트리거됩니다.[1]
예를 들어, 서버 함수 내부에 다음과 같이 하드코딩된 비밀 키나 DB 연결 문자열 등이 있으면, 그 부분이 통째로 문자열로 유출될 수 있습니다.[1]
- 하드코딩된 비밀:
'SECRET KEY'같은 상수 - 인라인된 헬퍼 함수 코드(번들러 인라이닝 정도에 따라)
패치는 Server Function의 소스 코드가 문자열로 직렬화되지 않도록 Flight 프로토콜 직렬화 로직을 변경해 이 문제를 막습니다.[2][1]
무엇을 해야 하는지
실무 관점에서 할 일은 크게 네 가지입니다.[2][1]
- 의존성 버전 확인 및 즉시 업그레이드
react-server-dom-webpack,react-server-dom-parcel,react-server-dom-turbopack등 RSC 관련 패키지가 19.0.0–19.2.2 사이인지 확인합니다.[1][2]- 해당되면 최소 19.0.3, 19.1.4, 19.2.3 이상으로 올립니다.[2]
- Next.js/기타 프레임워크를 쓰는 경우, 프레임워크 쪽에서 공지한 최소 안전 버전으로 업데이트합니다.[7][2]
- 지난주 패치만 적용한 상태라면 재업데이트
- 이전 RCE(CVE-2025-55182) 패치 버전만 올려둔 상태라면 이번 취약점에 여전히 노출된 상태입니다.[1][2]
- React 팀이 이번 글에서 “지난주 패치를 이미 적용한 경우에도 다시 업데이트해야 한다”고 명시하고 있습니다.[2][1]
- 서버 함수 내 하드코딩된 비밀 제거
- RSC Server Functions 내부에서 API 키, DB 비밀번호 등을 문자열 상수로 넣어둔 코드가 있다면 환경 변수 등 런타임 시크릿 관리로 모두 옮깁니다.[1]
- 이번 취약점은 런타임 시크릿(예:
process.env.SECRET)은 노출하지 않지만, 소스에 박힌 상수는 노출 가능하다고 명시됩니다.[1]
- Server Functions 노출 범위 최소화 및 방어선 추가
- 필요 이상으로 많은 서버 함수를 외부 요청에 노출하지 않도록 라우팅·권한 체크를 강화합니다.[7]
- WAF/레이트 리미트 등으로 RSC 관련 엔드포인트에 대한 트래픽을 제한해 DoS 시나리오의 영향을 줄일 수 있습니다.[9]
RSC를 계속 써도 되는지
React 팀은 RCE 문제(React2Shell)는 이미 패치로 막은 상태이고, 이번 두 취약점은 추가적인 방어층을 추가하는 성격이라는 점을 강조합니다.[7][2]
또한, 심각한 취약점이 공개된 후에 인접 코드 경로에서 후속 취약점이 연달아 발견되는 것은 여러 언어·생태계에서 흔한 패턴이라고 설명하며(Log4Shell 사례 언급), 이는 오히려 보안 대응 사이클이 건강하게 작동하고 있다는 신호로 볼 수 있다고 합니다.[2][1]
실무에서는 RSC를 쓰더라도 다음을 기본 원칙으로 두는 것이 좋습니다.[6][7]
- 서버와 클라이언트 경계를 명확히 설계하고, Server Functions는 최소한으로 설계
- RSC 프로토콜(Flight)처럼 직렬화/역직렬화 경로는 “신뢰할 수 없는 입력” 관점에서 설계 및 점검
- 보안 공지가 나오면 프레임워크 수준에서 빠르게 업데이트하는 프로세스를 팀 차원에서 마련
출처
[1] Denial of Service and Source Code Exposure in React Server Components – React https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
[2] Denial of Service and Source Code Exposure in React Server ... https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
[3] React Blog https://react.dev/blog
[4] Denial of service and source code exposure in React Server ... https://news.ycombinator.com/item?id=46236924
[5] Denial of Service and Source Code Exposure in React ... https://www.linkedin.com/posts/halfstop_denial-of-service-and-source-code-exposure-activity-7405029959494168576-IKfE
[6] React Server Components vulnerability: What We Know https://areeblog.com/react-server-components-vulnerability-what-we-know/
[7] React Server Components Vulnerability: 72‑Hour Plan - BYBOWU https://bybowu.com/article/react-server-components-vulnerability-72hour-plan
[8] (Additional) Denial of Service and Source Code Exposure in React Server Components https://www.reddit.com/r/reactjs/comments/1pk9tkm/additional_denial_of_service_and_source_code/
[9] Responding to CVE-2025-55182 | Google Cloud Blog https://cloud.google.com/blog/products/identity-security/responding-to-cve-2025-55182
[10] Impact On Next. Js Users https://mertosolutions.com/blog/critical-react-server-components-vulnerability-cve-2025-55182
[11] Critical Remote Code Execution (RCE) Vulnerabilities in React and ... https://www.endorlabs.com/learn/critical-remote-code-execution-rce-vulnerabilities-in-react-and-next-js
'FrontEnd > React.js' 카테고리의 다른 글
| [React 19] Activity 컴포넌트 (0) | 2025.12.19 |
|---|---|
| React Server Components CVE-2025-55182 취약점 분석 (0) | 2025.12.05 |
| JWT 관련 면접 질문 모음 (0) | 2025.04.26 |
| 토스의 "자료구조를 활용한 복잡한 프론트엔드 컴포넌트 제작하기"를 구현해보기 (3) (0) | 2025.04.14 |
| 토스의 "자료구조를 활용한 복잡한 프론트엔드 컴포넌트 제작하기"를 구현해보기 (2) (0) | 2025.04.13 |