Mercurius — адаптер GraphQL для Fastify. До версии 16.8.0 Mercurius не может обеспечить соблюдение настроенного ограничения queryDepth для запросов подписки GraphQL, полученных через соединения WebSocket. Проверка глубины правильно применяется к HTTP-запросам и мутациям, но запросы подписки анализируются и выполняются без вызова проверки глубины.
Это позволяет удаленному клиенту отправлять произвольно глубоко вложенные запросы подписки через WebSocket, минуя предполагаемое ограничение глубины. В схемах с рекурсивными типами это может привести к отказу в обслуживании из-за экспоненциального разрешения данных при каждом событии подписки. Эта проблема исправлена в версии 16.8.0.
Показать оригинальное описание (EN)
Mercurius is a GraphQL adapter for Fastify. Prior to version 16.8.0, Mercurius fails to enforce the configured queryDepth limit on GraphQL subscription queries received over WebSocket connections. The depth check is correctly applied to HTTP queries and mutations, but subscription queries are parsed and executed without invoking the depth validation. This allows a remote client to submit arbitrarily deeply nested subscription queries over WebSocket, bypassing the intended depth restriction. On schemas with recursive types, this can lead to denial of service through exponential data resolution on each subscription event. This issue has been patched in version 16.8.0.
Характеристики атаки
Последствия
Строка CVSS v4.0