حمله های مبتنی بر سواستفاده از تابع بازگشت از سیگنال ( به انگلیسی: Sigreturn - oriented programming ) یا به اختصار SROP، یک نوع روش نفوذ است که به مهاجم اجازه می دهد تا کد دلخواه خود را در شرایطی اجرا کند که سازوکارهای امنیتی مانند حافظهٔ غیرقابل اجرا و امضای کد در سیستم وجود داشته باشد. [ ۱] این روش برای اولین بار در سی وپنجمین کنفرانس IEEE Security and Privacy در سال ۲۰۱۴ مطرح شد که توانست برندهٔ عنوان بهترین مقالهٔ دانشجویی شود. [ ۲] پیش فرض ها و ایدهٔ کلی این روش مشابه روش ( ROP ) برنامه نویسی بازگشت - مبنا است: مهاجم کنترل پشته را با روش هایی مثل استفاده از آسیب پذیری «خطای سرریز حافظهٔ پشته» به دست می گیرد و با استفاده از پشته، بر جریان اجرای دستورهای برنامه تأثیر می گذارد که این کار توسط دنباله ای از دستورها که ابزارک نام دارند انجام می شود. این حمله به این صورت انجام می گیرد که مهاجم یک داده ساختار sigcontext جعلی[ ۳] در بالای پشته قرار می دهد و آدرس بازگشت تابع را به یک ابزارک تغییر می دهدکه این ابزارک، فراخوان سیستمی sigreturn[ ۴] را صدا می زند. [ ۵] معمولاً یک ابزارک برای موفقیت این حمله کفایت می کند ( برعکس ROP که معمولاً از زنجیره ای از ابزارک ها استفاده می کند ) . درصورتی که محل این ابزارک در حافظهٔ مجازی فرایند مورد نظر ثابت باشد این حمله بسیار ساده و مؤثر انجام می گیرد ( مثلاً زمانی که سازوکار تصادفی سازی فضای آدرس دهی حافظه غیرفعال باشد ) هم چنین این باعث می شود تا آماده سازی اولیهٔ بسیار ساده تر شود و نسبت به روش ROP قابل حمل تر باشد.
می توان SROP را یک ماشین غیرقابل پیشبینی درنظر گرفت زیرا اجازه می دهد کدهایی خارج از محدودهٔ تعیین شده برای برنامه، اجرا شوند. [ ۱]
SROP شباهت زیادی به روش ROP دارد و این شباهت از این جهت است که در این روش هم مهاجم از کدهای موجود در برنامه ( کدهای موجود در حافظهٔ برنامه ) استفادهٔ مجدد می کند تا برنامهٔ قربانی را وادار کند خارج از چارچوب تعیین شده عمل کند. برای این کار مهاجم باید داده های پشته را تغییر دهد که این کار معمولاً با استفاده از روش «سرریزحافظهٔ پشته» صورت می گیرد که هدف آن تغییر آدرس بازگشت موجود در پشته است.
اگر سازوکار «منع اجرای داده» یا همان DEP در سیستم فعال باشد مهاجم قادر نخواهد بود تا کدهای تزریقی موردنظر خود را مستقیماً در پشته بنویسد و با بازنویسی آدرس بازگشت، سیستم را وادار به اجرای کدها کند. با فعال بودن چنین سازوکاری، سیستم کدهایی که در صفحات حافظه با برچسب «غیرقابل اجرا» هستند را اجرا نمی کند؛ بنابراین مهاجم باید سعی کند تا با استفادهٔ مجدد از کدهایی که درحال حاضر در حافظهٔ برنامه، موجود هستند به هدف خود برسد.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفمی توان SROP را یک ماشین غیرقابل پیشبینی درنظر گرفت زیرا اجازه می دهد کدهایی خارج از محدودهٔ تعیین شده برای برنامه، اجرا شوند. [ ۱]
SROP شباهت زیادی به روش ROP دارد و این شباهت از این جهت است که در این روش هم مهاجم از کدهای موجود در برنامه ( کدهای موجود در حافظهٔ برنامه ) استفادهٔ مجدد می کند تا برنامهٔ قربانی را وادار کند خارج از چارچوب تعیین شده عمل کند. برای این کار مهاجم باید داده های پشته را تغییر دهد که این کار معمولاً با استفاده از روش «سرریزحافظهٔ پشته» صورت می گیرد که هدف آن تغییر آدرس بازگشت موجود در پشته است.
اگر سازوکار «منع اجرای داده» یا همان DEP در سیستم فعال باشد مهاجم قادر نخواهد بود تا کدهای تزریقی موردنظر خود را مستقیماً در پشته بنویسد و با بازنویسی آدرس بازگشت، سیستم را وادار به اجرای کدها کند. با فعال بودن چنین سازوکاری، سیستم کدهایی که در صفحات حافظه با برچسب «غیرقابل اجرا» هستند را اجرا نمی کند؛ بنابراین مهاجم باید سعی کند تا با استفادهٔ مجدد از کدهایی که درحال حاضر در حافظهٔ برنامه، موجود هستند به هدف خود برسد.