🇰🇷 한글 설명
Node.js용 콘텐츠 관리 시스템인 Keystone 6.5.3 미만 버전에서 findMany 리졸버의 취약점이 발견되었습니다. 인증되지 않은 원격 공격자가 음수 값을 가진 take 인자를 전달하여 설정된 최대 제한을 우회할 수 있으며, 이로 인해 의도보다 많은 레코드가 반환되어 서비스 자원이 고갈될 수 있습니다.
💡 쉬운 설명
데이터를 가져올 때 개수를 제한하는 규칙을 속여서 한꺼번에 너무 많은 데이터를 요청하는 공격입니다. 이로 인해 서버에 과부하가 걸려 서비스가 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
Keystone is a content management system for Node.js. Prior to 6.5.3, the findMany resolver in packages/core/src/lib/core/queries/resolvers.ts compares the signed take argument directly with graphql.maxTake, allowing a remote unauthenticated GraphQL client to provide a negative take value whose magnitude exceeds the configured bound. The bypass also applies to relationship queries and can return more records than the developer intended, potentially exhausting service resources. This issue is fixed in version 6.5.3.
📍 영향받는 시스템
Keystone CMS 6.5.3 미만 버전
⚔️ 공격 벡터
인증되지 않은 원격 공격자가 GraphQL 쿼리에 음수 take 값을 포함하여 전송
🛡️ 대응 방법
Keystone CMS를 최신 버전인 6.5.3 이상으로 업데이트
🔧 검증 코드
출력된 버전이 6.5.3 미만이면 취약한 상태이며, 6.5.3 이상이면 안전합니다.
npm list keystone --depth=0 | grep -E 'keystone@([0-5]\.[0-5]\.[0-5]|6\.5\.3)'