python / python/cpython

Memory exhaustion via crafted zip file

Offen
#156,002 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

3.10 3.11 3.12 3.13 3.14 3.15 3.16 stdlib type-security
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

As reported by @tonghuaroot:

zipfile.ZipExtFile._read1() bounds the output of each decompress() call for DEFLATE members (it passes a max_length to zlib), but for bzip2 / LZMA / Zstandard members it called self._decompressor.decompress(data) with no bound. A whole compressed chunk was therefore expanded into a single allocation before the data = data[:self._left] clip ran.

Linked PRs
  • gh-156003
  • gh-156362
  • gh-156737
  • gh-156738
  • gh-156739
  • gh-156740
  • gh-156741
  • gh-157180
  • gh-157268
  • gh-157557

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie bei zipfile.ZipExtFile._read1() und vergleichen Sie dessen DEFLATE-Behandlung mit den Pfaden für bzip2, LZMA und Zstandard. Bestätigen Sie, dass die expandierte Ausgabe begrenzt wird, bevor die verbleibenden Daten abgeschnitten werden, fügen Sie anschließend Regressionstests für speziell erstellte Einträge hinzu und prüfen Sie die verknüpften PRs, um doppelte Arbeit zu vermeiden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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