🇰🇷 한글 설명
Next.js의 특정 버전에서 서버 측 fetch 요청 시 UTF-8 이외의 charset을 사용하는 요청 본문이 동일한 URL로 간주되어 캐시된 응답을 공유하는 취약점이 발견되었습니다. 이로 인해 서로 다른 요청 본문을 가진 요청 간에 민감한 데이터가 유출될 수 있습니다.
💡 쉬운 설명
서버가 서로 다른 요청을 같은 요청으로 착각하여 이전에 처리했던 비밀 정보를 다른 사람에게 잘못 보여줄 수 있는 문제입니다. 특히 특수한 문자 인코딩을 사용할 때 발생합니다.
🇺🇸 원문 (English)
Next.js is a React framework for building full-stack web applications. In versions 12.0.0 through 15.5.20 and 16.0.0 through 16.2.10, a server-side fetch with a request body may return a cached response body from a different request to the same URL but different body. Confidential data in the POST's response body would then leak to unauthorized requests. Though the request itself will not be deduped. This is only an issue when receiving request bodies with a content type charset other than UTF-8. For example, the UTF-16 byte sequences for 삃삃 and 섄섄 in the request body would share the same cache. This issue has been fixed in versions 15.5.21 and 16.2.11.
📍 영향받는 시스템
Next.js 12.0.0 ~ 15.5.20 및 16.0.0 ~ 16.2.10
⚔️ 공격 벡터
UTF-8이 아닌 charset을 포함한 POST 요청 본문을 사용하여 캐시된 응답을 유도함
🛡️ 대응 방법
Next.js를 15.5.21 또는 16.2.11 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 Next.js 버전을 확인하여 취약한 버전 범위에 해당하는지 체크합니다.