Next.js 15.1.0~15.1.7 버전에서 ISR(증분 정적 재생성) 사용 시 HTTP 204 빈 응답이 정적 페이지 캐시에 잘못 저장되어 이후 모든 요청에 빈 페이지가 서빙되는 캐시 포이즈닝 취약점이 발견됐다. CDN이 204 응답을 캐시하도록 설정된 self-hosted 환경에서만 발동하며, Vercel 호스팅은 영향 없다.
핵심 포인트- 영향 버전: Next.js 15.1.0 이상 15.1.8 미만. Vercel 관리 호스팅 환경은 무관.
- 발동 조건: ① 영향 범위 버전 실행 ② ISR 캐시 재검증 활성화(next start/standalone) ③ CDN이 204 응답을 캐시하도록 구성.
- 공격 결과: 204 응답이 정적 페이지 캐시에 저장되어 이후 모든 사용자에게 빈 응답이 반환됨.
- 수정: Next.js 15.1.8 이상으로 업그레이드. 204 응답 생성 코드 경로 제거 + 공유 응답 객체 race condition 수정.
- 발견자: Allam Rachid(zhero), Allam Yasser(inzo_) 책임 공시.
상세 정리- 취약점 발생 경로: ISR 재검증 과정에서 Next.js가 204 응답을 내부적으로 생성하고, 이 응답이 정적 페이지 캐시에 잘못 저장됨.
- CDN 조건: CDN이 204 응답을 캐시하는 설정일 때만 외부 영향 발생. CDN 미사용 또는 204 비캐시 설정이면 내부 캐시 문제만.
- Vercel 관리 환경: 영향 없음. Vercel 내부 인프라가 이 코드 경로를 통과하지 않음.
- self-hosted 환경 위험: CDN과 함께 ISR을 사용하는 자체 호스팅 서버가 주요 타깃.
- 수정 상세: 204 응답을 생성하는 코드 경로 제거, Next.js 응답 캐시의 공유 응답 객체 의존 race condition 추가 수정.
- 공개 일자: 2025-07-03.
왜 읽나Next.js 15.1.x를 ISR + CDN 환경에서 self-hosted로 운영 중이라면 즉시 15.1.8 이상으로 업그레이드해야 한다.