Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

fix(security): zip decode limits trust the size declared in the archive header (zip-bomb bypass)

Ouverte
#1,561 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
dart, flutter
Domaine
desktop, security

Piste de recherche

Start with lib/core/security/safe_zip_extractor.dart:141-166 and inspect how archive 4.4.0 exposes entry content and size; the issue points to codecs/zip/zip_file.dart for the size hint behavior. Then trace extraction paths for marketplace installs, sideloads, and the updater. Done when extraction counts actual inflated bytes per entry and in total, aborts at the limits, retains the header pre-check, and a test uses a zip with a false declared size.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug core P1 stability

Problem

SafeZipExtractor._validateArchive (lib/core/security/safe_zip_extractor.dart:141-166) enforces the per-entry, total and compression-ratio limits using entry.size, which is the uncompressed size declared in the zip header.

In archive 4.4.0 that value is only a hint for the initial buffer (codecs/zip/zip_file.dart: "uncompressedSize is only a hint for the initial buffer"). A crafted zip that declares 1 KB can inflate to gigabytes on file.content, so all four limits can be bypassed. Affects marketplace install, sideload (no sha256 there, the file is user-chosen) and the updater.

Expected

  • Extract with a bounded streaming inflate that counts actual bytes written, per entry and in total, and aborts when a limit is exceeded.
  • Keep the header-based pre-check as a cheap early reject.
  • Test with a zip whose header lies about the size.
Langage dominant
Dart
Étoiles
23
Forks
1
Merge moyen
31 min
PR mergées (30 j)
570

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de QueryaHub/Querya-Desktop

Toutes les issues de QueryaHub/Querya-Desktop

Issues similaires

Plus d'issues Dart

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.