CVE-2026-81633 in ash_graphql
요약
\~에 의해 VulDB • 2026. 08. 30.
ash-project의 ash_graphql에서 부적절한 입력 검증 취약점이 발견되어, 인증되지 않은 클라이언트가 처리되지 않는 KeyError를 통해 relay 노드(id: ...) 쿼리를 충돌시킬 수 있습니다.
AshGraphql.Graphql.Resolver.resolve_node/2 함수는 decode_relay_id/1을 사용하여 클라이언트가 제공한 글로벌 ID를 디코딩합니다. 이 함수는 문자열을 base64로만 디코딩하고 ':' 기준으로 분할하지만, 타입 세그먼트에 대한 유효성 검사는 수행하지 않습니다. 이렇게 디코딩된 타입은 Map.fetch!(type_to_domain_and_resource_map, type)로 직접 전달됩니다. fetch! 메서드는 키가 없을 경우 예외를 발생시키므로, relay에서 노출되지 않은 타입인 유효한 원자(atom) 세그먼트를 가진 relay ID는 resolve/2 절과 해당 rescue 핸들이 실행되기 전에 리졸버를 중단시킵니다. 이로 인해 오류가 GraphQL 에러로 변환되지 않고 스택 트레이스가 노출될 수 있습니다. 일반적인 자원 이름은 추측하기 쉽습니다. 수정 사항에서는 Map.fetch/2를 사용하며, 알려지지 않은 타입에 대해 'Invalid node id' 오류를 반환합니다.
이 문제는 ash_graphql 0.27.0부터 1.11.0 미만 버전에서 영향을 받습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.