Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2019-11932 — مستند فني وكود استغلال لـ CVE-2019-11932، وهي ثغرة من نوع double-free في تطبيق WhatsApp لنظام Android تؤدي إلى تنفيذ تعليمات برمجية عن بُعد عبر ملف GIF معدل. | Kitploit
أدوات/GitHubGitHub/infiniteloopers/cve-2019-11932
أمان أندرويدتحليل الثغرات الأمنيةالاستغلالأمن الجوالالتعلم والتعليماستغلال الملفات الثنائية
GitHubinfiniteloopers/cve-2019-11932

CVE-2019-11932

مستند فني وكود استغلال لـ CVE-2019-11932، وهي ثغرة من نوع double-free في تطبيق WhatsApp لنظام Android تؤدي إلى تنفيذ تعليمات برمجية عن بُعد عبر ملف GIF معدل.

عرض المستودع
4210منذ 6 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2019-11932

كيف تتحول ثغرة التحرير المزدوج في واتساب إلى تنفيذ تعليمات برمجية عن بعد (RCE)

سأشارككم عن ثغرة تحرير مزدوج (double-free) اكتشفتها في واتساب لأندرويد، وكيف حولتها إلى استغلال لتنفيذ تعليمات برمجية عن بُعد (RCE). أبلغت فيسبوك بهذا الأمر. اعترفت فيسبوك بالثغرة وأصلحتها رسميًا في إصدار واتساب 2.19.244. ساعدت فيسبوك في حجز CVE-2019-11932 لهذه المشكلة.

مستخدمو واتساب، يرجى التحديث إلى أحدث إصدار من واتساب (2.19.244 أو أعلى) للحفاظ على سلامتكم من هذه الثغرة.

الخطوات كالتالي:

0:16 يرسل المهاجم ملف GIF إلى المستخدم عبر أي قناة

قد تكون إحدى هذه القنوات هي إرسال المستند عبر واتساب (أي الضغط على زر مشبك الورق واختيار مستند لإرسال ملف GIF المخترق) إذا كان المهاجم في قائمة جهات اتصال المستخدم (أي صديق)، يتم تنزيل ملف GIF المخترق تلقائيًا دون أي تفاعل من المستخدم.

0:24 يريد المستخدم إرسال ملف وسائط إلى أي من أصدقائه على واتساب. لذلك يضغط على زر مشبك الورق ويفتح معرض واتساب لاختيار ملف وسائط لإرساله إلى صديقه.

لاحظ أن المستخدم لا يحتاج إلى إرسال أي شيء، فمجرد فتح معرض واتساب يؤدي إلى تفعيل الثغرة. لا حاجة إلى لمس إضافي بعد الضغط على معرض واتساب.

0:30 بما أن واتساب يعرض معاينات لكل وسائط (بما في ذلك ملف GIF المستلم)، فإنه سيفعل ثغرة التحرير المزدوج واستغلالنا لـ RCE.

ثغرة التحرير المزدوج في DDGifSlurp في файл decoding.c في مكتبة libpl_droidsonroids_gif

عندما يفتح مستخدم واتساب عرض المعرض في واتساب لإرسال ملف وسائط، يقوم واتساب بتحليله باستخدام مكتبة محلية تسمى libpl_droidsonroids_gif.so لإنشاء معاينة لملف GIF. مكتبة libpl_droidsonroids_gif.so هي مكتبة مفتوحة المصدر مع كود المصدر متاح على https://github.com/koral–/android-gif-drawable/tree/dev/android-gif-drawable/src/main/c.

يحتوي ملف GIF على إطارات متعددة مشفرة. لتخزين الإطارات المفكوكة، يتم استخدام مخزن مؤقت باسم rasterBits. إذا كانت جميع الإطارات لها نفس الحجم، يتم إعادة استخدام rasterBits لتخزين الإطارات المفكوكة دون إعادة تخصيص. ومع ذلك، سيتم إعادة تخصيص rasterBits إذا تم استيفاء أحد الشروط الثلاثة التالية:

width * height > originalWidth * originalHeight

width - originalWidth > 0

height - originalHeight > 0

إعادة التخصيص هي مزيج من free و malloc. إذا كان حجم إعادة التخصيص هو 0، فإنه مجرد free. لنفترض أن لدينا ملف GIF يحتوي على 3 إطارات بأحجام 100 و 0 و 0.

بعد إعادة التخصيص الأولى، لدينا مخزن info->rasterBits بحجم 100.

في إعادة التخصيص الثانية بقيمة 0، يتم تحرير مخزن info->rasterBits.

في إعادة التخصيص الثالثة بقيمة 0، يتم تحرير info->rasterBits مرة أخرى.

يؤدي هذا إلى ثغرة تحرير مزدوج. يمكن العثور على موقع التفعيل في ملف 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, <<-- التحرير المزدوج هنا sizeof(GifPixelType)); if (tmpRasterBits == NULL) { gifFilePtr->Error = D_GIF_ERR_NOT_ENOUGH_MEM; break; } info->rasterBits = tmpRasterBits; info->rasterSize = newRasterSize; }

كيف تتحول ثغرة التحرير المزدوج في واتساب إلى تنفيذ تعليمات برمجية عن بعد (RCE) 14 دقيقة قراءة على هذه الصفحة عرض توضيحي (DEMO) ثغرة التحرير المزدوج في DDGifSlurp في decoding.c في مكتبة libpl_droidsonroids_gif التحكم في سجل PC (Program Counter) التعامل مع ASLR و W^X وضع كل شيء معًا الإصدارات المتأثرة ناقلات الهجوم في منشور المدونة هذا، سأشارككم عن ثغرة تحرير مزدوج (double-free) اكتشفتها في واتساب لأندرويد، وكيف حولتها إلى استغلال لتنفيذ تعليمات برمجية عن بُعد (RCE). أبلغت فيسبوك بهذا الأمر. اعترفت فيسبوك بالثغرة وأصلحتها رسميًا في إصدار واتساب 2.19.244. ساعدت فيسبوك في حجز CVE-2019-11932 لهذه المشكلة.

مستخدمو واتساب، يرجى التحديث إلى أحدث إصدار من واتساب (2.19.244 أو أعلى) للحفاظ على سلامتكم من هذه الثغرة.

عرض توضيحي (Demo) https://drive.google.com/file/d/1T-v5XG8yQuiPojeMpOAG6UGr2TYpocIj/view

رابط Google Drive للتحميل إذا كان الرابط أعلاه غير متاح https://drive.google.com/open?id=1X9nBlf5oj5ef2UoYGOfusjxAiow8nKEK

الخطوات كالتالي:

0:16 يرسل المهاجم ملف GIF إلى المستخدم عبر أي قناة قد تكون إحدى هذه القنوات هي إرسال المستند عبر واتساب (أي الضغط على زر مشبك الورق واختيار مستند لإرسال ملف GIF المخترق) إذا كان المهاجم في قائمة جهات اتصال المستخدم (أي صديق)، يتم تنزيل ملف GIF المخترق تلقائيًا دون أي تفاعل من المستخدم. 0:24 يريد المستخدم إرسال ملف وسائط إلى أي من أصدقائه على واتساب. لذلك يضغط على زر مشبك الورق ويفتح معرض واتساب لاختيار ملف وسائط لإرساله إلى صديقه. لاحظ أن المستخدم لا يحتاج إلى إرسال أي شيء، فمجرد فتح معرض واتساب يؤدي إلى تفعيل الثغرة. لا حاجة إلى لمس إضافي بعد الضغط على معرض واتساب. 0:30 بما أن واتساب يعرض معاينات لكل وسائط (بما في ذلك ملف GIF المستلم)، فإنه سيفعل ثغرة التحرير المزدوج واستغلالنا لـ RCE. ثغرة التحرير المزدوج في DDGifSlurp في decoding.c في مكتبة libpl_droidsonroids_gif عندما يفتح مستخدم واتساب عرض المعرض في واتساب لإرسال ملف وسائط، يقوم واتساب بتحليله باستخدام مكتبة محلية تسمى libpl_droidsonroids_gif.so لإنشاء معاينة لملف GIF. مكتبة libpl_droidsonroids_gif.so هي مكتبة مفتوحة المصدر مع كود المصدر متاح على https://github.com/koral–/android-gif-drawable/tree/dev/android-gif-drawable/src/main/c.

يحتوي ملف GIF على إطارات متعددة مشفرة. لتخزين الإطارات المفكوكة، يتم استخدام مخزن مؤقت باسم rasterBits. إذا كانت جميع الإطارات لها نفس الحجم، يتم إعادة استخدام rasterBits لتخزين الإطارات المفكوكة دون إعادة تخصيص. ومع ذلك، سيتم إعادة تخصيص rasterBits إذا تم استيفاء أحد الشروط الثلاثة التالية:

width * height > originalWidth * originalHeight width - originalWidth > 0 height - originalHeight > 0 إعادة التخصيص هي مزيج من free و malloc. إذا كان حجم إعادة التخصيص هو 0، فإنه مجرد free. لنفترض أن لدينا ملف GIF يحتوي على 3 إطارات بأحجام 100 و 0 و 0.

بعد إعادة التخصيص الأولى، لدينا مخزن info->rasterBits بحجم 100. في إعادة التخصيص الثانية بقيمة 0، يتم تحرير مخزن info->rasterBits. في إعادة التخصيص الثالثة بقيمة 0، يتم تحرير info->rasterBits مرة أخرى. يؤدي هذا إلى ثغرة تحرير مزدوج. يمكن العثور على موقع التفعيل في ملف 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, <<-- التحرير المزدوج هنا sizeof(GifPixelType)); if (tmpRasterBits == NULL) { gifFilePtr->Error = D_GIF_ERR_NOT_ENOUGH_MEM; break; } info->rasterBits = tmpRasterBits; info->rasterSize = newRasterSize; } في نظام أندرويد، يؤدي التحرير المزدوج للذاكرة بحجم N إلى إرجاع نفس العنوان لعمليتي تخصيص ذاكرة لاحقتين من الحجم N.

(lldb) expr int $foo = (int) malloc(112) (lldb) p/x $foo (int) $14 = 0xd379b250

(lldb) p (int)free($foo) (int) $15 = 0

(lldb) p (int)free($foo) (int) $16 = 0

(lldb) p/x (int)malloc(12) (int) $17 = 0xd200c350

(lldb) p/x (int)malloc(96) (int) $18 = 0xe272afc0

(lldb) p/x (int)malloc(180) (int) $19 = 0xd37c30c0

(lldb) p/x (int)malloc(112) (int) $20 = 0xd379b250

(lldb) p/x (int)malloc(112) (int) $21 = 0xd379b250

كيف تتحول ثغرة التحرير المزدوج في واتساب إلى تنفيذ تعليمات برمجية عن بعد (RCE) 14 دقيقة قراءة على هذه الصفحة عرض توضيحي (DEMO) ثغرة التحرير المزدوج في DDGifSlurp في decoding.c في مكتبة libpl_droidsonroids_gif التحكم في سجل PC (Program Counter) التعامل مع ASLR و W^X وضع كل شيء معًا الإصدارات المتأثرة ناقلات الهجوم في منشور المدونة هذا، سأشارككم عن ثغرة تحرير مزدوج (double-free) اكتشفتها في واتساب لأندرويد، وكيف حولتها إلى استغلال لتنفيذ تعليمات برمجية عن بُعد (RCE). أبلغت فيسبوك بهذا الأمر. اعترفت فيسبوك بالثغرة وأصلحتها رسميًا في إصدار واتساب 2.19.244. ساعدت فيسبوك في حجز CVE-2019-11932 لهذه المشكلة.

مستخدمو واتساب، يرجى التحديث إلى أحدث إصدار من واتساب (2.19.244 أو أعلى) للحفاظ على سلامتكم من هذه الثغرة.

تنزيل الأداة