واضح آرشیو وب فارسی:ابرار: پروسسورهاى امن
شايد تا كنون نام Buffer Overflow يا سرريز بافر را شنيده باشيد. به عنوان يك متخصص امنيت شبكه اين نام قاعدتا كابوس هميشگى شما بوده است. اگر اين نام را نشنيده ايد اجازه دهيد تا به شكل ديگرى مساله را معرفى كنيم: به عنوان يك مدير شبكه يا كارشناس كامپيوتر بدترين خاطره ماههاى گذشته خود را مرور كنيد... Blaster! يك كرم كامپيوترى كه براى آلوده كردن تمامى كامپيوترهاى سازمان شما فقط به چند ثاينه وقت و يك ارتباط معمولى با اينترنت نياز داشت و البته يكعدد سيستم عامل ويندوز. طبق معمول پس از شيوع يك كرم اينترنتى با آلودگى بالا همه به دنبال مقصرين اصلى ميگردند. ميكروسافت در تنها چند ماه بارها مجبور به انتشار Patchهاى جديد شد و البته بيش از هر زمان ديگرى اعتبارش به چالش كشيده شد. اما آيا واقعا مقصر اصلى ميكروسافت بود؟
تاريخچه
شروع اين ماجرا مربوط به سالها پيش است. طراحان زبان برنامه نويسى C و سپس C++ ظاهرا بيش از حد لازم دمكرات بودند. بايد قبول كرد كه اغلب اوقات كمكى محافظه كارى اگر چاشنى كار شود نتيجه بهتر خواهد بود! در حالى كه اغلب زبانهاى برنامه نويسى به شكلى برنامه نويس را در تخصيص و يا كاربرى حافظه محدود مى كنند اين زبان دست برنامه نويس را تا حد امكان باز گذاشته تا جايى كه برنامه نويس ميتواند يك رشته صد بايتى را در يك حافظه ده بايتى كپى كند. همين ويژگى باعث شد تا برنامه نويسان C كمتر حساسيتى در زمينه چك كردن طول رشته هايى كه در يك بافر كپى مى شوند از خود نشان دهند. نتيجه همه اينها بوجود آمدن يك سرگرمى بسيار پر طرفدار براى هكرها بود. با چند كلك فنى ميتوان به جاى رشته ورودى يك رشته طولانى حاوى كد يك Back Door را وارد كرد و نتيجه؟ افتادن كنترل كامل كامپيوتر مورد نظر در دست هكر. اصل ماجرا به همين سادگى است و در واقع پايه فنى بسيارى از كرمهاى اينترنتى و بسيارى از خرابكارى ها همين خطاست. Blaster هم بر اساس وجود يك چنين خطايى در يكى از سرويسهاى RPC ويندوز عمل مى كرد. اما اگر مشكل به اين سادگى است چرا تا كنون براى حل آن اقدامى نشده است؟ خواهيد گفت دستكم مى شد به برنامه نويسان پيشنهاد كرد كه لطفا در هنگام نوشتن برنامه طول رشته هاى ورودى را حتما با طول بافر چك كنيد. بسيار پيشنهاد خوبى است اما دو مشكل بزرگ براى عملى كردن آن وجود دارد. اول اينكه برنامه نويسان C اصلا از اين پيشنهاد شما خوششان نخواهد آمد. آنها هميشه كارهاى مهمترى از چك كردن طول رشته ها دارند! و دومين نكته اينكه حجم بسيار عظيمى از كدهايى را كه قبلا نوشته شده نمى توان دوباره تغيير داد. اين مشكل دوم دقيقا چيزى است كه ميكروسافت با آن روبروست: كد ويندوز بنا به برخى روايتها ملغمه عجيب و غريبى است كه هنوز حتى يادگارهايى از كد داس نيز در آن موجود است.
راه حلهايى براى آينده
واقعيت اينست كه تا كنون يك دوجين راه حل براى حل اين مشكل پيشنهاد شده است و بسيارى از تكنولوژيهاى جديد يكى از اولين ويژگيهاى خود را حل اين مشكل عنوان مى كنند. جاوا وNET.دو مثال خوب براى اين قضيه هستند. اين دو زبان (اجازه دهيد با كمى اغماضNET . را زبان بناميم هر چند اينگونه نيست) مكانيزمهاى سخت گيرانه اى براى مديريت حافظه دارند و عملا كنترل كامل حافظه برنامه را از دست برنامه نويس خارج مى كنند. اما همانگونه كه حدس ميزنيد اين دو نيز همان اشكالهاى قبلى را دارند: تغيير تمام كدهاى موجود و تبديل آنها به كدهاى جاوا و ياNET . عملى نيست. اينها مشكل را فقط در آينده دور حل كرده اند اما اكنون چاره چيست؟
تغيير ديدگاه
شركت AMD پروسسورهايى را روانه بازار كرده است كه مهمترين ويژگى آنها اينست: مقاومت در برابر حمله سرريز بافر. اين اولين بار نيست كه براى مشكلات نرم افزارى راه حلهاى سخت افزارى پيشنهاد مى شود. در واقع به نظر مى رسد مشكل دارد در جايى حل مى شود كه اساسا انتظار آن نمى رفت، در پايين ترين سطح سيستم،يعنى پروسسور. همانگونه كه پيشتر ديديم اين حمله تنها زمانى امكان پذير مى شود كه هكر بتواند بخشى از كد را وارد داده كند و به اجراى آن بپردازد. هر برنامه در هنگام اجرا از بخشهاى مختلفى در حافظه تشكيل مى شود كه مهمترين بخشهاى آن عبارتند از دو بخش كد و داده. تا كنون اين دو بخش از ديد پردازنده ها يكسان بودند و پردازنده تفاوتى بين آنها نمى گذاشت. اين تنها نرم افزارها بودند كه اين تفاوت را درك مى كردند. اما ازين پس پردازنده هاى AMD سرى Athlon ۶۴ (براى كامپيوترهاى شخصى) و سرى Opteron (براى سرورها) اين تفاوت را خواهند فهميد. به محض اينكه هكر سعى كند يك قطعه كد را در قسمت مربوط به داده برنامه اجرا كند پردازنده جلوى آنرا خواهد گرفت و يك پيغام خطا براى سيستم عامل ارسال خواهد كرد و سيستم عامل برنامه عامل خطا را خواهد بست. دقت كنيد كه كاركرد نهايى اين تكنيك وابسته به همكارى كامل سيستم عامل و پردازنده است. البته Intel نيز براى اينكه از قافله عقب نماند خبر از همكارى با ميكروسافت براى حل اين مشكل داده است. سرى آينده Itanium از شركت اينتل خصلتى مشابه Athlon هاى AMD خواهد داشت.
افق
آيا اين به معنى پايان داستان Blaster يا Slammer است. به نظر نمى رسد اينگونه باشد هر چند بايد منتظر نتايج عملى اين تكنولوژى باشيم اما از همين اكنون مى توان پيش بينى كرد كه هكرها هم راههاى جديدى خواهند يافت. به هر حال اين نكته را بايد يادآورى كنيم كه تا به امروز مهمترين تكنيك مورد استفاده هكرها سرريز بافر بوده ست. با توجه به اين نكته روزهاى سختى براى آنها در پيش است.
ircert.com
دوشنبه 24 تير 1387
این صفحه را در گوگل محبوب کنید
[ارسال شده از: ابرار]
[تعداد بازديد از اين مطلب: 154]