React RCE 취약점 CVE 2025 55182 및 CVE 2025 66478 분석



React RCE 취약점 CVE 2025 55182 및 CVE 2025 66478 분석

React의 19 버전대에서 심각한 원격 코드 실행(RCE) 취약점이 두 가지 발견되었습니다. 이 취약점은 CVE-2025-55182와 CVE-2025-66478로 알려져 있으며, 각각 React와 Next.js에 영향을 미칩니다. 두 취약점 모두 React의 서버 컴포넌트 기능에서 사용되는 “Flight” 프로토콜의 역직렬화 처리 로직의 결함이 원인으로, 공격자는 조작된 HTTP 요청을 통해 인증 없이도 서버 측에서 임의의 자바스크립트 코드를 실행할 수 있습니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

취약점 개요

CVE-2025-55182는 React Server Components 구현체에서 발생하는 취약점이며, CVE-2025-66478은 Next.js가 동일한 취약점으로 인해 영향을 받는 경우입니다. 이 취약점은 역직렬화 과정에서 서버가 입력 데이터 구조를 올바르게 검증하지 않음으로써 발생합니다. 공격자는 단 한 번의 요청으로도 서버에서 임의의 코드를 실행할 수 있으며, CVSS 점수는 10.0으로 치명적인 위험도로 평가됩니다. 이 취약점은 2025년 11월에 보고되었고, 12월에 패치가 발표되었습니다.



 

👉 ✅ 상세 정보 바로 확인 👈

 

코드 레벨 분석

RCE 취약점의 근본 원인은 React 서버 런타임이 클라이언트에서 전달받은 RSC 요청을 역직렬화할 때 모듈 export 프로퍼티에 대한 검증을 하지 않기 때문입니다. 예를 들어, 클라이언트가 보낸 metadata.name으로 모듈 export에 접근하는 과정에서 검증이 누락되었습니다.

javascript
function requireModule(moduleExports, name) {
return moduleExports[name]; // 검증 없이 프로퍼티에 접근
}

이러한 방식으로 클라이언트가 요청한 name 값이 의도된 프로퍼티가 아니더라도 접근이 가능합니다. 특히 함수 형태로 export된 모듈의 경우 constructor 속성을 통해 공격자가 전역 Function 생성자에 대한 참조를 얻을 수 있습니다. 이는 서버에서 공격자가 공급한 악성 코드를 실행하게 만듭니다.

패치는 React의 여러 버전(19.0.1, 19.1.2, 19.2.1)에 적용되었으며, requireModule에서 상속된 속성에 대한 접근을 차단하는 검증 로직이 추가되었습니다. 이로 인해 클라이언트가 존재하지 않는 export 이름을 요구할 경우 오류가 발생하게 되며, 공격이 더 이상 가능하지 않게 되었습니다.

공격 시나리오 및 PoC

이번 공격은 난이도가 낮아 단일 HTTP 요청으로 취약한 서버를 장악할 수 있습니다. 공격자는 React 19 기반의 RSC 기능을 사용하는 웹 애플리케이션을 목표로 삼고, 악성 페이로드를 생성하여 HTTP 요청을 전송합니다.

  1. 대상 선정: React 19 기반의 RSC 기능을 사용하는 웹 애플리케이션을 식별합니다.
  2. 악성 페이로드 제작: RSC의 Flight 프로토콜 형식에 맞춘 페이로드를 생성합니다. 예를 들어, 모듈 이름 뒤에 #constructor를 붙여 해당 모듈의 constructor 속성을 요구합니다.
  3. 악성 코드 실행: 서버는 공격자가 보낸 문자열을 new Function으로 실행하게 되어 원격 명령 실행이 이루어집니다.

이 공격은 탐지와 대응이 어렵고, 웹 방화벽(WAF) 보호가 없는 경우 더욱 위험합니다.

영향도와 대응 방안

이번 취약점은 React 생태계에서 매우 심각한 보안 버그로 평가됩니다. 공격자는 원격에서 서버를 장악할 수 있으며, 데이터베이스 접속, 민감정보 탈취, 랜섬웨어 설치 등 2차 피해를 유발할 수 있습니다. React는 이 취약점을 수정한 버전을 릴리즈하였으며, Next.js도 보안 업데이트를 배포하여 사용자에게 업그레이드를 권장하고 있습니다.

취약점 영향을 받는 버전
CVE-2025-55182 React 19.0.0 ~ 19.2.0
CVE-2025-66478 Next.js 15.x, 16.x

자주 묻는 질문

CVE-2025-55182 취약점이란 무엇인가요?

CVE-2025-55182는 React Server Components에서 발견된 원격 코드 실행 취약점으로, 인증 없이 서버에서 임의의 JavaScript 코드를 실행할 수 있게 합니다.

이 취약점의 영향을 받는 시스템은 어떤 것이 있나요?

React 19.0.0부터 19.2.0 버전과 이를 기반으로 한 Next.js 15.x 및 16.x 버전의 애플리케이션이 해당 취약점에 영향을 받습니다.

어떻게 이 취약점을 방어할 수 있나요?

React 및 Next.js의 최신 패치를 적용하여 취약점을 수정하고, 보안 모범 사례를 따르는 것이 중요합니다.

취약점에 대한 공격은 어떻게 이루어지나요?

공격자는 조작된 HTTP 요청을 통해 임의의 코드를 실행할 수 있으며, 이는 단일 요청으로 가능하여 탐지하기 어렵습니다.

패치가 적용되지 않은 경우의 위험은 무엇인가요?

패치가 적용되지 않은 경우, 공격자는 원격으로 서버를 장악할 수 있으며, 이는 심각한 데이터 유출 및 시스템 손상을 초래할 수 있습니다.

이전 글: 부산 해운대 빛축제: 겨울 크리스마스 여행의 필수 코스