본문으로 건너뛰기

← 블로그 · Learning

[React] React Server Components 심각한 보안 취약점 (CVE-2025-55182)

#React #Security #Next.js #Server Components #CVE

유주환 · Founder, Full Stack Developer

토리스(Toris) · 발행

🚨 React Server Components 심각한 보안 취약점 발견

Q. React Server Components 취약점 CVE-2025-55182는 무엇이고 어떻게 대응하나요? RSC 페이로드 역직렬화에서 발생하는 인증 없는 원격 코드 실행(RCE) 취약점(CVSS 10.0)으로, 패치 버전으로 즉시 업데이트해야 합니다.

여러 제품을 직접 운영하는 스튜디오 대표로서, 이런 보안 공지가 뜨면 저는 늘 같은 순서로 판단합니다. 먼저 “우리 스택이 이 취약점의 사정권에 들어가는가”를 확정하고, 들어간다면 “어떤 서비스부터 손대야 하는가”를 정한 뒤, “다운타임 없이 어떻게 반영할 것인가”를 결정합니다. 토리스는 밈캐치를 비롯해 Next.js 기반 제품을 여러 개 운영하고 있어, RSC 취약점은 남의 일이 아닙니다. 우리 스택 점검이 곧 사용자에게 약속한 서비스 신뢰를 지키는 일이기 때문입니다. 아래는 이 CVE의 기술적 내용과, 운영 책임자 관점에서 무엇을 먼저 판단했는지를 함께 정리한 기록입니다.

2025년 12월 3일, React 팀이 React Server Components에서 인증되지 않은 원격 코드 실행(RCE) 취약점을 공개했습니다. 이 취약점은 CVE-2025-55182로 지정되었으며, CVSS 10.0 (최고 위험도)으로 평가되었습니다.

취약점 개요

이 취약점은 React Server Functions의 페이로드 역직렬화 과정에서 발생합니다. 공격자가 악의적인 HTTP 요청을 Server Function 엔드포인트로 전송하면, React가 이를 역직렬화하는 과정에서 서버에서 원격 코드 실행이 가능해집니다.

⚠️ 중요: React Server Function 엔드포인트를 구현하지 않은 앱이라도, React Server Components를 지원하는 경우 취약할 수 있습니다.

영향받는 버전

다음 패키지의 특정 버전에서 취약점이 발견되었습니다:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

취약한 버전:

  • 19.0.0
  • 19.1.0
  • 19.1.1
  • 19.2.0

수정된 버전:

  • 19.0.1
  • 19.1.2
  • 19.2.1

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

다음 React 프레임워크와 번들러가 취약한 React 패키지에 의존하거나 포함하고 있습니다:

  • Next.js
  • React Router
  • Waku
  • @parcel/rsc
  • @vitejs/plugin-rsc
  • rwsdk (Redwood SDK)

즉시 조치 필요

이 취약점은 즉시 업데이트가 필요합니다. 호스팅 제공업체들이 임시 완화 조치를 적용했지만, 이를 의존하지 말고 반드시 최신 패치 버전으로 업데이트해야 합니다.

운영 책임자로서 저는 패치 우선순위를 “외부에 노출된 정도 × 사용자 영향”으로 잡습니다. CVSS 10.0에 인증이 필요 없는 RCE라면 이 계산은 단순합니다. 공개 트래픽을 받는 제품을 가장 먼저 올리고, 내부용이나 트래픽이 적은 것을 뒤로 미룹니다. 완화 조치는 시간을 버는 수단일 뿐, 상황 종료가 아니라고 봅니다.

📦 업데이트 방법

Next.js

저는 메이저 업그레이드로 건너뛰기보다 현재 릴리스 라인의 최신 패치로 올리는 쪽을 우선합니다. 변경 범위를 최소화해야 다운타임 없이 배포하기 쉽고, 롤백 판단도 빨라지기 때문입니다. 실제 반영은 스테이징에서 빌드와 RSC 동작을 확인한 뒤 무중단 배포로 넘기고, 프로덕션에서 버전이 실제로 바뀌었는지 다시 확인하는 순서를 지킵니다.

Next.js를 사용하는 경우, 현재 사용 중인 릴리스 라인의 최신 패치 버전으로 업데이트하세요:

# Next.js 15.0.x
npm install next@15.0.5

# Next.js 15.1.x
npm install next@15.1.9

# Next.js 15.2.x
npm install next@15.2.6

# Next.js 15.3.x
npm install next@15.3.6

# Next.js 15.4.x
npm install next@15.4.8

# Next.js 15.5.x
npm install next@15.5.7

# Next.js 16.0.x (현재 권장)
npm install next@16.0.7

Next.js 14.3.0-canary.77 이상의 canary 버전을 사용 중이라면, 최신 안정 버전인 14.x로 다운그레이드하세요:

npm install next@14

React 및 React DOM

React와 React DOM을 최신 버전으로 업데이트하세요:

npm install react@19.2.1 react-dom@19.2.1

또는 pnpm을 사용하는 경우:

pnpm update react@19.2.1 react-dom@19.2.1

React Server Components 관련 패키지

프로젝트에서 직접 사용하는 경우 다음 패키지들도 업데이트하세요:

# react-server-dom-webpack
npm install react-server-dom-webpack@latest

# react-server-dom-parcel
npm install react-server-dom-parcel@latest

# react-server-dom-turbopack
npm install react-server-dom-turbopack@latest

기타 프레임워크

React Router

React Router의 불안정한 RSC API를 사용하는 경우:

npm install react@latest react-dom@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-webpack@latest
npm install @vitejs/plugin-rsc@latest

Waku

npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest

@vitejs/plugin-rsc

npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest

🔍 취약점이 적용되지 않는 경우

다음 조건에 해당하는 경우 이 취약점의 영향을 받지 않습니다:

  1. 서버를 사용하지 않는 React 앱: 클라이언트 사이드만 사용하는 경우
  2. React Server Components를 지원하지 않는 프레임워크/번들러 사용: React Server Components 기능을 사용하지 않는 경우

📅 타임라인

  • 2025년 11월 29일: Lachlan Davidson이 Meta Bug Bounty를 통해 보안 취약점 신고
  • 2025년 11월 30일: Meta 보안 연구진이 확인하고 React 팀과 함께 수정 작업 시작
  • 2025년 12월 1일: 수정 사항 생성 및 호스팅 제공업체 및 오픈소스 프로젝트와 협력하여 수정 사항 검증 및 완화 조치 구현
  • 2025년 12월 3일: npm에 수정 사항 게시 및 CVE-2025-55182로 공개 공개

💡 보안 모범 사례

이러한 취약점을 예방하기 위해 다음 사항을 준수하세요:

  1. 정기적인 의존성 업데이트: 보안 패치가 발표되면 즉시 업데이트
  2. 보안 알림 구독: React, Next.js 등 사용 중인 프레임워크의 보안 알림 구독
  3. 의존성 취약점 스캔: npm audit 또는 pnpm audit을 정기적으로 실행
  4. 최소 권한 원칙: Server Functions에 적절한 인증 및 권한 검사 구현

📚 참고 자료

🎯 결론

React Server Components의 심각한 보안 취약점이 발견되었습니다. 즉시 최신 패치 버전으로 업데이트하여 보안 위협으로부터 애플리케이션을 보호하세요. 특히 프로덕션 환경에서는 가능한 한 빨리 업데이트를 적용하는 것이 중요합니다.

토리스의 보안 대응 원칙

토리스가 이런 공지를 만났을 때 따르는 절차는 단순합니다. 공식 보안 공지를 구독해 두고, 공지가 뜨면 우리 스택이 영향권인지 먼저 판정하고, 영향이 있으면 노출도 순으로 패치한 뒤, 재배포 후 실제 반영 버전을 다시 검증합니다. 아래 체크리스트가 이 절차를 서비스 단위로 그대로 옮긴 것이니, 순서대로 따라가면 됩니다.

이런 보안 대응을 포함한 유지보수나 운영이 필요하시다면 토리스 문의처로 연락 주세요.

우리 스택 점검 체크리스트

토리스는 블로그를 Next.js로, 일부 서비스를 Astro로 운영합니다. 이 취약점의 영향 여부를 판정하고 대응하기 위한 절차를 아래 순서대로 확인하세요.

  • 설치 버전 확인: npm list next react react-dom react-server-dom-webpack (pnpm은 pnpm list ...)을 실행해, 취약 버전(React 19.0.0 / 19.1.0 / 19.1.1 / 19.2.0)이 설치되어 있는지 확인합니다.
  • RSC 사용 여부 판정: Next.js App Router에서 Server Components나 Server Functions를 사용하는지 확인합니다. 순수 클라이언트 사이드 앱이거나 RSC를 사용하지 않는다면 이 취약점의 영향을 받지 않습니다.
  • Astro 프로젝트 점검: Astro는 기본적으로 React Server Components를 사용하지 않으며, @astrojs/react로 React를 아일랜드로만 쓰는 경우 RSC 역직렬화 경로가 없어 영향권 밖입니다. 별도로 RSC 통합을 붙였다면 위 버전 확인을 동일하게 적용합니다.
  • 패치 적용: 사용 중인 릴리스 라인의 최신 패치로 업데이트합니다. 예) npm install next@16.0.7, npm install react@19.2.1 react-dom@19.2.1. 수정 버전은 19.0.1 / 19.1.2 / 19.2.1입니다.
  • 빌드 검증: npm run build(또는 pnpm build)로 빌드가 성공하는지 확인하고, RSC 기능이 정상 동작하는지 점검합니다.
  • 재배포 및 반영 확인: 프로덕션에 재배포한 뒤 npm list react react-dom으로 실제 반영된 버전을 다시 확인합니다. 호스팅 제공업체의 임시 완화 조치에만 의존하지 않습니다.
  • 잔여 취약점 스캔·알림 구독: npm audit(또는 pnpm audit)로 남은 취약 의존성이 없는지 확인하고, React 공식 블로그와 Next.js/Vercel 보안 공지를 구독해 후속 패치를 추적합니다.

업데이트 날짜: 2025년 12월 3일
작성자: 토리스
카테고리: React, Security

READERS / LIVE

읽고 난 뒤의 대화

조회

댓글은 바로 공개됩니다. 개인정보와 공격적인 표현은 남기지 말아주세요.