یکی از مشکلات امنیتی که در بعضی از نرم افزارها مشاهده می شود، سرریزی بافر یا buffer overflow است. سرریزی بافر عموما در زمان اجرا و بسته به ورودی های مختلف برنامه رخ می دهد و حتی می تواند به هکرها کمک کند تا برنامه را تغییر داده و کدهای مخرب در آن وارد کنند. در این مقاله قصد داریم این موضوع را بررسی کنیم و ببینیم سرریزی بافر چیست و چه زمانی اتفاق می افتد.
بافر چیست؟ بافر، حافظه موقتی است که به صورت نرم افزاری و سخت افزاری پیاده سازی می شود، در روش سخت افزاری مثل بافر کیبورد، اطلاعات کلیدهایی که شما روی صفحه کلید فشار داده اید در جایی ذخیره می شود و سیستم عامل آنها را می خواند و پردازش می کند. بافر نرم افزاری به دو صورت قابل پیاده سازی است. 1 در سطح سیستم عامل: سیستم عامل مقداری از حافظه را جهت بافرکردن به خود اختصاص می دهد. این حافظه برای یکسان سازی سرعت دیسک سخت و پردازشگر استفاده می شود. 2 در سطح نرم افزار کاربردی: این حافظه را ما به عنوان برنامه نویس تعریف می کنیم تا امور مختلفی را انجام دهیم. قطعه کد زیر را در نظر بگیرید: void overflow_function (char *str){ char buffer[10]; strcpy(buffer, str); } int main(){ char big_string[14]; strcpy(big_string,"bufferoverflow"); overflow_function(big_string); return 0; } از لحاظ قواعد گرامری این قطعه کد درست است و باید بدون اشکال کار کند اما در زمان اجرا، خطای در حال اجرا صادر خواهد شد با این مضمون: stack around the variable ‘buffer’ was corrupted بسیار خب، این خطا به ما می گوید که متغیر بافر خراب شده است. بیایید ببینیم این کد دقیقا چه کار می کند: ابتدا یک متغیر از نوع رشته به طول 14کاراکتر تعریف کرده و مقدار bufferoverflow را با استفاده از دستور strcpy در آن کپی می کنیم. تا اینجا مشکل خاصی نیست و کد درست است. حال مقدار big_string به تابع overflow_function پاس داده می شود. این تابع سعی دارد مقدار big_string که به آن داده شده است را درbuffer کپی کند اما این عمل ناموفق می ماند و در نتیجه برنامه خطا می دهد. چرا خطا می دهد؟ این تابع می خواهد مقدار 14کاراکتر را در یک رشته 10کاراکتری کپی کند، طبیعی است که این کار را نمی تواند درست انجام دهد، برای همین خطا صادر می شود. کمی دقیق تر به مساله نگاه می کنیم: وقتی تابع overflow_function فراخوانی می شود آدرس برگشت به تابع فراخواننده در ثبات sp قرار می گیرد. سپس این تابع سعی می کند مقدار 14کاراکتر را در 10کاراکتر کپی کند و این عمل با موفقیت انجام می شود. فرض کنید بافر در 10خانه اول بعد از آدرس 100h قرار داد و ثبات sp مقدار خانه 10dh را به عنوان آدرس برگشتی تابع overflow_function در خود دارد. حال مقدار 14کاراکتر در متغیر بافر، کپی می شود و در نتیجه خانه های 100h تا 10eh بازنویسی می شوند و سپس کار تابع به پایان می رسد و سیستم عامل قصد دارد با استفاده از آدرس ذخیره شده در sp به فراخواننده تابع overflow_function بر گردد اما از آن جایی که آدرس 10dh بازنویسی شده است، پردازشگر نمی تواند دستوری را اجرا کند و خطای bufferoverflow صادر می شود. خب، هکرها با استفاده از همین خطا به سیستم های دیگران حمله می کنند. آنها یکسری دستورات به زبان اسمبلی می نویسند که در اصطلاح به آنها shellcode یا exploit گفته می شود. به مثال بالا برمی گردیم، فرض کنید به جای مقدار “bufferoverflow” یک شل کد به تابع overflow_function داده شود. وقتی کار تابع تمام شد، پردازشگر به آدرس 10dh می رود. مقدار این آدرس دیگر یک مقدار نامعتبر نیست بلکه به یک قطعه کد اشاره دارد و پردازشگر، آن قطعه کد را اجرا می کند و سبب می شود برنامه اصلی، کار خودش را درست انجام ندهد . این یک روش برای سوءاستفاده از سرریزی است. روش دیگر دسترسی به بخش های محرمانه حافظه است که اطلاعات اساسی سیستم در آن قرار دارد. هکر با تزریق کد خود به برنامه می تواند به بخش های محرمانه حافظه دسترسی پیدا کند و اطلاعات حیاتی سیستم را مورد سو ءاستفاده قرار دهد.
چگونه جلوی سرریزی را بگیریم؟ تنها کاری که لازم است انجام دهیم، بررسی مقادیر ورودی برنامه است تا دقیقا مطابق با اندازه متغیر داده ها درون آن ریخته شوند. به طور مثال؛ کد بالا را با تغییر کوچکی اصلاح می کنیم و از سرریزی بافر جلوگیری می کنیم. کد بازنویسی شده به صورت زیر خواهد بود: void overflow_function (char *str){ char buffer[10]; strncpy(buffer, str,10); } int main(){ char big_string[14]; strncpy(big_string,"bufferoverflow",14); overflow_function(big_string); return 0; }
امیربهاالدین سبط الشیخ
... 3- جعبه محصول باید حاوی کد فعال سازی انحصاری که روی کارت مخصوص درج شده است باشد ...
... برای داشتن حساب کاربری، متقاضی باید تمامی مشخصات حقیقی خود اعم از محل خدمت، کد ملی و غیره را به همراه درخواست کتبی و رسمی موسسه /سازمان/شرکت دولتی ذی ربط از سوی بالاترین مقام سازمان خطاب به «معاونت فناوری اطلاعات وزارت ارتباطات و فناوری اطلاعات» ارسال کند ...
... ir و وارد کردن شماره شناسنامه در ستون نام کاربر و کد بورسی به عنوان رمز عبور، از خدمات دسترسی آنلاین به اطلاعات شامل اطلاع از میزان سود سهام، قیمت هر سهم، مقدار سهم، مقدار سهم خرید و فروش شده و سایر خدمات استفاده کنند ...
... ir و وارد کردن شماره شناسنامه در ستون نام کاربر و کد بورسی به عنوان رمز عبور، از خدمات دسترسی آنلاین به اطلاعات شامل اطلاع از میزان سود سهام، قیمت هر سهم، مقدار سهم، مقدار سهم خرید و فروش شده و سایر خدمات استفاده کنند ...
... ir و وارد کردن شماره شناسنامه در ستون نام کاربر و کد بورسی به عنوان رمز عبور، از خدمات دسترسی آنلاین به اطلاعات شامل اطلاع از میزان سود سهام، قیمت هر سهم، مقدار سهم، مقدار سهم خرید و فروش شده و سایر خدمات استفاده کنند ...
... در سرویس شبکه ی خصوصی مجازی چند نفر یا شعبات مختلف یک شرکت می توانند با ایجاد یک شبکه ی مجازی و داشتن کد، بدون نیاز به ورود به شبکه ی اصلی با یکدیگر مکالمه کنند ...
... اما آیا تاکنون به تاریخچه این سه کلید فکر کرده اید؟گفته می شود دیوید برادلی که در سال 1975، به عنوان یک مهندس کامپیوتر به شرکت ibm ملحق شد، تنها در پنج دقیقه، کدی را برای کامپیوتر ها نوشت که تا به حال، مورد استفاده کاربران خانگی قرار گرفته است و این کد چیزی جز اختراع مشهورترین ترکیب کلیدها روی صفحه کلید نبود ...
... روش کار این کدها نیز این گونه است که ابتدا نرم افزار الگوریتمی را به برنامه شما اضافه می کند، سپس با اجرای نرم افزار مورد نظر توسط شما، یک کد سخت افزاری منحصربه فرد به رایانه تان تعلق می گیرد که برای استفاده از نرم افزار به طور کامل، باید کد معادل با کد دریافتی را در برنامه وارد کنید ... این کد نیز تنها توسط شما قابل تولید است و آن هم با استفاده از کلید مخصوصی که قبلا مشخص کرده اید ... گام چهارم: پنجره ها و پیغام ها از دیگر امکاناتی که این برنامه در اختیار شما قرار می دهد، ویرایش پیام های هشدار و عناوین به کار رفته در بخش نمایش کد کاربر و درخواست کد فعال سازی است ... گام پنجم: چگونگی ایجاد کد مشخص کردن سایت برای خرید نرم افزار به صورت آنلاین، تعیین کلید مخصوص برای کدهای نرم افزار و نحوه ذخیره سازی کد را می توانید با مراجعه به بخش licensing مشخص کنید ... گام آخر: ایجاد فایل و کدساز در نهایت پس از طی کردن مراحل فوق می توانید با کلیک روی گزینه protect now از بخش application info ، فایل جدیدی را که مجهز به سیستم حفاظتی توسط کد فعال سازی است ذخیره کنید ... همچنین برای تهیه خروجی از ابزار ایجاد کد معادل نیز می توانید از منوی options گزینه !create project "keygen ...
... تقی پور تجارت الکترونیکی را تجارت بدون کاغذ و ارائه خدمات با کمترین زحمت ذکر کرد و اظهار داشت: ایجاد کد تجاری، امنیت ارتباطات و حفظ محرمانگی اطلاعات شخصی از بسترهای لازم برای الکترونیکی کردن امور است ضمن آنکه برای راه اندازی فرایند کامل تجارت الکترونیکی لازم است زیرساخت های ارتباطی پرسرعت و مطمئن نیز فراهم شود ... وی با تاکید بر راه اندازی پایگاه ملی داده ها در کشور گفت: راه اندازی پایگاه های ملی داده ها از زیرساخت های اساسی در برنامه پنجم توسعه است که در حال حاضر این اقدام با ترکیب کدملی و کد پستی در حال انجام است ...
| 1 | 2 |
صفحه 3
|
4 | 5 | 6 |