Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-11933 — Corruzione dell'heap nel selettore multimediale di WhatsApp | Kitploit
Strumenti/GitHubGitHub/natleoj/cve-2019-11933
Sicurezza AndroidMemory ForensicsAnalisi delle VulnerabilitàExploitSicurezza MobileBinary Exploitation
GitHubnatleoj/cve-2019-11933

CVE-2019-11933

Corruzione dell'heap nel selettore multimediale di WhatsApp

Vedi Repository
6 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2019-11933

Corruzione dell'heap nel selettore multimediale di WhatsApp che colpisce WhatsApp per Android precedente alla versione 2.19.291

Contesto

Un file GIF è diviso in segmenti, contrassegnati da un byte specifico:

  • Immagine (0x2C)
    • La sezione immagine descrive un singolo fotogramma nel file GIF e contiene informazioni come altezza, larghezza, nonché l'immagine compressa stessa. Un GIF può avere più fotogrammi e quindi più sezioni immagine.
  • Estensione (0x21)
    • La sezione estensione contiene dati utilizzati per modificare un'immagine.
  • Terminazione (0x3B)
    • Segna la fine del file GIF

Secondo il codice sorgente, renderFrame chiama DDGifSlurp per analizzare un GIF e getBitmap per visualizzare il GIF. Un buffer rasterBits viene allocato dalla funzione e la sua dimensione viene calcolata moltiplicando la larghezza per l'altezza dell'immagine che sta attualmente elaborando. Forse per risparmiare spazio in memoria e tempo, lo stesso buffer rasterBits verrà utilizzato per tutti i fotogrammi/immagini nel GIF. Pertanto, è necessario che il buffer sia in grado di contenere l'immagine più grande descritta nel file. Di conseguenza, il buffer viene riallocato di conseguenza se un'altra sezione immagine all'interno dello stesso GIF descrive un'immagine più grande (richiede più spazio).

Vulnerabilità

DDGifSlurp analizza il file GIF in un ciclo, elaborando ogni immagine/fotogramma nel file e termina quando viene incontrato il record di terminazione. Quando DGifGetImageDesc restituisce GIF_ERROR (a), si verifica una terminazione anticipata (nel caso switch), causando il salto del codice che rialloca il buffer rasterBits. Un frammento di DDGifSlurp è mostrato di seguito:

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);
}

Un'immagine GIF che ha il seguente formato causerà un crash:

  • Immagine valida (10 x 10)
  • Immagine più grande (10000 x 10000) con un descrittore di immagine non valido

Fasi che portano al crash

  1. Fase di analisi
    1. Analizza la prima immagine (piccola)
    2. Alloca il buffer rasterBits di dimensione (altezza piccola * larghezza piccola)
    3. Analizza la seconda immagine (grande)
    4. DGifSetupDecompress/DGifGetImageDesc restituisce GIF_ERROR
    5. Salta la riallocazione
  2. Fase di rendering
    1. Renderizza la prima immagine (successo)
    2. Renderizza la seconda immagine (OOB)
Scarica lo strumento