**Tipo:** DoS de complexidade Algorítmica no gerenciamento de definição de ligação de referência. Um documento de marcação com definições de ligação de referência N da mesma chave (ou muitas chaves distintas) leva o tempo de análise O(N2). 5000 definições repetidas de `[a]: u\n` tomam ~ 1.1 segundo; 10000 → ~ 4.5 segundos. **Arquivo:** `src/mistune/block_parser.py` (defisação de ligação de referência) e o manuseamento env- dicionário de `ref_links` circundante. **Causa de rota:** cada definição de referência é analisada por varredura para a frente de cada posição candidata. A normalização `unikey` é executada por def, o inserto do dicionário é por def, e o caminho de busca por rótulo- então- iterate- defs é linear no número de defs armazenados. Para entrada com N defs, o trabalho total é O(N2). `src/mistune/block_parser.py` — fogos de regra de definição de referência em cada linha que corresponda `[ rótulo]: url`. Para cada um: - "unikey(label)" é chamado (análise linear da etiqueta). - O def é anexado ao `state.env['ref_links']`. - A resolução de links inline mais tarde procura por `unikey(label)` no dict (O() 1 )) mas o analisador ao redor revisita a lista def para desambiguação de parágrafo- vs- def. O tempo cumulativo de análise cresce como o quadrado do número de defs.

**Por que está errado:** o analisador não amortiza a análise def-list. Um único passe para a frente com um ditado com teclado hash (já no lugar) mais um classificador por linha deve fazer este O( N). 1. O aplicativo usa mistune para renderizar o marcador fornecido pelo atacante. Não é necessário nenhum plug- in. 2. O atacante submete um 35 Documento KB de `[a]: u\n` repetido 5000 vezes seguidas de `[clique][a]`. 3. PICS CPU para ~ 1.1 segundos. 10000 defs → ~ 4.5 s. 20000 → ~ 18 s. Duplar a entrada quadrúplica o tempo. ** Capacidade do Attacker:** pequeno input → grande CPU. Escalada previsível. Pode ser repetido. **Precondições:** o aplicativo usa `mistune.create_markdown()` (config predeterminado) no marcador fornecido pelo atacante. Vale a pena notar: o dicionário `ref_links` persiste durante toda a vida do parse, por isso um documento longo com muitos defs acumula memória; com N defs de comprimento do atacante-escolhido, os compostos de custo de normalização per-def. **Diferencial:** PoC- verificado contra mistune@ 3.2.1, configuração padrão:.

```python import mistune, time md = mistune.create_markdown() for n in [ 1000, 2000, 5000, 10000 ]: s = '[a]: u\n' * n + '[clique][a]' t = tempo.time() md(s) print( f' ref defs * {n} ({len(s)}b): {(time.time() - t) * 1000:. 0 f} ms') # Saída (Python 3.13, Linux, 2.5 CPU GHz: # ref defs * 1000 ( 7012 b): 46 ms # ref defs * 2000 ( 14012 b): 186 ms # ref defs * 5000 ( 35012 b): 1121 ms # ref defs * 10000 ( 70012 b): 4400 ms ```.

A compilação correcionada (com o analisador ao redor amortizado para O( N)) mantém o tempo linear. Substitua o re- scan por def com um único passe para a frente que classifica cada linha em `ref_def (') parágrafo outro` uma vez e apenas insere em `ref_links` uma vez por def. O dict já existe; o trabalho desperdiçado está no loop de varredura circundante, não nas operações do dict.

Um teste de regressão afirmando que ` md('[a]: u\n' * 50 _ 000 + '[clique em][a]'' completa em abaixo 1 segundo pegaria qualquer regressão. Registro de aconselhamento: GHSA- ffq 3 - xpv 3 - j 92 q. Identificadores relacionados: CVE- 2026 - 59928.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 20 T 21: 24: 18.000 Z e lista a sua última modificação como 2026 - 07 - 20 T 21: 24: 18.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.

Software afetado e informações de versão: mistune do pacote PyPI — ECOSYSTEM: introduzido 0, corrigido 3.3.0. Classificação e evidência: identificadores de fraqueza CWE- 1333, CWE- 407. O registro contém 6 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.