서버 및 클라이언트 처리의 하이브리드 모델을 향한 웹 개발 산업의 전환은 RSC(React Server Components)의 도입으로 정점에 도달했습니다. 그러나 이러한 혁명은 전례 없는 보안 문제를 야기하기도 합니다. 2025년 12월부터 2026년 1월까지 일련의 심각한 취약점이 발견되어 React 19 및 Next.js 15/16을 사용하는 애플리케이션의 기반이 흔들렸습니다. "React2Shell" 원격 코드 실행(RCE) 취약점(CVE-2025-55182)을 시작으로 후속 심층 연구를 통해 데이터 전송 프로토콜 및 시스템 최적화 기능에 깊은 곳에 있는 일련의 서비스 거부(DoS) 약점이 계속해서 드러났습니다. 이 보고서는 GHSA-83fc-fqcc-2hmg, CVE-2025-59471, CVE-2025-59472를 포함한 최신 DoS 취약점을 심층적으로 살펴봅니다.
1. RSC 시대의 보안 위협의 진화
긴급성을 이해하려면 "React2Shell" 이벤트(CVE-2025-55182)의 역사적 맥락을 고려해야 합니다. 2025년 말, 보안 커뮤니티는 React의 "Flight" 프로토콜에서 안전하지 않은 역직렬화 버그를 식별하여 CVSS 점수 10.0으로 RCE를 허용했습니다. 패치가 배포되었지만 RCE 해결 노력은 의도치 않게 다른 잘못된 처리 로직을 노출시켜 공격자가 악성 코드를 실행하지 않고도 서버를 충돌시키거나 리소스를 고갈할 수 있는 시나리오로 이어졌습니다.
최근 DoS 취약점은 React의 데이터 처리 로직과 Node.js 환경 간의 복잡한 상호 작용의 결과입니다. 애플리케이션이 서버 측 렌더링을 위해 사용자로부터 복잡한 데이터 구조를 허용하면 리소스 관리 위험에 직면하게 됩니다.
주요 DoS 취약점 목록(2026년 1월 26일 업데이트):
GHSA-83fc-fqcc-2hmg:
react-server-dom-*패키지에 영향을 미칩니다. 공격자가 서버 기능 엔드포인트에 특수 제작된 HTTP 요청을 보내 서버 충돌이나 메모리 오버플로를 유발합니다.CVE-2025-59471: Next.js Image Optimizer의 취약점.
remotePatterns가 활성화되면 발생하며, 너무 큰 원격 이미지로 인해 OOM(메모리 부족)으로 인해 서버가 충돌할 수 있습니다.CVE-2025-59472: Next.js PPR(최소 모드)의 취약성. 재개 엔드포인트에 영향을 주어 Zipbomb 공격 또는 무제한 버퍼링을 허용합니다.
CVE-2025-55184: RSC의 Promise 참조 회전으로 인해 이벤트 루프가 충돌합니다.
2. GHSA-83fc-fqcc-2hmg 취약점의 기술적 메커니즘
2026년 1월 26일 업데이트의 초점은 GHSA-83fc-fqcc-2hmg입니다. 연구원들은 이전 DoS 패치(예: CVE-2025-55184)에 결함이 있음을 발견했습니다. 문제는 react-server-dom-webpack, react-server-dom-parcel 및 react-server-dom-turbopack 패키지에 있습니다.
역직렬화 및 무한 루프
React의 Flight 프로토콜은 데이터를 덩어리로 나눕니다. 각 블록은 다른 블록을 참조할 수 있습니다. 취약점은 디코딩 메커니즘이 순환 참조를 발견할 때 발생합니다. 공격자는 중첩된 Promise 참조를 포함하는 HTTP 요청을 생성할 수 있습니다. 서버가 이러한 Promise를 해결하려고 시도하면 무한 루프에 빠지고 Node.js의 유일한 이벤트 스트림이 충돌하여 완전한 서비스 거부가 발생합니다.
이 취약점의 CVSS 점수는 7.5이므로 인증 없이 원격 악용이 가능합니다. 개발자가 서버 기능을 정의하지 않더라도 기본 RSC 지원으로 인해 프레임워크(예: Next.js App Router)가 여전히 영향을 받을 수 있습니다.
3. Next.js 이미지 최적화 도구 취약점(CVE-2025-59471)
이 취약점은 remotePatterns를 통해 외부 이미지 최적화를 사용하는 자체 호스팅 Next.js 애플리케이션에 영향을 미칩니다.
메커니즘: 엔드포인트
/_next/image는 최대 파일 크기를 확인하지 않고 원격 소스 메모리에서 이미지를 로드합니다. 한도.악용: 공격자는 승인된 도메인에서 매우 큰 이미지를 최적화하도록 요청합니다. Node.js가 이 대용량 데이터를 로드하면 JavaScript 힙 제한을 빠르게 초과하여 프로세스가 중단됩니다.
영향을 받는 버전: Next.js >=10 ~ <15.5.10 및 >=16 ~ <16.1.5. Vercel의 애플리케이션은 인프라 보호 메커니즘으로 인해 영향을 받지 않습니다.
4. Next.js PPR 및 최소 모드 취약점(CVE-2025-59472)
CVE-2025-59472는 실험적인 부분 사전 렌더링(PPR) 및 "최소 모드"(NEXT_PRIVATE_MINIMAL_MODE=1)에 관한 것입니다.
무제한 버퍼링: 서버는 크기를 확인하지 않고 메모리에 요청 본문을 포함하기 위해
Buffer.concat()를 사용합니다. 크기.Zipbomb 공격: 압축된 데이터는 출력 제한 없이
inflateSync()를 사용하여 압축이 풀립니다. 압축된 작은 페이로드는 메모리에서 기가바이트까지 확장되어 프록시 레이어의 검사 제한을 초과할 수 있습니다.
결과는 FATAL ERROR: Reached heap Limit Allocation failed - JavaScript heap out of memory 오류로, Node.js 프로세스가 즉시 종료됩니다.
5. 비동기 후크 및 APM의 영향
Tan Phat Digital이 언급한 기술적 세부 사항 중 하나는 Node.js에서 async_hooks의 역할입니다. React와 Next.js는 AsyncLocalStorage를 사용하여 요청 컨텍스트를 추적합니다. Datadog 또는 OpenTelemetry와 같은 모니터링(APM) 도구를 사용할 때 async_hooks가 항상 활성화됩니다. 이 환경에서는 RSC로 인한 스택 오버플로 오류로 인해 Node.js가 오류 코드 500을 반환하는 대신 오류 코드 7로 완전히 종료되어 DoS 공격이 더욱 심각해집니다.
6. 완화 및 업그레이드 전략
완전한 해결을 위해서는 소프트웨어 업데이트 및 인프라 구성 변경이 필요합니다.
버전 업데이트(최우선 순위)
조직은 잠금 파일을 검토하고 2026년 1월 26일에 출시된 보안 버전으로 업그레이드해야 합니다.
React 19.0.x: 버전에서 업데이트 19.0.0 - 19.0.3에서 버전 19.0.4로.
React 19.1.x: 버전 19.1.0 - 19.1.4에서 버전 19.1.5로 업데이트합니다.
React 19.2.x: 버전 19.2.0 - 19.2.3에서 버전 19.2.4로 업데이트합니다.
Next.js 15.x: 15.5.10 이전 버전에서 15.5.10 버전으로 업그레이드합니다.
Next.js 16.x: 16.1.5 이전 버전에서 16.1.5 버전으로 업그레이드합니다.
임시 보호 조치
인프라: 프록시(Nginx/Apache)에서
client_max_body_size를 설정하여 무제한 방지 버퍼링.구성: 이미지 최적화 프로그램의
remotePatterns에서 신뢰할 수 없는 도메인을 제한하거나 제거합니다.비활성화: PPR 기능을 비활성화하거나(
experimental.ppr: false) 또는 최소 모드를 비활성화합니다. 필요합니다.WAF: 방화벽 규칙(예: vWAF)을 업데이트하여 변칙적인 RSC 페이로드 또는
Next-Resume: 1헤더가 있는 POST 요청을 탐지하고 차단합니다.
이러한 취약점이 지속적으로 나타나는 것은 RSC가 성숙하기 어렵다는 것을 나타냅니다. Tan Phat Digital에서는 기업이 점점 더 복잡해지는 DoS 공격 시나리오에 대비하여 서비스 가용성을 보장하기 위해 시스템을 즉시 검토하고 업그레이드할 것을 권장합니다.
공유








