심각한 React2Shell CVE-2025-55182 보안 취약점 전 세계 215만 서버 위험

박스쿤
박스쿤
읽음 1
리액트취약점

React2Shell(CVE-2025-55182)은 React Server Components의 Flight 프로토콜에서 발생하는 안전하지 않은 역직렬화(Unsafe Deserialization) 취약점입니다. CVSS 10.0의 최고 등급 심각도를 받았으며, 인증 없이 단순한 HTTP 요청만으로 원격 코드 실행(RCE)을 달성할 수 있습니다.

12월 3일 React와 Vercel이 공동으로 패치를 배포했습니다. 그러나 패치가 공개된 지 불과 30시간 만에 공개 개념 증명 코드가 등장했고, 현재는 중국과 연계된 해킹 그룹들이 적극적으로 이 취약점을 악용하고 있는 것으로 확인되었습니다.

전 세계적으로 약 215만 개의 웹 서비스가 이 취약점에 노출되어 있으며, 한국에서도 약 1만 대의 서버가 위험에 처해 있는 것으로 파악되고 있습니다. 

어떻게 동작하는가

React2Shell은 React 서버 컴포넌트의 Flight 프로토콜에서 발견된 안전하지 않은 역직렬화 취약점입니다. React 19 버전에서 도입된 서버 컴포넌트 기능은 클라이언트와 서버 간에 컴포넌트 데이터를 직렬화하여 전송하는데, 이 과정에서 서버 측이 수신한 데이터를 제대로 검증하지 않는 문제가 있었습니다. 공격자는 악의적으로 조작된 HTTP 요청을 서버 함수 엔드포인트로 전송할 수 있으며, React가 이를 역직렬화하는 과정에서 임의의 자바스크립트 코드가 서버에서 실행되는 결과를 초래합니다.

이 취약점의 가장 위험한 점은 인증이 전혀 필요하지 않다는 사실입니다. 공격자는 계정, API 키, CSRF 토큰, 세션 없이도 단순히 조작된 HTTP POST 요청만으로 서버를 완전히 장악할 수 있습니다. 더욱이 이 취약점은 기본 설정에서 발동되기 때문에, 개발자가 별도의 보안 설정을 하지 않았다면 거의 모든 배포 환경이 즉시 공격 가능한 상태가 됩니다. React는 내부적으로 클라이언트가 악의적인 데이터를 보내지 않을 것이라고 가정하고 설계되었고, 이러한 신뢰 기반 구조가 치명적인 약점으로 드러난 것입니다.

영향을 받는 시스템과 프레임워크

React2Shell 취약점은 React 19.0, 19.1.0, 19.1.1, 19.2.0 버전에 영향을 미치며, 특히 react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack 패키지를 사용하는 모든 애플리케이션이 해당됩니다. Next.js의 경우 15.x와 16.x 전체 버전, 그리고 14.3.0-canary.77 이후의 카나리 릴리스가 취약한 것으로 확인되었습니다. Next.js는 기본적으로 React 서버 컴포넌트를 자동으로 활성화하기 때문에, 개발자가 명시적으로 서버 액션을 구현하지 않았더라도 기본 프로젝트조차 취약할 수 있습니다.

영향을 받는 것은 React와 Next.js만이 아닙니다. React Router, Waku, Parcel, Vite, RedwoodSDK 등 React 서버 컴포넌트를 기반으로 하는 다양한 프레임워크와 번들러들도 모두 위험에 노출되어 있습니다. 취약한 react-server-dom-* 모듈을 번들링하는 모든 도구와 플러그인이 잠재적으로 영향을 받을 수 있어, 실제 피해 범위는 예상보다 훨씬 광범위할 수 있습니다. Wiz 리서치에 따르면 클라우드 환경의 약 39%가 이 취약점에 영향을 받을 수 있는 시스템을 보유하고 있다고 보고했습니다.

한국의 경우, 초기 보도에서는 18만 대라는 숫자가 언급되기도 했으나, 실제로는 약 1만 대 정도의 서버가 React2Shell 취약점에 노출되어 있는 것으로 보입니다. 이는 한국 내 웹 서비스들이 Next.js와 같은 현대적인 프레임워크를 적극적으로 도입하고 있음을 보여주는 동시에, 해당 기술 스택을 사용하는 기업들이 시급히 보안 패치를 적용해야 한다는 점을 강조합니다. React와 Next.js는 한국의 스타트업부터 대기업까지 광범위하게 채택된 기술이기 때문에, 금융, IT, 전자상거래, 교육 등 다양한 산업 분야가 잠재적 위험에 노출되어 있습니다.

패치 버전과 즉각적인 대응 방안

React 팀은 19.0.1, 19.1.2, 19.2.1 버전에서 이 취약점을 수정했습니다. Next.js의 경우 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 버전으로 업그레이드해야 합니다. 취약 여부는 npm audit 명령으로 확인할 수 있으며, 해결책은 패치된 버전으로 즉시 업그레이드하는 것입니다. 개발자들은 create-next-app으로 생성된 코드 수정이 없는 기본 애플리케이션조차도 취약할 수 있다는 점을 인식해야 합니다.

보안 전문가들은 다음과 같은 즉각적인 대응 조치를 권고하고 있습니다.

  • 첫째, 영향을 받는 모든 시스템을 즉시 패치된 버전으로 업데이트해야 합니다.
  • 둘째, 취약한 React/Next.js 버전을 스캔하고 서버 컴포넌트가 사용 중인지 확인하며 인터넷에 노출된 애플리케이션을 평가해야 합니다.
  • 셋째, 가상 패치를 배포하고 클라우드 제공업체 보호 기능을 활성화하며 향상된 모니터링을 구현해야 합니다.
  • 넷째, 비정상적인 아웃바운드 연결을 모니터링해야 합니다

일부 기업들은 보안 패치를 지연시키거나 완전히 건너뛰고 WAF나 클라우드 제공업체에만 의존하여 공격을 차단하려 합니다. 그러나 보안 연구자들은 이미 공격이 유통되고 있으며 WAF가 모든 공격을 막을 수 없다고 경고합니다. 공격자들은 WAF를 우회하기 위해 사실상 무한한 방식으로 페이로드를 조정할 수 있는 이점을 가지고 있습니다. 대규모 악용이 시작되면 WAF 보호가 신속하게 우회될 것이며, 패치되지 않은 인스턴스는 모두 공격받을 것입니다.

댓글 0

댓글 0개

댓글을 남기시면 관리자가 최대한 빠르게 확인 후 답글을 남겨드립니다.
구글 간편 로그인 후 댓글 작성시 포인트가 누적되며, 회원전용글 열람이 가능합니다.

댓글 남기기

이 글이 마음에 드시나요?

최신 소식과 유용한 정보를 메일함으로
무료로 받아보세요!

이미 구독 중이신가요? 로그인