Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2019-11932 — Technischer Bericht und Exploit-Code für CVE-2019-11932, eine Double-Free-Schwachstelle in WhatsApp für Android, die zu Remote-Codeausführung über eine manipulierte GIF-Datei führt. | Kitploit
Tools/GitHubGitHub/infiniteloopers/cve-2019-11932
Android-SicherheitSchwachstellenanalyseExploitationMobile SicherheitLernen & BildungBinary-Exploitation
GitHubinfiniteloopers/cve-2019-11932

CVE-2019-11932

Technischer Bericht und Exploit-Code für CVE-2019-11932, eine Double-Free-Schwachstelle in WhatsApp für Android, die zu Remote-Codeausführung über eine manipulierte GIF-Datei führt.

Repository anzeigen
429vor 6 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2019-11932

Wie ein Double-Free-Fehler in WhatsApp zu RCE wird

Ich werde über eine Double-Free-Sicherheitslücke berichten, die ich in WhatsApp für Android entdeckt habe, und wie ich sie in eine RCE umgewandelt habe. Ich habe dies Facebook gemeldet. Facebook hat den Fehler bestätigt und offiziell in WhatsApp Version 2.19.244 behoben. Facebook half dabei, CVE-2019-11932 für dieses Problem zu reservieren.

WhatsApp-Nutzer, bitte aktualisiert auf die neueste WhatsApp-Version (2.19.244 oder höher), um vor diesem Bug geschützt zu sein.

Die Schritte sind wie folgt:

0:16 Angreifer sendet GIF-Datei über beliebige Kanäle an Benutzer

Eine Möglichkeit ist als Dokument über WhatsApp (d.h. den Büroklammer-Button drücken und Dokument auswählen, um das manipulierte GIF zu senden) Wenn sich der Angreifer in der Kontaktliste des Benutzers befindet (d.h. ein Freund), wird das manipulierte GIF automatisch ohne Benutzerinteraktion heruntergeladen.

0:24 Benutzer möchte eine Mediendatei an einen seiner WhatsApp-Freunde senden. Der Benutzer drückt daher den Büroklammer-Button und öffnet die WhatsApp-Galerie, um eine Mediendatei zum Senden an seinen Freund auszuwählen.

Beachten Sie, dass der Benutzer nichts senden muss, da bereits das Öffnen der WhatsApp-Galerie den Bug auslöst. Nach dem Drücken der WhatsApp-Galerie ist keine weitere Berührung erforderlich.

0:30 Da WhatsApp Vorschaubilder aller Medien anzeigt (einschließlich der empfangenen GIF-Datei), wird der Double-Free-Bug und unser RCE-Exploit ausgelöst.

Double-Free-Sicherheitslücke in DDGifSlurp in decoding.c in libpl_droidsonroids_gif

Wenn ein WhatsApp-Benutzer die Galerieansicht in WhatsApp öffnet, um eine Mediendatei zu senden, parst WhatsApp diese mit einer nativen Bibliothek namens libpl_droidsonroids_gif.so, um die Vorschau der GIF-Datei zu generieren. libpl_droidsonroids_gif.so ist eine Open-Source-Bibliothek mit Quellcode verfügbar unter https://github.com/koral–/android-gif-drawable/tree/dev/android-gif-drawable/src/main/c.

Eine GIF-Datei enthält mehrere codierte Frames. Zum Speichern der decodierten Frames wird ein Puffer mit dem Namen rasterBits verwendet. Wenn alle Frames die gleiche Größe haben, wird rasterBits ohne Neuzuweisung wiederverwendet, um die decodierten Frames zu speichern. Allerdings wird rasterBits neu zugewiesen, wenn eine der folgenden drei Bedingungen erfüllt ist:

Breite * Höhe > ursprünglicheBreite * ursprünglicheHöhe

Breite - ursprünglicheBreite > 0

Höhe - ursprünglicheHöhe > 0

Neuzuweisung ist eine Kombination aus free und malloc. Wenn die Größe der Neuzuweisung 0 ist, handelt es sich lediglich um einen free. Angenommen, wir haben eine GIF-Datei, die 3 Frames mit den Größen 100, 0 und 0 enthält.

Nach der ersten Neuzuweisung haben wir einen info->rasterBits-Puffer der Größe 100.

Bei der zweiten Neuzuweisung von 0 wird der info->rasterBits-Puffer freigegeben.

Bei der dritten Neuzuweisung von 0 wird info->rasterBits erneut freigegeben.

Dies führt zu einer Double-Free-Sicherheitslücke. Die Auslösestelle findet sich in decoding.c:

int_fast32_t widthOverflow = gifFilePtr->Image.Width - info->originalWidth; int_fast32_t heightOverflow = gifFilePtr->Image.Height - info->originalHeight; 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, <<-- double-free here sizeof(GifPixelType)); if (tmpRasterBits == NULL) { gifFilePtr->Error = D_GIF_ERR_NOT_ENOUGH_MEM; break; } info->rasterBits = tmpRasterBits; info->rasterSize = newRasterSize; }

Wie ein Double-Free-Fehler in WhatsApp zu RCE wird 14 Minuten Lesezeit AUF DIESER SEITE DEMO DOUBLE-FREE-SICHERHEITSLÜCKE IN DDGIFSLURP IN DECODING.C IN LIBPL_DROIDSONROIDS_GIF PC-REGISTER KONTROLLIEREN UMGANG MIT ASLR UND W^X ALLES ZUSAMMENFÜGEN BETROFFENE VERSIONEN ANGRIFFSVEKTOREN In diesem Blogbeitrag werde ich über eine Double-Free-Sicherheitslücke berichten, die ich in WhatsApp für Android entdeckt habe, und wie ich sie in eine RCE umgewandelt habe. Ich habe dies Facebook gemeldet. Facebook hat den Fehler bestätigt und offiziell in WhatsApp Version 2.19.244 behoben. Facebook half dabei, CVE-2019-11932 für dieses Problem zu reservieren.

WhatsApp-Nutzer, bitte aktualisiert auf die neueste WhatsApp-Version (2.19.244 oder höher), um vor diesem Bug geschützt zu sein.

Demo https://drive.google.com/file/d/1T-v5XG8yQuiPojeMpOAG6UGr2TYpocIj/view

Google Drive-Link zum Herunterladen, falls der obige Link nicht zugänglich ist https://drive.google.com/open?id=1X9nBlf5oj5ef2UoYGOfusjxAiow8nKEK

Die Schritte sind wie folgt:

0:16 Angreifer sendet GIF-Datei über beliebige Kanäle an Benutzer Eine Möglichkeit ist als Dokument über WhatsApp (d.h. den Büroklammer-Button drücken und Dokument auswählen, um das manipulierte GIF zu senden) Wenn sich der Angreifer in der Kontaktliste des Benutzers befindet (d.h. ein Freund), wird das manipulierte GIF automatisch ohne Benutzerinteraktion heruntergeladen. 0:24 Benutzer möchte eine Mediendatei an einen seiner WhatsApp-Freunde senden. Der Benutzer drückt daher den Büroklammer-Button und öffnet die WhatsApp-Galerie, um eine Mediendatei zum Senden an seinen Freund auszuwählen. Beachten Sie, dass der Benutzer nichts senden muss, da bereits das Öffnen der WhatsApp-Galerie den Bug auslöst. Nach dem Drücken der WhatsApp-Galerie ist keine weitere Berührung erforderlich. 0:30 Da WhatsApp Vorschaubilder aller Medien anzeigt (einschließlich der empfangenen GIF-Datei), wird der Double-Free-Bug und unser RCE-Exploit ausgelöst. Double-Free-Sicherheitslücke in DDGifSlurp in decoding.c in libpl_droidsonroids_gif Wenn ein WhatsApp-Benutzer die Galerieansicht in WhatsApp öffnet, um eine Mediendatei zu senden, parst WhatsApp diese mit einer nativen Bibliothek namens libpl_droidsonroids_gif.so, um die Vorschau der GIF-Datei zu generieren. libpl_droidsonroids_gif.so ist eine Open-Source-Bibliothek mit Quellcode verfügbar unter https://github.com/koral–/android-gif-drawable/tree/dev/android-gif-drawable/src/main/c.

Eine GIF-Datei enthält mehrere codierte Frames. Zum Speichern der decodierten Frames wird ein Puffer mit dem Namen rasterBits verwendet. Wenn alle Frames die gleiche Größe haben, wird rasterBits ohne Neuzuweisung wiederverwendet, um die decodierten Frames zu speichern. Allerdings wird rasterBits neu zugewiesen, wenn eine der folgenden drei Bedingungen erfüllt ist:

Breite * Höhe > ursprünglicheBreite * ursprünglicheHöhe Breite - ursprünglicheBreite > 0 Höhe - ursprünglicheHöhe > 0 Neuzuweisung ist eine Kombination aus free und malloc. Wenn die Größe der Neuzuweisung 0 ist, handelt es sich lediglich um einen free. Angenommen, wir haben eine GIF-Datei, die 3 Frames mit den Größen 100, 0 und 0 enthält.

Nach der ersten Neuzuweisung haben wir einen info->rasterBits-Puffer der Größe 100. Bei der zweiten Neuzuweisung von 0 wird der info->rasterBits-Puffer freigegeben. Bei der dritten Neuzuweisung von 0 wird info->rasterBits erneut freigegeben. Dies führt zu einer Double-Free-Sicherheitslücke. Die Auslösestelle findet sich in decoding.c:

Tool herunterladen