🇰🇷 한글 설명
SmallRye GraphQL에서 BigInteger를 위한 숫자 스칼라 강제 변환 시 float 또는 string 입력값의 크기를 적절히 검증하지 않는 결함이 발견되었습니다. 인증되지 않은 원격 공격자가 매우 큰 지수 형태의 float 리터럴을 포함한 GraphQL 쿼리를 전송함으로써, 거대한 BigInteger 객체를 생성시켜 CPU 고갈 또는 OutOfMemoryError를 유발하고 서비스 거부(DoS) 상태를 만들 수 있습니다.
💡 쉬운 설명
공격자가 아주 큰 숫자를 담은 특수한 요청을 보내면 서버가 이를 처리하려다 메모리가 꽉 차거나 과부하가 걸려 멈추게 됩니다. 이로 인해 일반 사용자들이 해당 서비스를 이용할 수 없게 됩니다.
🇺🇸 원문 (English)
A flaw was found in SmallRye GraphQL. The number scalar coercion for BigInteger does not properly validate the magnitude of float or string inputs. An unauthenticated remote attacker can exploit this by sending a GraphQL query containing a large exponent float literal. This can lead to the allocation of extremely large BigInteger objects, causing CPU exhaustion or an OutOfMemoryError, resulting in a denial of service.
📍 영향받는 시스템
SmallRye GraphQL (BigInteger 스칼라 강제 변환 기능 사용 시)
⚔️ 공격 벡터
인증되지 않은 원격 공격자가 매우 큰 지수 값을 가진 float 리터럴이 포함된 GraphQL 쿼리를 전송
🛡️ 대응 방법
SmallRye GraphQL 라이브러리를 최신 보안 패치가 적용된 버전으로 업데이트하고, 입력값 크기 제한 설정을 검토하십시오.
🔧 검증 코드
출력 결과에 smallrye-graphql 라이브러리가 포함되어 있는지 확인하고, 현재 사용 중인 버전을 체크하십시오.
mvn dependency:tree | grep -E 'smallrye-graphql'