React Server Components 보안 이슈가 남긴 것들

(Next.js 15/16 app router를 사용한다면 점검이 필요합니다)

최근 공개된 RSC 보안 취약점(CVE-2025-55182)은 단순한 패치 이슈로 끝날 만큼 가벼운 사건은 아니었습니다. 많은 팀이 실제로 영향을 받았고, 그보다 더 중요한 것은 이번 일이 현대 웹 아키텍처가 가진 구조적 위험을 드러냈다는 것입니다.


개발 환경이 편리해질수록 우리는 종종 “프레임워크가 알아서 해주겠지”라고 믿습니다.

하지만 이번 이슈는 그 믿음이 어디까지 유효한지 다시 생각하게 합니다..!


👉 이번 취약점의 핵심 -> 직렬화와 역직렬화가 곧 보안 경계라는 사실

React Server Components는 클라이언트가 서버에 서버 함수를 호출할 수 있도록 Flight 프로토콜을 사용합니다. 클라이언트가 직렬화한 payload를 서버가 역직렬화하여 어떤 함수를 어떻게 실행할지 결정하는 구조입니다.


이 구조가 핵심 문제입니다. 공격자가 조작한 payload를 서버가 정상 호출로 받아들이면서, 인증 없이 원격 코드 실행(RCE)이 가능해졌습니다. Server Action을 직접 만들지 않았더라도, 프레임워크 내부의 RSC 엔드포인트가 노출되어 있다면 공격 가능한 부분이 있었습니다. “우리는 RSC를 크게 쓰지 않는데요?”라고 하더라도, 안전을 보장할 수 없습니다.


영향을 받은 버전 범위

- React 19.0.0~19.2.0

- 이를 기반으로 동작하는 Next.js 15.x / 16.x(App Router)

- React Router RSC 프리뷰, Waku, Vite RSC plugin 등 RSC를 구현한 도구들 전반


위 버전을 사용하고 있거나, 서버에서 RSC 또는 Server Actions를 사용하고 있다 에

해당된다면 즉시 패치하는 것이 가장 현실적인 대응입니다.

(패치는 React 19.0.1 / 19.1.2 / 19.2.1, Next.js는 15.0.5+ 혹은 16.0.7 이상에서 제공됩니다.)


저는 이 사건을 보면서 개발 방식에 대해 몇 가지 생각을 다시 정리하게 되었습니다.

첫째, 추상화 뒤에 무엇이 있는지, 어떻게 동작하는지 이해하지 못하면, 결국 리스크 관리에 실패한다는 것입니다. Server Actions는 생산성을 극적으로 높이지만, 그 내부는 결국 RPC 구조이며, 직렬화 포맷과 역직렬화 로직이 공격 포인트가 될 수 있습니다. 이는 일반적으로 추상화 되어있기에 신뢰하며 보안 취약점에서 놓치기 쉬운 부분입니다.


둘째, 보안은 기능의 문제가 아니라 구조의 문제입니다. 어떤 코드가 실행되느냐보다, 그 코드가 어떻게 선택되고, 어떻게 검증되는지가 훨씬 중요합니다.


셋째, AI가 구현을 대신하는 시대일수록 개발자의 역할은 더욱 설계로 이동한다는 점입니다. 구현 자체는 자동화될수록 쉬워지지만, 구조를 읽고 판단하는 능력은 오히려 더 중요해지고 있습니다.


이번 보안 이슈는 단순한 버그라기보다, 우리가 기술을 선택할 때 어떤 관점으로 봐야 하는지 다시 생각하게 하는 사건이었습니다. 프레임워크가 많은 것을 대신해주는 시대지만, 결국 개발자가 구조를 이해하고 있느냐가 중요합니다.

여러분은 이번 사건을 어떻게 바라보고 계신가요? 프레임워크의 추상화를 어디까지 신뢰할 수 있다고 생각하시나요? 그리고 AI가 구현을 대신하는 시대에, 개발자는 어떤 위치에서 설계를 바라봐야 할까요? 여러분의 생각이 궁금합니다..!

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2025년 12월 6일 오전 2:09

댓글 0