Vulnerabilidades de ChilliCream
CVEs publicadas que afetam produtos de ChilliCream: 1 registro(s), com severidade, exploração e correções.
CVE-2026-40324
Crítica · 9.1
CWE-674 17/04/2026
Hot Chocolate: recursão não controlada no parser GraphQL causa negação de serviço
O Hot Chocolate é um servidor GraphQL de código aberto. Nas versões anteriores a 12.22.7, 13.9.16, 14.3.1 e 15.1.14, o parser recursivo de descida Utf8GraphQLParser não possui limite de profundidade de recursão. Um documento GraphQL elaborado com conjuntos de seleção, objetos de valor, listas de valores ou tipos de lista profundamente aninhados pode disparar uma StackOverflowException com payloads a partir de 40 KB. Como a StackOverflowException não pode ser capturada no .NET (desde o .NET 2.0), todo o processo do worker é encerrado imediatamente. Todas as requisições HTTP em andamento, tarefas IHostedService em segundo plano e assinaturas WebSocket abertas nesse worker são interrompidas. O orquestrador (Kubernetes, IIS etc.) precisa reiniciar o processo. Isso ocorre antes que quaisquer regras de validação sejam executadas — MaxExecutionDepth, analisadores de complexidade, listas de permissão de consultas persistidas e implementações personalizadas de IDocumentValidatorRule não conseguem impedir a falha, porque Utf8GraphQLParser.Parse é invocado antes da validação. O limite MaxAllowedFields=2048 não ajuda, pois os payloads que causam a falha contêm poucos campos. A correção nas versões 12.22.7, 13.9.16, 14.3.1 e 15.1.14 adiciona a opção MaxAllowedRecursionDepth a ParserOptions com um padrão seguro e aplica o limite em todos os métodos recursivos do parser (ParseSelectionSet, ParseValueLiteral, ParseObject, ParseList, ParseTypeReference etc.). Quando o limite é excedido, é lançada uma SyntaxException capturável, em vez de estourar a pilha. Não há solução de contorno no nível da aplicação. A StackOverflowException não pode ser capturada no .NET. A única mitigação é atualizar para uma versão corrigida. Operadores podem reduzir (mas não eliminar) o risco limitando o tamanho do corpo das requisições HTTP no proxy reverso ou no balanceador de carga, embora o menor payload que causa a falha (40 KB) esteja bem abaixo da maioria dos limites padrão e seja altamente compactável (algumas centenas de bytes com gzip).