React Server Components(RSC)에서 임의 코드 실행을 허용하는 CVE-2025-55182가 공개됐다. 심각도 10.0 만점의 이 취약점은 JavaScript의 `constructor` 프로퍼티를 React 렌더링 도중 코드 평가에 악용한다. Vercel은 WAF 방어 레이어를 배포해 공개 후 수 주 만에 600만 건 이상의 공격 시도를 차단했고, 독립적인 100만 달러 바운티 프로그램으로 20개의 고유 우회 기법을 발굴해 즉시 패치했다.
핵심 포인트- **CVE-2025-55182 (CVSS 10.0)**: React Server Components의 RCE — `constructor` 프로퍼티로 서버에서 임의 코드 실행
- **Vercel 2단계 방어**: WAF(Seawall) 딥 페이로드 인스펙션 + 런타임 `constructor` 접근 차단 (트래픽의 96% 적용)
- **바운티 결과**: 116명 참여, 156건 제출, 20개 고유 우회 기법 발굴, 20건 WAF 업데이트 48시간 내 배포
상세 정리
취약점 메커니즘공격 페이로드는 다음과 같다:```{0: {status: "resolved_model", reason: 0, _response: {_prefix:"console.log('☠️')//", _formData: {get: "$1:then:constructor"}}}}```이 페이로드가 취약한 서버에 도달하면, `constructor` 프로퍼티가 React 렌더링 과정에서 임의 명령 실행을 트리거한다. 공격자는 서버에서 프로그램을 실행하거나 시크릿을 추출하거나 네트워크 호출을 할 수 있다.
Vercel의 2단계 방어
*Layer 1: WAF (Seawall)* 요청이 애플리케이션에 도달하기 전에 페이로드를 딥 인스펙션한다. 취약점 공개 후 수 주 만에 600만 건 이상의 공격 시도를 차단했으며, 단일 24시간 동안 230만 건을 차단한 날도 있었다.
*Layer 2: 런타임 완화* 컴퓨트 레이어에서 React 렌더링 도중 `constructor` 프로퍼티 접근 자체를 차단한다. Vercel 트래픽의 96%에 적용된다.
바운티 프로그램 결과Vercel은 WAF 우회 기법 1개당 5만 달러를 지급하는 바운티 프로그램을 운영했다:- 참여 연구자: 116명
- 총 제출: 156건
- 검증된 공개: 38건
- 고유 우회 기법: 20개
- WAF 업데이트: 20건 (48시간 내 배포)
발견된 주요 우회 기법- **재귀 UTF 인코딩**: 페이로드를 여러 번 유니코드 인코딩해 반복적인 JSON 디코딩 사이클을 유발, 패턴 매칭 방어 무력화
- **Constructor 난독화**: `:constructor` 문자열 패턴을 피하는 프로퍼티 접근 방법 — webpack 특화 가젯을 이용한 난독화
왜 읽나Next.js App Router + React Server Components를 프로덕션에서 운영하는 엔지니어라면 이 취약점의 공격 메커니즘과 방어 방법을 이해해야 한다. WAF 우회 기법 분석은 보안 엔지니어에게 실질적인 사례 연구를 제공한다. 바운티 프로그램 운영 방식도 참고할 수 있다.