next CWE-288 Next.js App Router 미들웨어 우회 (CVE-2026-44575)
- 발행
- 2026년 5월 6일
- 최종 갱신
- 2026년 5월 9일
- 상태
- Active
- GHSA
- GHSA-267c-6grr-h53f
요약
Next.js App Router 의 segment-prefetch URL(`.rsc` 변형)이 미들웨어 매처를 우회해 인증/인가 검사를 통과하지 않고 보호된 라우트의 데이터에 접근할 수 있는 high(CVSS 7.5) 취약점입니다. 15.5.16 / 16.2.5 이상으로 업그레이드해야 합니다.
내 프로젝트는 영향받나요?
사용 중인 next 버전을 입력하면 이 advisory의 영향 여부를 즉시 확인합니다.
ⓘ next 패키지 버전을 입력하면 영향 여부를 즉시 확인합니다.
영향 범위
| 영향받는 범위 | 패치 버전 |
|---|---|
| >=16.0.0 <16.2.5 | 15.5.16 |
| >=15.2.0 <15.5.16 | 16.2.5 |
호스팅 환경별 영향
이 취약점은 미들웨어를 인증 게이트로 사용하는 모든 Next.js App Router 환경에서 영향을 받습니다.
- Vercel: 영향받음. May 2026 패치 릴리즈 후 자동 업데이트 권장.
- Netlify / Cloudflare Pages: 영향받음. 호스팅 측에서 WAF 룰을 추가했더라도 Next.js 자체 패치가 적용되지 않으면 안전하지 않음 (호스팅 WAF는 보조 방어).
- Self-host Node.js: 영향받음. 미들웨어를 직접 운영한다면 즉시 패치 필요.
- Pages Router: 별도 권고(GHSA-36qx-fr4f-26g5)에서 다루며, 같은 5월 통합 릴리즈에 함께 패치됨.
취약점 메커니즘
Next.js App Router 는 클라이언트 측 라우터 캐시를 워밍하기 위해 사용자가 페이지 링크에 접근하기 전에 라우트 세그먼트를 사전 가져옵니다(prefetch). 이때 일반 페이지 URL(/admin)이 아닌 세그먼트 단위의 변형 URL(.rsc, __next/data 형태 등)이 사용됩니다.
문제는 사용자가 middleware.js/proxy.js 매처를 페이지 URL 패턴으로만 작성한 경우, 변형된 segment-prefetch URL은 매처에 매칭되지 않아 미들웨어가 실행되지 않고 통과됩니다. 결과적으로 다음 흐름이 가능합니다.
# 일반 요청: 미들웨어가 동작하여 인증되지 않은 사용자 차단
curl https://target.example.com/admin
→ 401 또는 로그인 리다이렉트
# Segment-prefetch 변형 URL: 미들웨어 매처를 우회
curl https://target.example.com/admin.rsc
→ 보호되어야 할 RSC 페이로드를 그대로 응답
CVSS 7.5(High)가 부여된 이유는 (1) 미들웨어로 보호된 데이터를 인증 없이 읽을 수 있고, (2) RSC 응답에는 보호 대상 페이지가 렌더링한 데이터가 그대로 직렬화되어 있어 사실상 콘텐츠가 노출되며, (3) 매처를 페이지 URL만 기준으로 작성한 거의 모든 App Router 프로젝트가 영향받기 때문입니다. 단, 기밀성(C:H)만 영향을 주고 무결성/가용성은 영향이 없어 인증 우회(CVE-2025-29927)보다는 한 단계 아래로 평가됐습니다.
패치 코드 예시
1. 패치 버전으로 업그레이드 (권장)
# 15.x 라인
npm install [email protected]
# 16.x 라인
npm install [email protected]
# 또는 최신 안정 버전
npm install next@latest
각 메이저별 최소 안전 버전:
- Next.js 15:
15.5.16 - Next.js 16:
16.2.5
Next.js 13.x / 14.x 는 이 취약점에 영향받지 않습니다(App Router 의 segment-prefetch 변형 URL 처리 방식이 달라짐). 단, May 2026 릴리즈의 다른 권고가 13.x / 14.x 에 영향을 줄 수 있으니 통합 advisory를 함께 확인하세요.
2. 임시 완화 방안 (패치 적용 전)
미들웨어 매처에 segment-prefetch 변형 URL 패턴을 명시적으로 포함시키는 방법으로 우회를 차단할 수 있습니다.
// middleware.ts
export const config = {
matcher: [
'/admin/:path*',
'/admin/:path*.rsc', // RSC prefetch 변형 명시 포함
'/api/:path*',
],
}
또는 호스팅 측 WAF/리버스 프록시에서 .rsc 또는 segment-prefetch 헤더가 포함된 요청에 대해서도 동일한 인증 룰을 적용하도록 구성합니다. Cloudflare 등은 May 2026 릴리즈와 함께 어댑터 차원의 완화 룰을 제공했습니다(Cloudflare 공지).
3. 패치 적용 후 확인 방법
업그레이드 후 보호된 라우트의 .rsc 변형 URL에 인증 없이 접근하면 미들웨어가 실행되어 401 또는 리다이렉트로 응답합니다.
curl -I https://target.example.com/admin.rsc
# → 401 / 302 (로그인 리다이렉트)이면 정상
정리
이 취약점은 미들웨어를 인증 게이트로 쓰는 Next.js App Router 환경에서 매처 작성 방식의 사각지대를 통해 보호된 데이터가 노출될 수 있는 결함입니다. May 2026 통합 릴리즈에 포함되어 있으므로, 관련된 다른 권고들과 함께 한 번의 업그레이드로 일괄 해소하는 것이 가장 효율적입니다.
참고 자료
- GHSA-267c-6grr-h53f (GitHub Advisory) (새 탭에서 열림)
- Vercel — Next.js May 2026 security release (새 탭에서 열림)
- Netlify — May 2026 React/Next.js 보안 분석 (새 탭에서 열림)
- Cloudflare — WAF 및 어댑터 완화 (새 탭에서 열림)
Credits
- · timneutkens
ConfigDeck으로 설정 파일 업데이트하기
관련 설정 파일을 ConfigDeck에서 빠르게 생성합니다.
설정 파일 생성기 →AI 코딩 도구 설정도 점검하세요
Cursor, Copilot, Claude Code 등 AI 코딩 도구 설정을 안내합니다.
AI Config 보기 →