Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-11933 — Corruption de tas dans le sélecteur de médias de WhatsApp | Kitploit
Outils/GitHubGitHub/natleoj/cve-2019-11933
Sécurité AndroidCriminalistique MémoireAnalyse des VulnérabilitésExploitationSécurité MobileExploitation de Binaires
GitHubnatleoj/cve-2019-11933

CVE-2019-11933

Corruption de tas dans le sélecteur de médias de WhatsApp

Voir le dépôt
il y a 6 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2019-11933

Corruption de tas dans le sélecteur de médias de WhatsApp affectant WhatsApp pour Android avant la version 2.19.291

Contexte

Un fichier GIF est divisé en segments, marqués par un octet spécifique :

  • Image (0x2C)
    • La section image décrit une seule image dans le fichier GIF et contient des informations telles que la hauteur, la largeur, ainsi que l'image compressée elle-même. Un GIF peut avoir plusieurs images et donc plusieurs sections image.
  • Extension (0x21)
    • La section extension contient des données utilisées pour modifier une image.
  • Terminaison (0x3B)
    • Marque la fin du fichier GIF

D'après le code source, renderFrame appelle DDGifSlurp pour analyser un GIF, et getBitmap pour afficher le GIF. Un tampon rasterBits est alloué par la fonction, et sa taille est calculée en multipliant la largeur par la hauteur de l'image en cours de traitement. Peut-être pour économiser de la mémoire et du temps, le même tampon rasterBits sera utilisé pour toutes les images du GIF. Par conséquent, il est nécessaire que le tampon puisse contenir la plus grande image décrite dans le fichier. Ainsi, le tampon est réalloué en conséquence si une autre section image du même GIF décrit une image plus grande (nécessitant plus d'espace).

Vulnérabilité

DDGifSlurp analyse le fichier GIF dans une boucle, traitant chaque image du fichier, et se termine lorsque l'enregistrement de terminaison est rencontré. Lorsque DGifGetImageDesc retourne GIF_ERROR (a), cela entraîne une terminaison anticipée (dans le cas du switch), ce qui fait que le code de réallocation du tampon rasterBits est sauté. Un extrait de DDGifSlurp est présenté ci-dessous :

root@kitploit:~
void DDGifSlurp(GifInfo *info, bool decode, bool exitAfterFrame) {
    ...
    do {
        ...
        switch (RecordType) {
            case IMAGE_DESC_RECORD_TYPE:
             
                if (DGifGetImageDesc(gifFilePtr, isInitialPass) == GIF_ERROR) {   <-- [a]
                    break;
                }
                ...
                if (decode) {
                    ...
                    const uint_fast32_t newRasterSize = gifFilePtr->Image.Width * gifFilePtr->Image.Height;
                    if (newRasterSize > info->rasterSize || widthOverflow > 0 || heightOverflow > 0) {
                        void *tmpRasterBits = reallocarray(info->rasterBits, newRasterSize, sizeof(GifPixelType));
                        ...
                    }
    }while (RecordType != TERMINATE_RECORD_TYPE);
}

Une image GIF ayant le format suivant provoquera un crash :

  • Image valide (10 x 10)
  • Image plus grande (10000 x 10000) avec un descripteur d'image invalide

Étapes menant au crash

  1. Phase d'analyse
    1. Analyser la première image (petite)
    2. Allouer un tampon rasterBits de taille (petite hauteur * petite largeur)
    3. Analyser la deuxième image (grande)
    4. DGifSetupDecompress/DGifGetImageDesc retourne GIF_ERROR
    5. Sauter la réallocation
  2. Phase de rendu
    1. Rendre la première image (succès)
    2. Rendre la deuxième image (hors limites)
Télécharger l’outil