IA Squad
BuscarEN
dotnet · ScribanAtenção

Scriban ExpressionDepthLimit não interrompe recursão — risco de StackOverflowException

O guarda ExpressionDepthLimit no parser do Scriban não interrompe a recursão; apenas registra um erro não fatal.

27 Jun 2026Leitura 1 minSeveridade: agende este mês

O que mudou

O guarda ExpressionDepthLimit no parser do Scriban não interrompe a recursão; apenas registra um erro não fatal. Isso permite que expressões profundamente aninhadas causem uma StackOverflowException não capturável, levando ao encerramento do processo. Todas as versões 6.6.0 a 7.2.0 são afetadas.

Quem isso afeta

Qualquer aplicação que analise templates influenciados por atacantes ou passe strings controladas por atacantes para object.eval/object.eval_template.

O que fazer hoje

Aplique a correção sugerida: faça o limite realmente interromper a descida lançando uma exceção de análise ou registrando com isFatal:true e desenrolando. Como defesa em profundidade, chame RuntimeHelpers.EnsureSufficientExecutionStack() na entrada de ParseExpression.

A esteira
Coletado Auditado Redigido Publicado