
Next.js 미들웨어 인증 검사를 우회하기 위해 x-middleware-subrequest를 추가하는 CVE-2025-29927용 개념 증명 익스플로잇.
이 저장소는 Next.js에서 발견된 CVE-2025-29927 취약점에 대한 개념 증명(PoC)을 포함하고 있습니다. 이 취약점은 내부 헤더인 x-middleware-subrequest를 악용하여 인증과 같은 미들웨어 검사를 우회할 수 있습니다.
🧪 이 프로젝트는 Next.js v13.4.19로 테스트되었습니다.
git clone https://github.com/goncalocsousa1/CVE-2025-29927.git
cd CVE-2025-29927
npm install
npm run dev
http://localhost:3000
이 애플리케이션은 CVE-2025-29927 취약점을 통해 우회할 수 있는 보호된 경로를 가진 간단한 인증 시스템을 보여줍니다. 작동 방식은 다음과 같습니다:
홈 페이지 (/)
auth-token)가 설정됩니다보호된 페이지 (/protected)
auth-token 쿠키의 존재를 확인하는 미들웨어로 보호됩니다미들웨어 보호
auth-token 쿠키를 가지고 있는지 확인합니다/protected/* 경로에 접근하려고 하면 홈 페이지로 리디렉션합니다취약점 시연
x-middleware-subrequest 헤더가 어떻게 악용될 수 있는지 보여줍니다auth-token 쿠키가 없어도 공격자는 보호된 경로에 접근할 수 있습니다이 애플리케이션은 일반적으로 인증이 필요한 /protected 보호 경로를 포함합니다. 그러나 x-middleware-subrequest: middleware 헤더를 curl -H "x-middleware-subrequest: middleware" http://localhost:3000/protected와 같은 요청에 사용하면 인증 검사를 우회할 수 있습니다.
Burp Suite를 사용하여 요청을 가로채고 수동으로 헤더를 추가하여 이 동작을 재현할 수도 있습니다.
Burp Suite로 시도하려면 Proxy 탭을 열고 Intercept 하위 탭으로 이동합니다. Intercept is On 상태인지 확인한 후 Open Browser를 클릭하고 보호된 경로로 이동합니다: http://localhost:3000/protected

Burp Suite가 보호된 경로에 대한 요청을 캡처합니다. 그런 다음 다음 헤더를 추가합니다: x-middleware-subrequest: middleware (위 스크린샷에서 강조 표시됨). 마지막으로 요청을 전달하고 보호된 경로에 접근합니다.

다음 패치된 버전 중 하나로 업데이트하세요: