최근 공개된 React2Shell 취약점은 React 개발 환경에서 특정 조건이 충족될 경우 공격자가 원격 코드 실행(RCE)을 수행할 수 있는 중대한 보안 문제였습니다. 본 글에서는 해당 취약점의 동작 원리, 영향 범위, 그리고 대응 방안을 설명합니다.
React2Shell이란?
- React2Shell은 2025년 12월 3일, React 개발팀이 공개한 취약점으로, 공식 명칭은 CVE-2025-55182 입니다.
- 이 취약점은 React Server Components (RSC) 및 이에 의존하는 프레임워크들(예: Next.js)에서 발생하며, 인증 없이 원격에서 악의적 코드를 실행(RCE) 할 수 있는 위험한 결함입니다.
- 위협 수준은 CVSS 기준 “10.0 / 최대 심각도”로 평가되었고, 이미 공개된 PoC(Proof-of-Concept)가 존재하며, 실제로 공격 시도가 보고되고 있습니다.
실제 취약점의 원인: 무엇이 잘못되었나?
📄 Unsafe deserialization (비안전한 역직렬화)
- React2Shell의 근본 원인은, RSC의 내부 통신 프로토콜인 “Flight”가 클라이언트가 보낸 HTTP 요청(payload)을 적절히 검증하지 않고 역직렬화(deserialize)한다는 점입니다.
- 이 과정에서 공격자가 조작한 데이터가 신뢰된 객체로 오인되어 내부 함수 호출이 가능해지며, 이로 인해 서버 측에서 arbitrary code execution — 즉 악성 자바스크립트 실행이 이뤄질 수 있습니다.
어떤 환경이 위험한가?
| 취약한 경우 / 조건 | 설명 |
|---|---|
| React Server Components 19.0.0 ~ 19.2.0 사용 | react-server-dom-webpack / parcel / turbopack 버전이 취약 대상입니다. |
| Next.js 15.x 또는 16.x (App Router 기반, RSC 사용) | Next.js 프로젝트가 기본 설정으로 RSC를 포함하는 경우 영향을 받을 수 있습니다. |
| 서버가 외부 인터넷에 노출되어 있고, RSC 엔드포인트가 활성화된 경우 | 인증이 없어도 원격에서 요청이 가능하므로, 인터넷-facing 서버는 특히 주의가 필요합니다. |
대응 방법 및 권장 조치
- 즉시 패치 적용
- React Server Components의 경우:
react-server-dom-webpack,parcel,turbopack등을 포함한 19.0.1, 19.1.2, 19.2.1 버전으로 업데이트해야 합니다. - Next.js 사용하는 경우: 안전 패치가 적용된 Next.js 버전으로 업그레이드해야 합니다. ([Invicti][6])
- React Server Components의 경우:
- 공개된 RSC 엔드포인트 점검 및 필요 시 비활성화
- 만약 RSC(Server Components)를 사용하지 않는다면, 설정에서 비활성화하거나 서버 접근을 내부망으로 제한하는 것이 안전합니다.
- Web Application Firewall (WAF) 또는 네트워크 필터링은 임시 방어책
- 일부 보안 업체가 WAF 룰을 제공 중이나, 이는 영구적인 해결책이 아니며 우회 가능성이 있음. 궁극적인 해결책은 패치입니다.
- 보안 감사 및 로그/탐지 체계 강화
- 의심스러운 요청, 비정상적인 자바스크립트 실행, unexpected child_process 호출 등을 모니터링해 침해 여부를 감지할 수 있도록 해야 합니다.
결론
React2Shell은 단순한 개발 편의 기능이 아니라, 서버 사이드 환경에서 인증 없이 원격 코드 실행이 가능한 중대한 보안 취약점입니다. 특히 많은 현대 웹 애플리케이션이 사용 중인 React + Next.js 생태계에 걸쳐 있어, 이를 방치할 경우 서버 전체가 완전히 장악되는 리스크가 있습니다. 따라서 아직 패치하지 않았다면, 즉시 버전 점검‧업데이트 + RSC 설정 확인 + 보안 모니터링 체계 강화가 필요합니다.
댓글 남기기
댓글목록 1
U
익명 사용자
2025.12.13 22:52
이 주제를 이렇게 설명해주셔서 좋네요 👍