حمله Buffer Overflow

دسته بندی ها : آموزش ۱۰ فروردین ۱۳۹۹ آپا دانشگاه تبریز 238 بازدید

اولین حمله buffer overflow در سال ۱۹۹۸ رخ داد و کرم اینترنتی موریس نام گرفت. این نوع حمله شایع ترین راه برای دسترسی غیرمجاز به دیتابیس برنامه های آسیب‌پذیر بود و به راحتی می توانست هر برنامه ای را که از نظر امنیتی ضعیف بود را مختل کند. همان طور که می دانید برای نگهداری اطلاعات حساس یک نرم افزار به حافظه نیاز داریم و هر حافظه هم دارای بافر است. اطلاعات قبل از این که به محل اصلی ذخیره خود برسند، در قسمت بافر بطور موقت ذخیره می شوند. زمانی که یک مهاجم بافر حافظه را با داده ها پر می کند برنامه مختل شده و به اصطلاح دچار carsh می شود. وقتی همچین اتفاقی رخ داد زمان مناسبی است که هرنوع دستوری را مانند تزریق شل کد برای دسترسی به اطلاعات بر روی برنامه اجرا کنیم. این نوع حملات مبتنی بر پشته و یا همان stack based  و heap based  هستند. تمامی داده ها تا زمانی که در بافر هستند در این دو موقعیت ذخیره می شوند. تنها تفاوت دو نوع موقعیت نام برده شده در این است که heap ها فضاهایی پویا هستند که در هنگام اجرای برنامه ایجاد می شوند در حالی که satck ها فضاهایی ایستا و استاتیک هستند که در هر روالی از برنامه وجود دارند. این حملات که بیشتر به دلیل ضعف برنامه نویس و اشتباهات انسانی رخ می دهد با بررسی کدها پس از پیاده سازی، استفاده از کامپایلرهای مناسب و توابع امن قابل پیشگیری هستند و سبب محافظت از داده ها می شوند. برای مثال توابع strncat و strncpy جزو توابعی هستند که طول و حدود ظرفیت بافر را بررسی می کنند و به این ترتیب از حمله buffer overflow جلوگیری می کنند. گفتنی است علاوه بر توابع ذکرشده استفاده از توابعی مانند fgets نیز در ورودی ها و خروجی های برنامه می تواند در جلوگیری از حملات overflow موثر باشد. این نوع حملات را می توان براساس برخی ویژگی‌ها به حملات Dos و DDos نیز تا حدودی تشبیه کرد.

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

نظرات کاربران

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    لینک کوتاه :