Next.js: Server-Side Request Forgery in rewrites via attacker-controlled destination hostname
위협 신호 · CVSS · EPSS · KEV
이론적 심각도 점수
예측 데이터 없음
실측 악용 기록 없음
계획된 패치 주기 내 조치(60일 이내)
CVSS 벡터 · 메트릭
CVSS 벡터 정보 없음
상세 설명
Impact
A rewrites() or redirects() rule that builds its external destination hostname from request-controlled input can be pointed at an arbitrary hostname, regardless of the rule's hostname suffix. For a rewrite, Next.js proxies the request to that arbitrary host and serves the response from the application's origin, leading to Server-Side Request forgery. A redirects() rule configured this way is vulnerable to an Open Redirect.
This affects any destination that puts a dynamic segment in the hostname, whether from the path:
1// next.config.js 2module.exports = { 3 async rewrites() { 4 return [ 5 { 6 source: '/:tenant', 7 destination: 'https://:tenant.api.example.com', 8 }, 9 ]10 },11}or from a has capture:
1// next.config.js 2module.exports = { 3 async rewrites() { 4 return [ 5 { 6 source: '/', 7 has: [{ type: 'query', key: 'region', value: '(?<region>.+)' }], 8 destination: 'https://:region.api.example.com', 9 },10 ]11 },12}Workarounds
If you cannot upgrade immediately, do not build the hostname of an external rewrites() or redirects() destination from user-controlled input. If a dynamic subdomain is required, constrain the value to hostname-safe characters: value: '(?<region>[a-z0-9-]+)'.
AI 심층 분석
공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.
참고 자료 6
링크 내용 불러오는 중…