مقالات

   

 
۰۳ شهریور ۸۹
آسیب پذیری تخریب حافظه در تمام نسخه های Adobe Acrobat Reader
Title: Adobe Acrobat Reader Memory Corruption PoC
Advisory URL: http://itsecteam.com/en/vulnerabilities/vulnerability62.htm
poc: http://itsecteam.com/files/adb_poc.zip
Date published: 2010-08-25
 

سیستم های آسیب پذیر:

Adobe Acrobat reader 7.x
Adobe Acrobat Reader 8.x
Adobe Acrobat reader 9.x


تست شده بر روی نسخه های:

Adobe Acrobat 8.1
Adobe Acrobat 9.2
Adobe Acrobat 9.3
Adobe Acrobat 9.3.4

معرفی برنامه:

Acrobat reader یک نرم‌افزار نشر رومیزی است که محصول شرکت ادوبی بوده و از استاندارد PDF به عنوان بستر نگهداری و انتقال مستندات استفاده می‌کند.این نرم‌افزار برای اولین بار فرمت قابل حمل PDF را حمایت کرد. ادوبی آکروبات که اکنون چند نسخه مختلف دارد، در نسخه‌های مختلف امکان بازکردن و خواندن، ویرایش و تغییر و تولید فایل های PDF را فراهم می‌کند. نسخه‌ای از آن به نام ادوبی ریدرنام داشت  به رایگان از وب سایت ادوبی قابل دریافت است و امکان خواندن و چاپ پرونده‌های PDF را فراهم می‌کند . نرم‌افزارهای آکروبات و ریدر به عنوان راه‌حلی برای نمایش پرونده‌های متنی در یک طرح‌بندی خاص مشابه متون چاپ شده به کار می‌روند.


تشریح بر آسیب پذیری:

آسیب پذیری کشف شده در تمامی نسخه های معمول برنامه موجود است ما برنامه Acrobat reader  را باز کرده و سپس با دیبادگر به پرورسه  AcroRd32.exe نرم افزار attach  میکنم. سپس فایل poc  مورد نظرمون را از منوی file >open  باز می کنیم. در acrobat reader 9.3.3 در اين آسيب پذيري هنگام لود شدن برنامه وقتي به api اي به اسم acroform.api مي رسد برنامه با يك خطا كه به شرح زير است بر خورد می کند
.


 Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=00000001 ecx=02ae1314 edx=020c4bc8 esi=02adb470 edi=0012f4b4
eip=20946b4a esp=0012f414 ebp=0012f470 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
*** WARNING: Unable to verify checksum for C:\Program Files\Adobe\Reader 9.0\Reader\plug_ins\AcroForm.api
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Program Files\Adobe\Reader 9.0\Reader\plug_ins\AcroForm.api -
AcroForm!DllUnregisterServer+0x130993:
20946b4a 8b00            mov     eax,dword ptr [eax]  ds:0023:00000000=????????
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
0:000> u
AcroForm!DllUnregisterServer+0x130993:
20946b4a 8b00            mov     eax,dword ptr [eax]
20946b4c c3              ret
20946b4d 56              push    esi
20946b4e 8b742408        mov     esi,dword ptr [esp+8]
20946b52 57              push    edi
20946b53 33ff            xor     edi,edi
20946b55 393e            cmp     dword ptr [esi],edi
20946b57 7e1a            jle     AcroForm!DllUnregisterServer+0x1309bc (20946b73)



خوب مشاهده می کنید كه بعد از Cmp eax,[eax] برنامه Access violation  مي دهد.

و اما تشريح بيشتر , اين باگ در memory رخ مي دهد وقتي كه special كاراكتر به آن تزريق مي شود. ولي به دليل اين كه نمي توان register ها را تقيير داد و نمي توان با chain كردن locate كرش را تغيير داد با استناد به مقاله chris miller نمي توان اين باگ را فعلا اكسپلويت كرد تا راه حلي براي اين آسيب پذيري پيدا كرد. Api فوق داراي 3 module زير است كه با آدرس مي توانيد ببينيد.


acroform_PlugInMain          20802202
acroform_DllRegisterServer   20816190
acroform_DllUnregisterServer 208161B7

AcroForm.api:20802202 acroform_PlugInMain:
AcroForm.api:20802202 push    ebp
AcroForm.api:20802203 mov     ebp, esp
AcroForm.api:20802205 mov     eax, [ebp+14h]
AcroForm.api:20802208 mov     ecx, [eax]
AcroForm.api:2080220A mov     dword_21197F78, ecx
AcroForm.api:20802210 mov     eax, [eax+4]
AcroForm.api:20802213 mov     off_21197F80, eax
AcroForm.api:20802218 mov     eax, offset unk_20000
AcroForm.api:2080221D cmp     [ebp+8], eax
AcroForm.api:20802220 jnb     short loc_20802225
AcroForm.api:20802222 mov     eax, [ebp+8]
AcroForm.api:20802225


AcroForm.api:20802225 loc_20802225:                           ; CODE XREF: AcroForm.api:20802220j
AcroForm.api:20802225 mov     ecx, [ebp+0Ch]
AcroForm.api:20802228 mov     [ecx], eax
AcroForm.api:2080222A mov     eax, [ebp+10h]
AcroForm.api:2080222D mov     dword ptr [eax], offset unk_2080223B
AcroForm.api:20802233 mov     ax, 1
AcroForm.api:20802237 pop     ebp
AcroForm.api:20802238 retn    10h
AcroForm.api:20816190 acroform_DllRegisterServer:
AcroForm.api:20816190 push    esi
AcroForm.api:20816191 push    0
AcroForm.api:20816193 push    off_21197F80
AcroForm.api:20816199 mov     esi, offset aN                  ; "___ $"
AcroForm.api:2081619E push    offset unk_20E86000
AcroForm.api:208161A3 mov     ecx, esi
AcroForm.api:208161A5 call    near ptr unk_20803DB2
AcroForm.api:208161AA push    0
AcroForm.api:208161AC push    1
AcroForm.api:208161AE mov     ecx, esi
AcroForm.api:208161B0 call    near ptr unk_208160B2
AcroForm.api:208161B5 pop     esi
AcroForm.api:208161B6 retn

AcroForm.api:208161B7 acroform_DllUnregisterServer:
AcroForm.api:208161B7 push    esi
AcroForm.api:208161B8 push    0






AcroForm.api:208161BA push    off_21197F80
AcroForm.api:208161C0 mov     esi, offset aN                  ; "___ $"
AcroForm.api:208161C5 push    offset unk_20E86000
AcroForm.api:208161CA mov     ecx, esi
AcroForm.api:208161CC call    near ptr unk_20803DB2
AcroForm.api:208161D1 push    0
AcroForm.api:208161D3 push    1
AcroForm.api:208161D5 mov     ecx, esi
AcroForm.api:208161D7 call    near ptr unk_20816121
AcroForm.api:208161DC pop     esi
AcroForm.api:208161DD retn

 
 

كليه حقوق اين وب سايت براي تیم تحقیقاتی امنیت و تست نفوذ آی تی محفوظ ميباشد