سرریز بافر: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ←جلوگیری |
جز ویکیسازی رباتیک(۶.۷) >برنامه نویسی، برنامه نویس، لیست پیوندی، سیستم عامل، سرریز پشته، آسیب پذیری، [[س... |
||
خط ۱:
{{ویکیسازی|دلیل=ظاهر و محتوی غیر دانشنامهای}}
{{بدون منبع}}
در امنیت کامپیوتر و برنامه نویسی، سرریز بافر، و یا تاخت و تاز کردن بافر، یک استثنا است که در آن برنامه، هنگامی
سرریزهای بافر توسط ورودی طراحی شدهاند که برای اجرای کد، و یا راه عمل برنامه را تغییر میدهند، باعث شدهاست. این امر ممکن است در رفتار نامنظم، از جمله خطاهای دسترسی به حافظه، نتایج نادرست، تصادف، یا نقض امنیت سیستم منجر شود. بنابراین، آنها اساس بسیاری از آسیب پذیریهای
زبان [[برنامه نویسی]]
'''توصیف فنی'''
سرریز بافر هنگامی رخ میدهد که دادهها نوشته شده به یک بافر، با توجه به مرزهای کافی بررسی، فساد مقادیر داده در حافظه آدرس مجاور به بافر اختصاص دادهاست. شایع ترین این زمانی اتفاق میافتد که کپی کردن رشته از کاراکترها از یک بافر به دیگری است.
== تشریح ==
امروزه بیشتر سیستمعاملهای مدرن از یک [[پشته]] برای ارسال آرگومانها به توابع و همچنین ذخیره کردن
== جلوگیری ==
خط ۷۰:
== مثال پایهای ==
در مثال زیر، یک برنامه تعریف شده دو داده که مجاور در حافظه: ۸-بایت بافر رشتهای، A، و یک [[عدد صحیح]] دو بایتی، B. در ابتدا،A دارای هیچ چیزی صفر بایت و B شامل شماره ۱۹۷۹. طول هر کاراکتر یک بایت است.
{| class="wikitable" style="width:30em; text-align:center;"
! style="white-space:nowrap;" | variable name
خط ۱۰۰:
|}
با وجودی که [[برنامه نویس]] قصد ندارد برای تغییر B در مقدار B در حال حاضر تعداد شکل گرفته از بخشی از رشته کاراکتر جایگزین میشود. در این مثال، بر روی یک سیستم big-endian است که با استفاده از ASCII، "E" به دنبال یک بایت صفر تبدیل شدن به تعداد
اگر B تنها متغیر قلم دوم از اقلام دادههای تعریف شده توسط برنامه بود، نوشتن یک رشته طولانی که رفت و گذشته از B میتواند باعث خطا مانند گسل تقسیم بندی شود، فسخ این روند بود.
== بهره برداری ==
تکنیک بهره برداری از [[آسیب پذیری]] سرریز بافر با توجه به نوع معماری، [[سیستم عامل]] و منطقه
== پشته مبتنی بر بهره برداری ==
خط ۱۱۳:
با جای نوشتن یک متغیر محلی است که در نزدیکی بافر در حافظه در پشته به تغییر رفتار از برنامهای که ممکن است مهاجم بهره مند شوند
با جای نوشتن آدرس برگشت در قاب پشته. پس از بازده عملکرد، اجرا خواهد شد در آدرس برگشت، به عنوان مهاجم،
با جای نوشتن تابع یک اشاره گر، و یا برنامه کنترل استثنا است که پس از آن اجرا شدهاست.
با استفاده از یک روش به نام "trampolining"، در صورتی که آدرس دادههای کاربر را تامین ناشناختهاست، اما محل در ثبت نام ذخیره میشود، و سپس آدرس برگشت، میتواند با آدرس شناسنده رونویسی است که باعث میشود که اجرای [[حکم اعدام]] به پرش تامین شده توسط کاربر دادهاست.
اگر محل در ثبت نام R ذخیره میشود، سپس پرش محل حاوی شناسنده برای مراجعه R، تماس R و یا دستور العمل مشابه، اعدام از دادههای کاربر عرضه میشود. محل opcodes مناسب، و یا بایت در حافظه، میتواند در DLLها و یا اجرایی خود را در بر داشت.
خط ۱۲۵:
== هیپ، مبتنی بر بهره برداری ==
سرریز بافر در منطقه پشته داده به عنوان یک [[سرریز پشته]] اشاره میشود و بهره برداری را به شیوهای متفاوت از سرریزهای مبتنی بر پشته انجام میدهد. حافظه پشته به صورت پویا توسط برنامه در زمان اجرا اختصاص داده شده و به طور معمول شامل دادههای برنامه میباشد.
استثمار با فساد این دادهها در روشهای خاص باعث میشود برنامه را بازنویسی سازههای داخلی مانند [[اشاره گر]] [[لیست پیوندی]] انجام میشود. روش سرریز پشته استاندارد، رونویسی پیوندی تخصیص حافظههای پویا (مانند دادههای meta malloc) و با استفاده از ارز اشاره گر منجر به بازنویسی برنامه اشاره گر تابع است.
== موانع استثمار ==
خط ۱۳۳:
دستکاری بافر رخ میدهد که قبل از آن خوانده میشود و یا اعدام شدهاست، ممکن است منجر به شکست تلاش بهره برداری شود. این دستکاری میتواند تهدید از بهره برداری، کاهش، اما ممکن است آن را غیر ممکن سازد. دستکاری میتواند تبدیل به بالا و یا پایین تر مورد، حذف metacharacters و فیلترینگ از رشتههای غیر الفبایی باشد.
با این حال، تکنیکها یی برای دور زدن این فیلتر و دستکاری وجود داشته باشد ؛کد عدد و الفبایی، کدهای چند شکلی، خود را تغییر کد و بازگشت به حملات-libc. از روش مشابه میتواند مورد استفاده قرار گیرد برای جلوگیری از شناسایی توسط سیستمهای تشخیص نفوذ است. در برخی موارد، از جمله که در آن کد را به یونیکد تبدیل شده،
== نکات بهره برداری ==
خط ۱۴۴:
راه حل این مشکل، پیدا کردن آدرس دقیق از بافر به طور موثر افزایش اندازه از منطقه هدف است.
برای انجام این بخش بسیار بزرگتر از پشتهها را با دستور العمل دستگاه بدون عملیات خراب شدهاست. در پایان از دادههای مهاجم تامین، پس از دستورالعملهای بدون عمل، دستور العمل به انجام پرش نسبت به بافر که در آن
از آنجا که از محبوبیت از این روش، بسیاری از فروشندگان سیستمهای پیشگیری از نفوذ این الگوی دستورالعمل دستگاه بدون عملیات در تلاش برای شناسایی شل کد در استفاده از جستجو میباشد.
این مهم است توجه داشته باشید که NOP-سورتمه
در نتیجه آن سورتمه روش معمول برای بهره برداری نویسندگان بدون عملیات با دستورالعمل که هیچ اثر واقعی در مورد اعدام شل کد نوشتن تبدیل شدهاست.
خط ۱۵۴:
{{پانویس}}
[[رده:اشکالهای برنامهنویسی]]
[[رده:حافظه رایانه]]
[[رده:عملکرد امنیتی رایانه]]
[[رده:
|