خطاي سرريزي بافر در
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
نويسنده:
محسن شريفي |