React는 재사용 가능한 컴포넌트를 사용하여 상호작용적인 사용자 인터페이스를 구축하는 데 사용되는 JavaScript 라이브러리입니다. React Server Components(RSC)는 특정 컴포넌트와 로직을 브라우저가 아닌 서버에서 실행할 수 있도록 함으로써 이러한 모델을 확장합니다.
next.js와 같은 프레임워크는 RSC에 크게 의존하기 때문에 이 영역의 보안 결함은 특히 큰 영향을 미칩니다.
취약점 개요
CVE-2025-55182는 React 서버 컴포넌트의 심각한 원격 코드 실행(RCE) 취약점입니다.
- 공격 유형: 원격 코드 실행
- 인증 필요 여부: 아니오
- 사용자 상호작용: 없음
- 심각도: 매우 심각함
- 영향을 받는 생태계: React RSC, Next.js
공격자는 조작된 요청을 RSC 엔드포인트로 전송하여 서버에서 임의 코드를 실행할 수 있습니다.
취약점 심층 분석
React 서버 컴포넌트는 플라이트 프로토콜이라는 사용자 지정 와이어 포맷을 사용합니다.
비행 탑재체는 다음을 담당합니다.
- 서버에서 렌더링된 컴포넌트 출력 전송 중
- 소품과 자원 전달
- 서버 함수 참조
- 서버에서 JavaScript 객체 그래프를 재구성합니다.
서버가 항공편 요청을 수신하면 다음과 같은 상황이 발생합니다.
- React는 페이로드를 디코딩합니다.
- 참조를 해결합니다
- JavaScript 객체를 재구성합니다.
- 필요에 따라 서버 측 로직을 실행합니다.
이 디코딩 단계가 취약점이 존재하는 부분입니다.
근본 원인
이 취약점의 근본 원인은 Flight 프로토콜 데이터 디코딩 과정에서 객체 속성이 해석되는 방식에 있습니다.
React는 수신된 페이로드를 디코딩할 때, 페이로드에서 제공된 속성 이름을 사용하여 JavaScript 객체의 값에 접근하는데, 이때 해당 속성이 객체 자체에 속하는지 여부는 확인하지 않습니다.
자바스크립트에서 속성에 접근하는 방법은 다음과 같습니다. 객체[키] 객체에 명시적으로 정의된 속성으로만 조회를 제한하지 않습니다.
해당 속성을 찾지 못하면 JavaScript는 자동으로 프로토타입 체인을 따라 위쪽으로 검색을 계속합니다. 하지만 속성 이름이 특정 조건을 만족하지 못할 경우 이러한 동작은 위험해질 수 있습니다. (키) 공격자가 제어합니다.
악용 메커니즘
- 공격자는 RSC/서버 함수 페이로드를 허용하는 프레임워크 경로로 조작된 Flight 페이로드를 POST 방식으로 전송합니다.
- 멀티파트 방식을 사용하는 경우, Busboy는 스트림을 파싱하여 React 디코더에서 소비하는 청크 단위로 출력합니다.
- 디코더는 자체 속성 검사 없이 공격자가 영향을 준 속성 이름을 사용하여 참조를 해결합니다.
- 프로토타입 체인 속성에 접근할 수 있게 되어, 가젯 기반 공격을 통해 원격 코드 실행(RCE)으로의 확장이 가능해집니다.
패치 분석
이 패치는 서버 측과 클라이언트 측의 Flight Protocol 처리를 동기화하고, React 서버 컴포넌트가 모듈 내보내기를 디코딩하고 해석하는 방식을 강화하여 중요한 보안 문제를 해결합니다. 또한 명시적인 자체 속성 검사를 추가합니다. hasOwnProperty 모듈 내보내기 객체에서 값을 반환하기 전에 공격자가 제어하는 키가 상속된 프로토타입 속성을 해석하는 것을 방지합니다. 또한 필드 및 파일 처리와 관련된 오류 처리를 추가하여 멀티파트 페이로드 디코딩의 견고성을 향상시킵니다. 이러한 변경 사항들을 통해 이전에는 역직렬화 중에 프로토타입 체인 접근을 가능하게 했던 안전하지 않은 속성 해석을 차단합니다.
공격 활동 및 관련 악성코드 캠페인
| 악성코드 캠페인
|
React2Shell을 이용한 공격 사슬 |
| 크립토재킹 캠페인 | 공격자들은 React2Shell을 악용하여 드로퍼 bash 스크립트를 실행했고, 이 스크립트는 추가 스크립트와 gzip으로 압축된 파일을 포함한 여러 2단계 페이로드를 다운로드했습니다.
|
| 크립토재킹 캠페인
|
공격자들은 이 취약점을 악용하여 Mirai 봇넷 구성 요소와 xmrig 암호화폐 채굴 프로그램을 배포하여 대규모 암호화폐 채굴 공격을 감행했습니다.
|
| UNC6600 – 미노캣 | 공격자들은 이 취약점을 악용하여 원격 코드 실행 권한을 획득하고 MINOCAT 터널러를 배포하는 bash 스크립트를 실행함으로써 네트워크 지속성과 은밀한 접근을 가능하게 했습니다.
|
| UNC6586 – 스노우라이트 | 공격자들은 curl 또는 wget을 사용하여 백도어 역할을 하고 추가 페이로드 전달을 가능하게 하는 SNOWLIGHT 다운로더를 다운로드하고 실행했습니다.
|
| UNC6588 – 화합물 | 공격자들은 wget을 사용하여 COMPOOD 백도어를 다운로드하고 실행했는데, 이 백도어는 합법적인 바이너리로 위장하여 지속적인 접근 권한을 유지합니다.
|
완화 및 권고 사항
- React/RSC 패키지 업그레이드 (주요 수정 사항)
수정된 RSC 서버 패키지(react-server-dom-webpack / react-server-dom-parcel / react-server-dom-turbopack)를 포함하는 패치된 React 릴리스(예: 19.0.1 / 19.1.2 / 19.2.1 또는 그 이후 버전)로 업그레이드하십시오.
- 서버 작업/RSC 경로 노출을 줄입니다.
가능한 경우, 적절한 접근 제어 없이 서버 작업/RSC 처리 경로가 공개적으로 노출되지 않도록 하십시오.
- IPS/WAF 규칙 배포
IPS 서명 또는 WAF 사용자 지정 규칙을 사용하여 프로토타입 오염 키 또는 잘못된 형식의 비행 마커가 포함된 멀티파트 페이로드를 감지하고 차단하십시오.
빠른 회복 보호
Quick Heal의 모든 고객은 아래 서명을 사용하여 이 취약점으로부터 보호됩니다.
- HTTP/CVE-2025-55182!VS.50159
- HTTP/CVE-2025-55182!VS.50160
- HTTP/CVE-2025-55182!VS.50161
- HTTP/CVE-2025-55182!VS.50162
저자 :
비나이 쿠마르
아드립 무케르지
비닛 사로테



