React 취약점: 2025년 최신 보안 이슈 정리

최근 React 에서 치명적인 보안 취약점이 공개되면서, 웹 개발 커뮤니티와 보안 업계가 크게 술렁이고 있습니다. 이 글에서는 지금 화제가 되고 있는 “React 취약점”의 본질과 영향, 대응 방안까지 정리해보겠습니다.

왜 지금 React 취약점이 이슈인가

서버 컴포넌트(RSC)가 보안 구멍이 됐다

React는 그동안 프론트엔드 UI를 구성하는 라이브러리로 널리 사용되어 왔지만, 최근 도입된 서버 컴포넌트(Server Components, RSC) 기능에서 심각한 보안 결함이 발견되었습니다. 이 RSC는 서버에서 렌더링 혹은 로직을 수행한 뒤 클라이언트에 전달하는 구조를 지닌 기능입니다.

하지만, 이 과정에서 Flight 프로토콜의 역직렬화(deserialization) 로직에 결함이 있었고, 이로 인해 외부에서 조작된 요청(payload)을 보내면 서버가 이를 제대로 검증하지 못해 악의적인 코드를 실행할 수 있는 상황이 발생했습니다.

CVE-2025-55182 / CVE-2025-66478 — “CVE-2025-55182” (및 관련)

  • 메인 취약점은 CVE-2025-55182 로, React RSC의 Flight 프로토콜에서 발견된 RCE(Remote Code Execution) 결함입니다.
  • 이 취약점의 심각도는 CVSS 10.0으로 최고 등급이며, 인증 없이 공격자가 원격에서 arbitrary code 실행이 가능합니다.
  • 또한, Next.js 같이 React를 서버 사이드 렌더링이나 서버 컴포넌트로 사용하는 프레임워크 역시 영향을 받습니다. Next.js 측에서는 CVE-2025-66478 로 별도 추적 중입니다.

이 때문에 이번 취약점은 흔히 “React2Shell” 이라는 별칭으로 불리며, 과거 Log4Shell 과 견줄만한 심각함이라는 평가도 나옵니다.

어떤 영향이 있는가

기본 설정만으로 뚫릴 수 있다

특히 충격적인 점은, 이 취약점이 코드를 특별히 수정하지 않은 기본 설정의 앱에서도 발생할 수 있다는 것입니다. 즉, “react-server-dom-webpack / parcel / turbopack” 등을 사용한 표준 React 19.x 앱, 혹은 Next.js 앱이라면 별도 커스텀 없이도 위험에 노출될 수 있습니다.

전 세계 수많은 서버가 위험군

React와 Next.js는 전 세계적으로 매우 널리 사용되는 기술입니다. 보안 기업들의 분석에 따르면, 클라우드 환경의 약 39~40%가 취약한 React/Next.js 인스턴스를 포함하고 있다는 보고도 있습니다.

만약 공격자가 이를 악용하면, 서버 정보 유출, 계정 탈취, 내부 시스템 침투, 심지어 클라우드 크리덴셜 탈취나 암호화폐 채굴 같은 후속 악용까지 현실적인 위협이 된다고 경고됩니다.

기술적으로 무슨 문제가 생긴 건가

역직렬화 취약점 & 프로토타입 폴루션

문제의 핵심은 unsafe deserialization 입니다. React RSC가 실질적으로 서버 → 클라이언트 사이의 정보를 주고받기 위해 사용하는 “Flight” 요청에서, 전달된 데이터를 제대로 검증하지 않고 역직렬화하면서 악의적인 속성(property), 예: __proto__, constructor 등을 포함한 객체가 주입될 수 있었습니다.

이는 자바스크립트 객체의 프로토타입 체인에 변화를 일으킬 수 있는, 일종의 프로토타입 폴루션(Prototype Pollution) 공격으로 악용되며, 이로 인해 서버측에서 arbitrary code execution (임의 코드 실행)이 가능해집니다.

인증 불필요 + 공격 성공률 높음

공격자는 별도의 인증(auth) 없이 단순히 crafted HTTP 요청만 보내면 되며, 보안 기업들의 실험에서는 거의 100%에 가까운 성공률이 나왔다고 보고되고 있습니다.

이런 속성 덕분에, 사실상 누구나 쉽게 공격 가능하며, 공격 자동화가 현실화된 지금 환경에서는 매우 긴급한 대응이 요구됩니다.

어떻게 대응해야 하는가

즉시 업그레이드

  • React 19.0, 19.1, 19.2 버전을 사용 중이라면, 가능한 한 즉시 패치된 버전(예: 19.0.1, 19.1.2, 19.2.1 등) 으로 올려야 합니다.
  • Next.js 사용자라면, Next.js에서도 RSC를 쓰는 버전(특히 15.x, 16.x, 혹은 14.x canary 등)을 사용 중인지 확인하고, 공식 권고된 안정화 버전으로 업데이트해야 합니다.

배포된 서비스 점검

배포된 서버가 인터넷에 노출되어 있다면, 현재 버전 정보를 점검하고 업데이트 여부를 확인해야 합니다. 일부 국내 보안 업체들은 무료 점검 도구(예: RSC-check 등)를 제공하고 있으므로 내부 리스크 평가에 활용할 수 있습니다.

RSC 사용 여부 재검토

서버 컴포넌트(RSC)를 사용하고 있지 않더라도, 프로젝트 설정이나 의존성(d dependencies) 중에 react-server-dom-webpack / parcel / turbopack 등 패키지가 포함되어 있는지 확인할 필요가 있습니다. 공격자는 의도치 않게 포함된 패키지를 통해서도 침투할 수 있기 때문입니다.

이번 취약점이 주는 의미

오픈소스 생태계의 복잡성과 위험

이번 사건은 단순한 버그가 아니라, 오픈소스 생태계에서의 의존성(dependency)구성(configuration) 관리가 얼마나 중요한가를 보여줍니다. 특히 React나 Next.js처럼 대중적이고 광범위하게 쓰이는 라이브러리는, 많은 하위 패키지와 설정이 얽혀 있어서 “나만 괜찮겠지”라는 생각이 얼마나 위험한지 깨닫게 합니다.

보안은 프레임워크 레벨에서도 기본값부터 따져야

개발자가 코드를 특별히 작성하지 않았더라도, 프레임워크 기본 설정만으로 취약점이 발생할 수 있다는 것은, 앞으로 프레임워크 개발자와 유지보수자가 보안을 더 우선시해야 함을 의미합니다.

웹 생태계 전반의 경고

React는 단일 라이브러리에 그치지 않고, 많은 웹사이트와 서비스의 기반이 되어왔습니다. 이번 취약점은 단지 React만의 문제가 아니라, 웹 생태계 전체의 보안 수준과 리스크 관리가 얼마나 중요한지를 환기시켜줍니다.

마무리 정리

React 취약점, 특히 RSC 기반의 서버 컴포넌트 취약점은 지금 즉각적인 대응이 필요한 심각한 보안 이슈입니다. 만약 당신이 React 또는 Next.js 기반의 웹 애플리케이션을 운영 중이라면 다음 단계를 당장 수행하는 것을 추천합니다.

  • 사용 중인 React / Next.js / 관련 패키지 버전 확인
  • 취약한 버전이라면 즉시 패치 / 업그레이드
  • RSC 사용 여부 점검 및 불필요하다면 제거 고려
  • 공개된 취약점(CVE-2025-55182 등)에 대한 보안 공지 주시

이제는 단순히 기능과 퍼포먼스만을 신경 쓸 때가 아니라, 보안까지 포함한 “풀 스택 관점”이 필수가 되었습니다.


참고

댓글 남기기