React2Shell (CVE-2025-55182)

seohyun Kang·2025년 12월 17일

React

목록 보기
12/12

Introduction

AWS에서 호스팅 중인 웹 서비스에 대하여 AWS에서 Abuse 리포트를 보냈다.

내용을 확인해 보니 내 서버에 봇이 설치되어 있다는 내용이었고, 서버에 접근하여 로그를 확인해보니 아래와 같은 알 수 없는 에러가 잔뜩 발생해 있었다.

⨯ Error: NEXT_REDIRECT
    at ignore-listed frames {
 digest: 
   ... 환경 변수 정보
}
 ⨯ Error: NEXT_REDIRECT
    at ignore-listed frames {
  digest: '.\n..\n.next\nnode_modules\npackage.json\npublic'
}

에러는 환경변수 등 서버에 있는 데이터를 읽어간듯 보였다.

해당 서버는 WAF를 붙이지 않아서 발생한 문제인가 생각하던 중, React2Shell이라는 RCE 버그리포트를 발견했다.

원인

해당 이슈는 React의 서버 컴포넌트에서 발생했다. JSON은 데이터 처리에 좋은 직렬화 형식이지만 복잡한 React 컴포넌트를 다루기에는 부적합했고 이를 위해 React는 Flight Protocol이라는 고유의 직렬화 방식을 사용하는데, 문제의 원인은 JSON 데이터를 역직렬화하는 과정에서 __proto__ 의 hasOwnProperty 와 같은 검증 기능의 부재로 __proto__ 오염이 발생할 수 있었다고 한다.

해결책

현재는 긴급 패치가 올라와서

Target    Latest Patch Version with Fixed Vulnerabilities

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, 15.6.0, 16.0.7

버전으로 업그레이드하면 문제가 해결되고

Error: Failed to find Server Action "x". This request might be from an older or newer deployment.
Read more: https://nextjs.org/docs/messages/failed-to-find-server-action
    at ignore-listed frames

공격이 들어오면 위와 같은 로그가 남는다.

결과

내 서버는 불행하게도 털려버렸고 DB 백업본을 만들고 인스턴스를 다시 올려야 하는 상황이다. 공격을 한 번 당하니까, 아 이래서 DB 서버를 따로 격리하는 구나 하고 깨닫게 되는 좋은 시간이었다.


Reference :
엔키 화이트해커
Next.js - Security Advisory
CVE-2025-55182
RCE in React Server Components

0개의 댓글