1. TL;DR
취약점 명: NEXT.js Middleware Bypass Vulnerability
CVE: CVE-2025-29927
해당 취약점은 Next.js 기반 애플리케이션 내에 미들웨어(middleware) 단계에서 수행되는 인가 절차를 우회할 수 있도록 허용한다. 즉, 공격자가 정상적인 인증 및 권한 확인 절차를 우회하여 인가되지 않은 상태로 보호된 리소스에 접근할 수 있다.
2. CVE Details
2.1. Vulnerability Details
Next.js는 x-middle-subrequest
라는 내부 헤더를 사용하여 요청이 무한 루프로 발생하는 것을 막는다. 이 내부 헤더에 x-middleware-subrequest: middleware
와 같이 middleware
를 부여한다면? Next.js는 직접 사용자가 보낸 요청이 아닌, 미들웨어가 중간에서 생성하여 처리 중인 요청이라고 인식하게 된다. 따라서 공격자는 이 헤더를 사용자의 요청에 추가하여 인가 쿠키 검증(authorization cookie validation)같은 매우 중요한 확인 과정을 우회할 수 있다. 공격자는 인가(authorization)되지 않아도 리소스에 접근할 수 있게 된다. 이 취약점의 영향을 받는 버전은 다음과 같다.
- Next.js 15.x < 15.2.3
- Next.js 14.x < 14.2.25
- Next.js 13.x < 13.5.9
2.2. How the Exploit Works
해당 취약점은 요청에 x-middleware-subrequest: middleware
헤더를 추가하여 Next.js의 미들웨어 인가 확인 과정(Next.js middleware authentication checks)를 우회할 수 있다.
본 데모 애플리케이션에서 미들웨어는 인증되지 않은 사용자가 보호된 경로로 접근하는 것을 차단하고 다른 페이지로 리디렉션하는 로직을 수행하고 있다. 하지만 이 방식은 아래와 같이 요청에 x-middleware-subrequest: middleware
헤더를 추가하여 익스플로잇할 수 있다. 결과적으로 해당 인가 절차를 우회할 수 있다.
2.3. Impact of the Vulnerability
CVSS(공통 취약점 평가 시스템) 기준으로 9.1점, Red Hat Security Ratings 기준으로 Critical Impact로 CVE-2025-29927
은 중대한 영향을 주는 취약점으로 분류된다. (분류 기준은 Red Hat Understanding Red Hat Security Ratings 참고) 이 취약점은 보안 뉴스에도 보도된 사례로, 보안 뉴스에 따르면 해당 취약점이 발견된 프레임워크인 Next.js는 2016년 말에 처음 출시된 이후 주간 다운로드 수가 900만 건을 넘어 세계 개발자들 사이에서 널리 사용되고 있다. 따라서 이런 인기 있는 프레임워크에서 치명적인 취약점이 발생한다는 사실은 광범위한 생태계에 심각한 영향을 미칠 수 있다는 것을 뜻한다. 해당 취약점을 이용한 공격이 발생한다면 파급력이 매우 높을 것으로 예상된다.
3. How to fix?
3.1. Version Update
다음 패치 버전 중 하나로 업데이트하여 해당 취약점을 방지할 수 있다.
- Next.js 15.2.3 or higher
- Next.js 14.2.25 or higher
- Next.js 13.5.9 or higher
3.2. Mitigation
x-middleware-subrequest
헤더가 포함된 외부 사용자의 요청이 Next.js 애플리케이션에 도달하는 것을 차단하거나 삭제하는 코드를 추가한다. 아래 코드와 같이 요청의 특정 헤더 삭제 코드를 구현할 수 있다.
if ('x-middleware-subrequest' in req.headers) {
delete req.headers['x-middleware-subrequest'];
}
4. 참고 자료
한세희. (2025, March 25). Next.js서 발견된 치명적 취약점, 공격자 인증 우회 가능성 제기. 보안뉴스. Retrieved from https://m.boannews.com/html/detail.html?idx=136641
Robinson, L. (2025, March 22). CVE-2025-29927. NEXT.js. Retrieved from https://nextjs.org/blog/cve-2025-29927
aydinnyunus. (2025, March). CVE-2025-29927: Next.js middleware bypass vulnerability. Retrieved from https://github.com/aydinnyunus/CVE-2025-29927
Red Hat. (2025, March 21). CVE-2025-29927. Retrieved from https://access.redhat.com/security/cve/cve-2025-29927