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 설정 확인 + 보안 모니터링 체계 강화가 필요합니다.
댓글 남기기
댓글목록 14
이 주제를 이렇게 설명해주셔서 좋네요 👍
테스트 댓글입니다.
테스트 댓글
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.
test comment
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.
test comment
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.
테스트 댓글
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.
Test comment
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.
test comment
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.