خطای سرریزی بافر در
Microsoft Jet Database Engine
تاریخ انتشار:
31 مارچ 2005
12:00AM
تاریخ به روزرسانی:
3 اکتبر 2005
03:52PM
CVE:
CAN-2005-0944
کاشف:
vuln@hexview.com
میزان خطر:
بالا
سیستمهای تحت تاثیر:
Microsoft JET 4.0 SP7
Microsoft JET 4.0 SP6
Microsoft JET 4.0 SP5
Microsoft JET 4.0 SP4
Microsoft JET 4.0 SP3
Microsoft JET 4.0 SP2
Microsoft JET 4.0 SP1
Microsoft JET 4.0
+ Microsoft Access 2000
Microsoft JET 3.51 SP3
Microsoft JET 3.51
+ Microsoft Excel 95
+ Microsoft Excel 97
Microsoft JET 3.5
+ Microsoft Access 95
+ Microsoft Access 97
Microsoft JET 3.0
+ Microsoft Access 95
Microsoft JET 2.5
+ Microsoft Access 2.0 SP1
Microsoft JET 2.0
+ Microsoft Access 2.0
چکیده:
یک آسیب پذیری از نوع سرریزی بافر در
Microsoft Jet Database Engine
وجود دارد. نقطه ضعف مذکور در کتابخانه
msjet40.dll
گزارش شده است. کلیه تستها و توضیحاتی که در زیر آورده شده ، روی
آخرین نسخه کتابخانه
msjet40.dll
(نسخه 4.00.8618.0) صورت گرفته است و احتمالا نسخه های قبلی این
کتابخانه نیز مستعد این آسیب پذیری هستند.
نکته:
Microsoft Jet Database OLE(msjetoledb40.dll)
از این نقطه ضعف مصون بوده و فقط برنامه هایی که از
msjet40.dll
استفاده می کنند آسیب پذیر هستند مانند
Microsoft Access.
Microsoft Jet Database
به طور گسترده ای توسط برنامه های کاربردی
Office
مورد استفاده قرار می گیرد.
msjet40.dll
جزء اصلی
Microsoft Jet Database Engine
بوده و وظیفه ارزیابی و اجرای تقاضاهای مربوط به اطلاعات و داده
ها درون پایگاه داده را به عهده دارد. در پایگاه داده
Access
این کتابخانه به خواندن و نوشتن اطلاعات رسیدگی می کند.
توضیح:
به هنگام تجزیه و تحلیل یک فایل پایگاه داده توسط
msjet40.dll،
ارزیابی اطلاعات به اندازه کافی انجام نمیشود و در نتیجه این
امکان وجود دارد که با تغییر عمدی یک فایل پایگاه داده ،هنگامی
که این فایل توسط
msjet40.dll
باز می شود کد مورد نظر نفوذگر به اجرا درآید.
در زیر قطعه ای از یک فایل
mdb
خالی آورده شده است. به توالی کاراکترهای
0x77
در خط سوم توجه کنید. هنگامی که
msjet40.dll
این بخش از فایل را تجزیه و تحلیل می کند این کاراکترها سبب
ایجاد یک
exception
در برنامه میشوند.
000023B0: 00 00 04 00-49 00 64 00-18 00 50
00-61 00 72 00 ....I.d...P.a.r.
000023C0: 65 00 6E 00-74 00 49 00-64 00 4E 00-61 00 6D 00
e.n.t.I.d.N.a.m.
000023D0: 65 00 77 77-77 77 00 00-05 06 00 00-08 00 02 06
e.wwww..........
000023E0: 00 00 03 06-00 00 0D 00-08 06 00 00-09 06 00 00
................
000023F0: 10 00 0E 06-00 00 0F 06-00 00 0F 00-0C 06 00 00
................
در زیر قطعه کد آسیب پذیر که در کتابخانه
msjet40.dll
قرار دارد آورده شده است. نفوذگر بطور مستقیم مقدار ثبات
AX
را کنترل میکند.
movsx eax, ax
mov ecx, [edi+eax*4+0B0h]
mov edx, [ecx]
call dword ptr [edx+10h]
محدوده حافظه ای که در دسترس می باشد شامل
بخشهایی از فایل اصلی است، یعنی می توان با توجه به قطعه کد بالا
،در ثبات
EIP(Instruction Pointer)
مقداری را قرار داد که درون فایل اصلی جاسازی شده است. کد
exploitای
که بدین صورت نوشته شود بسیار قابل حمل
(Portable)
بوده و نفوذگر هیچ احتیاجی به آدرسهای کد مورد نظر خود ندارد.
توجه : تروجانی با نام
Backdoor.Hesive
با سوء استفاده از این آسیب پذیری خودش را روی کامپیوترهای آسیب
پذیر نصب می کند.
کد
Exploit:
http://www.securityfocus.com/data/vulnerabilities/exploits/msjetBufferOverflowExploit.c
راه حل:
هنوز هیچ راه حل و اصلاحیه ای در این زمینه گزارش
نشده است.
منابع:
Technet Security
(Microsoft)
http://www.hexview.com/docs/20050331-1.txt
نویسنده:
محسن شریفی |