Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Polynomial ReDoS in python-markdown2 metadata parsing (_key_val_list_pat)

Geschlossen
#741 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
security

Rechercherichtung

The slowdown comes from the regex named _key_val_list_pat, used by the metadata extra. Start by running the timing script in the issue with increasing input sizes to confirm the super-linear growth, then read that pattern and find which quantifiers or alternations overlap. Done means the timings stay roughly linear and the existing metadata tests still pass. Because this is a security report and the thread has no discussion yet, check with a maintainer before writing a fix.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Bug

Describe the bug

Please note: I'm not the author of this bug report, I merely report it to the project community as it has been published a while ago publically and seems to not have reached the right audience.

Please read https://gist.github.com/NanaSec/354b4188bbd7f4105008c7b8be49b0ba for the writeup.

To Reproduce

import time, markdown2
def render(value):
    doc = "---\nkey: %s\n---\n\n# hello\n" % value
    t = time.time(); markdown2.markdown(doc, extras=["metadata"]); return time.time()-t
for n in (8000, 16000, 32000, 64000, 128000):
    print(n, round(render("-" + " " * n), 3), "s")
Vorherrschende Sprache
Python
Sterne
2.8k
Forks
470
Ø Merge
3 T. 2 Std.
Gemergte PRs (30 T.)
11

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus trentm/python-markdown2

Alle Issues in trentm/python-markdown2

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.