**Tipo:** Dose de complexidade Algorítmica em análise de ênfase central. Uma longa sequência de pares bem formados `**x**' (forte) ou `***x***' (forte enfatização combinada) causa trabalho de análise O(N2). Distinta do DoS (`[` repetição) e do DoS do formateamento (`~~`/`==`/`^^`); este dispara nas linhas de configuração padrão mistune sem os plug-ins necessários. **File:** `src/mistune/inline_parser.py` lines 41 - 48 (a família ` EMPHASIS_ END_ RE`) e a ênfase ao redor. ** Causa da rota:** para cada abertura de `*`s o analisador varre para a frente usando um dos ` EMPHASIS_ END_ RE['*']` / `['**'']` / `['***''']` para encontrar a correspondência perto. Cada varredura é limitada por chamada, mas o analisador invoca a varredura de cada posição inicial potencial. Para N repetidos em formato de entrada `**x**', cada `**' é tratado como um início potencial, cada digitalização pode cobrir até o fim da entrada. O trabalho total é O(N2). A variante de triple enfase `***x***' é um pouco pior devido à alternação extra entre os padrões de fechamento `*', `**' e `***'. Reproduzível contra mistune padrão sem plug- ins. **Arquivo:** `src/mistune/inline_parser.py`, linhas 41 - 48.

"(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1,3 }(?=[^\s*]).\b_{ 1,3 }(?=[^\s_])"`. O próprio # scan é limitado por chamada; o custo vem do analisador invocando # o scan em cada marcador aberto correspondente, dando trabalho total ao O(N2). ``` **Por que está errado:** a mesma forma que o formato-plugin e os achados do DoS da bomba de entrelaçamento. O analisador de referência de CommonMark lida com ênfase em tempo linear usando um algoritmo de delimitador- empilhador (`commonmark.js`, `commonmark-py`, `markdown-it-py` tudo isso. mistune tenta o close- scan de cada marcador aberto. O regex delimitado não é suficiente; o loop circundante é a fonte do quadrático.

1. O aplicativo usa mistune para renderizar o marcador fornecido pelo usuário. Nenhum plug- in necessário — afeta a configuração padrão `mistune.create_markdown()`. 2. O atacante submete um 40 Carga útil KB de `**x**' repetida 8000 vezes. 3. Servidor de pontos da CPU para ~ 4 segundos; 16 KB → ~ 17 segundos. Duplar a entrada quadrúplica o tempo. 4. Repetir o pedido inunda a piscina de trabalhadores. **Severidade:** sec- alto. Alcançable em rede, sem autenticação, sem necessidade de plug- in. A mistuna padrão é vulnerável. **Capabilidade do atacker:** O(N2) custo da CPU a partir de uma única entrada pequena. Escalada previsível, fácil de combinar com pedidos concorrentes para negação de serviço. **Condições prévias:** o aplicativo usa `mistune.create_markdown()` (config predefinido) no marcador fornecido pelo atacante. Não é necessário nenhum plugin. **Diferencial:** Verificado com PoC contra mistune@ 3.2.1, configuração padrão:.

```python import mistune, time md = mistune.create_markdown() # nenhum plug-ins para n em [ 500, 1000, 2000, 4000, 8000 ]: s = '**x**' * n t = tempo.time() md(s) print( f' **x** * {n} ({len(s)} b): {(time.time() - t) * 1000:. 0 f} ms') # Saída (Python 3.13, Linux, 2.5 CPU GHz: # **x** * 500 ( 2500 b): 20 ms # **x** * 1000 ( 5000 b): 74 ms # **x** * 2000 ( 10000 b): 284 ms # **x** * 4000 ( 20000 b): 1079 ms # **x** * 8000 ( 40000 b): 4309 ms.

# Triplo ênfase é semelhante: md('***x***' * 4000 ) # ~ 1500 ms # Linear em N para entrada não- enfatizada de tamanho comparável: md('xxxxx'' * 8000 ) # 1 ms ( 4000 x mais rápido) ```.

A compilação correcionada (com a correção sugerida abaixo — reescrever o delimitador- apilha ou o cap duro em marcadores abertos simultâneos) mantém o tempo linear em N. Capture o número de marcadores de ênfase de abertura incompatíveis que o analisador irá rastrear simultaneamente, tratando o resto como texto literal:.

``` diff --- a/src/mistune/inline_parser.py +++ b/src/mistune/inline_parser.py @@... no caminho de código de manuseio de ênfase + # Amarrou o número de marcadores de ênfase abertos rastreados. CommonMark dá + # sem semântica para ênfase incomparável profundamente anidada; este cap vira o + # nível de analisador O(N^) 2 ) para O(N) para entradas adversas, preservando o comportamento + # em cada documento de marcação realístico. + MAX_OPEN_EMPHASIS = 100 + se open_ enphasis_count > MAX_OPEN_ EMPHASIS: + # tratar o restante * / _ como texto literal +... ``` A correção correta é um passe de delimitador- empilhador, a mesma abordagem que o aviso de formatação- plugin e o conselho de bomba de suporte recomendam. Todos os três achados do DoS compartilham o mesmo padrão algorítmico; uma única reescrição do loop de reexperimentação em linha fecha- os juntos. Adicione um teste de regressão afirmando que ` md('**x**'' * 50 _ 000 )` completa em abaixo 1 Segundo.

Registro de aconselhamento: GHSA- 4 j 32 - 57 v 6 - 6 g 45. Identificadores relacionados: CVE- 2026 - 59925. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 20 T 21: 32: 40.000 Z e lista a sua última modificação como 2026 - 07 - 20 T 21: 32: 40.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.