buffer overflow attacks
توسط Fateme Zahra
buffer overflow یک خطا یا آسیب پذیری کدگذاری نرم افزاری است که می تواند توسط هکرها برای دسترسی غیرمجاز به سیستم های شرکت مورد سوء استفاده قرار گیرد. این یکی از شناختهشدهترین آسیبپذیریهای امنیتی نرمافزار است که هنوز نسبتاً رایج است. این تا حدی به این دلیل است که سرریز بافر می تواند به روش های مختلفی رخ دهد و تکنیک های مورد استفاده برای جلوگیری از آنها اغلب مستعد خطا هستند.
خطای نرم افزار بر روی بافرها تمرکز می کند، که بخش های متوالی حافظه محاسباتی هستند که داده ها را به طور موقت در حین انتقال بین مکان ها نگه می دارند. سرریز بافر زمانی اتفاق می افتد که مقدار داده در بافر از ظرفیت ذخیره سازی آن بیشتر شود. این دادههای اضافی به مکانهای حافظه مجاور سرریز میشوند و دادههای آن مکانها را خراب یا بازنویسی میکنند.
حمله سرریز بافر چیست؟
buffer overflow attacks زمانی اتفاق میافتد که یک مهاجم خطای کدگذاری را دستکاری میکند تا اقدامات مخرب انجام دهد و سیستم آسیبدیده را به خطر بیندازد. مهاجم مسیر اجرای برنامه را تغییر میدهد و عناصر حافظه آن را بازنویسی میکند، که مسیر اجرای برنامه را برای آسیب رساندن به فایلهای موجود یا افشای دادهها اصلاح میکند.
حمله سرریز بافر معمولاً شامل نقض زبان های برنامه نویسی و بازنویسی محدوده بافرهایی است که روی آنها وجود دارد. بیشتر سرریزهای بافر به دلیل ترکیبی از دستکاری حافظه و فرضیات اشتباه در مورد ترکیب یا اندازه داده ها ایجاد می شود.
یک آسیبپذیری سرریز بافر معمولاً زمانی رخ میدهد که کد:
برای کنترل رفتار خود به داده های خارجی متکی است
وابسته به ویژگی های داده ای است که فراتر از محدوده فوری آن اعمال می شوند
آنقدر پیچیده است که برنامه نویسان قادر به پیش بینی دقیق رفتار آن نیستند
تکنیکهای بهرهبرداری سرریز بافر که یک هکر استفاده میکند به معماری و سیستم عامل مورد استفاده توسط هدف آنها بستگی دارد. با این حال، دادههای اضافی که برای یک برنامه صادر میکنند احتمالاً حاوی کد مخربی است که مهاجم را قادر میسازد تا اقدامات اضافی را آغاز کند و دستورالعملهای جدیدی را به برنامه ارسال کند.
مهاجمان از یک سرریز بافر برای خراب کردن پشته اجرای برنامه وب، اجرای کد دلخواه و تسلط بر ماشین استفاده می کنند. نقص در سرریزهای بافر می تواند هم در سرورهای برنامه و هم در سرورهای وب وجود داشته باشد، به ویژه برنامه های کاربردی وب که از کتابخانه هایی مانند کتابخانه های گرافیکی استفاده می کنند. سرریز بافر همچنین می تواند در کدهای برنامه وب سفارشی وجود داشته باشد. این احتمال بیشتر است زیرا تیمهای امنیتی کمتر مورد بررسی قرار میگیرند، اما احتمال کمتری دارد که توسط هکرها کشف شوند و بهرهبرداری از آنها دشوارتر است.
عواقب buffer overflow
پیامدهای رایج حمله سرریز بافر شامل موارد زیر است:
خرابی سیستم: حمله سرریز بافر معمولاً منجر به از کار افتادن سیستم می شود. همچنین ممکن است منجر به عدم دسترسی و قرار گرفتن برنامه ها در یک حلقه بی نهایت شود.
از دست دادن کنترل دسترسی: حمله سرریز بافر اغلب شامل استفاده از کد دلخواه است که اغلب خارج از محدوده سیاست های امنیتی برنامه ها است.
مسائل امنیتی بیشتر: هنگامی که یک حمله سرریز بافر منجر به اجرای کد دلخواه می شود، مهاجم ممکن است از آن برای سوء استفاده از آسیب پذیری های دیگر و براندازی سایر سرویس های امنیتی استفاده کند.
انواع buffer overflow attacks
انواع مختلفی از حملات سرریز بافر وجود دارد که مهاجمان از آنها برای سوء استفاده از سیستم های سازمان ها استفاده می کنند. رایج ترین آنها عبارتند از:
سرریزهای بافر مبتنی بر پشته: این رایج ترین شکل حمله سرریز بافر است. رویکرد مبتنی بر پشته زمانی اتفاق میافتد که مهاجم دادههای حاوی کد مخرب را به برنامهای ارسال میکند که دادهها را در یک بافر پشته ذخیره میکند. این دادهها را روی پشته بازنویسی میکند، از جمله نشانگر برگشت آن، که کنترل انتقالها را به مهاجم میدهد.
سرریزهای بافر مبتنی بر هیپ: انجام یک حمله مبتنی بر پشته دشوارتر از رویکرد مبتنی بر پشته است. این شامل حمله ای است که فضای حافظه برنامه را فراتر از حافظه ای که برای عملیات زمان اجرا استفاده می کند، پر می کند.
حمله رشتهای قالببندی: بهرهبرداری رشته قالب زمانی صورت میگیرد که یک برنامه دادههای ورودی را به عنوان یک فرمان پردازش میکند یا دادههای ورودی را به طور مؤثر تأیید نمیکند. این مهاجم را قادر میسازد تا کد را اجرا کند، دادهها را در پشته بخواند یا باعث ایجاد خطاهای تقسیمبندی در برنامه شود. این می تواند اقدامات جدیدی را آغاز کند که امنیت و ثبات سیستم را تهدید می کند.
چگونه از سرریز بافر جلوگیری کنیم؟
توسعه دهندگان برنامه می توانند با ایجاد تدابیر امنیتی در کد توسعه خود، استفاده از زبان های برنامه نویسی که شامل حفاظت داخلی است و آزمایش منظم کد برای شناسایی و رفع خطاها، از سرریز بافر جلوگیری کنند.
یکی از رایجترین روشها برای جلوگیری از سرریز بافر، اجتناب از توابع استاندارد کتابخانهای است که کرانبندی نشدهاند، که شامل gets، scanf و strcpy میشود. یکی دیگر از روشهای رایج، جلوگیری از بیش از حد بافر با استفاده از بررسی مرزها است که در زمان اجرا اجرا میشود. این به طور خودکار بررسی می کند که داده های نوشته شده در یک بافر در محدوده های مناسب قرار دارند.
سیستمعاملهای مدرن در حال حاضر از حفاظت در زمان اجرا استفاده میکنند که امنیت بیشتری را در برابر سرریز بافر ممکن میسازد.
پست های توصیه شده
کلان داده
14 مهر, 1402
تحول دیجیتال
14 مهر, 1402
تجزیه و تحلیل داده ها
14 مهر, 1402