🇰🇷 한글 설명
Apollo Gateway 2.10.1 미만 버전에서 깊게 중첩되고 재사용된 이름이 지정된 프래그먼트를 포함한 GraphQL 쿼리가 쿼리 플래닝 시 과도한 자원을 소모하는 취약점이 발견되었습니다. 내부 최적화가 우회되면서 쿼리 플래너의 처리 시간이 급증하며, 타임아웃 제한이 없어 게이트웨이가 작동 불능 상태에 빠질 수 있습니다. 이는 서비스 거부(DoS) 공격으로 이어질 수 있습니다.
💡 쉬운 설명
복잡하게 꼬인 질문을 던져서 서버가 답변을 준비하는 데 너무 많은 시간을 쓰게 만들어 서버를 멈추게 하는 공격입니다. 마치 아주 복잡한 미로 찾기 문제를 계속 던져서 길 찾기 전문가를 지치게 만드는 것과 같습니다.
🇺🇸 원문 (English)
Apollo Gateway provides utilities for combining multiple GraphQL microservices into a single GraphQL endpoint. Prior to 2.10.1, a vulnerability in Apollo Gateway allowed queries with deeply nested and reused named fragments to be prohibitively expensive to query plan, specifically due to internal optimizations being frequently bypassed. The query planner includes an optimization that significantly speeds up planning for applicable GraphQL selections. However, queries with deeply nested and reused named fragments can generate many selections where this optimization does not apply, leading to significantly longer planning times. Because the query planner does not enforce a timeout, a small number of such queries can render gateway inoperable. This could lead to excessive resource consumption and denial of service. This has been remediated in @apollo/gateway version 2.10.1.
📍 영향받는 시스템
@apollo/gateway version < 2.10.1
⚔️ 공격 벡터
깊게 중첩되고 재사용된 이름이 지정된 프래그먼트를 포함한 악의적인 GraphQL 쿼리 전송
🛡️ 대응 방법
@apollo/gateway 버전을 2.10.1 이상으로 업데이트
🔧 검증 코드
출력된 버전이 2.10.1 미만인지 확인하여 취약 여부를 판단합니다.