🇰🇷 한글 설명
Go 웹 프레임워크인 Fiber v3.1.0 이하에서 캐시 미들웨어의 기본 키 생성기가 요청 경로만 사용하고 쿼리 문자열을 포함하지 않습니다. 이로 인해 같은 경로의 서로 다른 쿼리 파라미터를 가진 요청들이 동일한 캐시 키를 공유하여 잘못된 응답을 받을 수 있습니다. 이는 쿼리 의존적인 엔드포인트에서 응답 혼동을 야기하고 다른 요청을 위한 데이터 노출 위험이 있습니다.
💡 쉬운 설명
웹 서버가 요청을 저장할 때 인터넷 주소만 보고 뒤에 붙은 옵션은 무시해서, 다른 옵션으로 요청한 사용자가 이전 사용자의 답변을 받게 됩니다. 예를 들어 'api.com/search?user=alice'와 'api.com/search?user=bob'을 요청해도 같은 답변을 받아 개인정보가 섞일 수 있습니다.
🇺🇸 원문 (English)
Fiber is a web framework for Go. In github.com/gofiber/fiber/v3 versions through 3.1.0, the default key generator in the cache middleware uses only the request path and does not include the query string. As a result, requests for the same path with different query parameters can share a cache key and receive the wrong cached response. This can cause response mix-up for query-dependent endpoints and may expose data intended for a different request. This issue is fixed after version 3.1.0.
📍 영향받는 시스템
github.com/gofiber/fiber/v3 버전 3.1.0 이하
⚔️ 공격 벡터
쿼리 파라미터가 다른 동일 경로에 대한 반복 요청으로 이전 사용자의 캐시된 응답을 획득
🛡️ 대응 방법
github.com/gofiber/fiber/v3를 3.1.0 초과 버전으로 업그레이드하거나 캐시 미들웨어 키 생성기를 쿼리 문자열을 포함하도록 커스터마이징
🔧 검증 코드
출력된 버전이 3.1.0보다 높으면 패치됨, 3.1.0 이하이면 즉시 업그레이드 필요
go list -m all 2>/dev/null | grep 'github.com/gofiber/fiber'