ConfigDeck
HIGH CVSS 7.5 npm: 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 패키지 버전을 입력하면 영향 여부를 즉시 확인합니다.

이 진단 결과는 정보 제공 목적이며 무보증(AS IS)으로 제공됩니다. 실제 보안 위험 평가는 npm audit, Snyk, Dependabot 등의 공식 도구와 관리자 검토를 병행하세요. 공식 advisory에서 확인 ↗

영향 범위

영향받는 버전 범위 및 패치 버전
영향받는 범위 패치 버전
>=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 통합 릴리즈에 포함되어 있으므로, 관련된 다른 권고들과 함께 한 번의 업그레이드로 일괄 해소하는 것이 가장 효율적입니다.

참고 자료

Credits

  • · timneutkens

이 페이지는 다음 데이터 출처를 기반으로 작성되었습니다:

  • · GitHub Advisory Database (CC-BY-4.0) — github.com/advisories
  • · National Vulnerability Database (Public Domain) — nvd.nist.gov
  • · MITRE CVE Program (royalty-free) — cve.mitre.org

ConfigDeck으로 설정 파일 업데이트하기

관련 설정 파일을 ConfigDeck에서 빠르게 생성합니다.

설정 파일 생성기 →

AI 코딩 도구 설정도 점검하세요

Cursor, Copilot, Claude Code 등 AI 코딩 도구 설정을 안내합니다.

AI Config 보기 →