c – کامپایل کردن با پرچم های GPC retpoline

از نسخه 8 (بعدا به 7.3 ارسال شد)، GCC پشتیبانی Retpoline [0] را اضافه کرده است. در حالی که متوجه شدم که [citation needed] برای استفاده در پچ کردن کرنل برای Spectre (یعنی: [1][2]) در نظر گرفته شده است، که از برنامهنویسان معمولی از استفاده از این پرچم جلوگیری نمی کند.

بنابراین، آیا باید از پرچم های Retpoline ( -mindirect-branch ، -mfunction-return ، و مرتبط با آن؟

به عنوان مثال، من یک برنامه تولید رمز عبور رمزنگاری رمزنگاری شده را در C [3] نوشته ام. هنگامی که با استفاده از -mindirect-branch = thunk -mfunction-return = thunk کامپایل می شود، باینری حاصل از آن متفاوت است بدون استفاده از آن پرچم ها. آیا هیچ دلیلی برای انجام این کار وجود دارد یا هر مزیتی از منظر امنیتی؟

اجرای کد – پارامترهای کامپایلر برای جداسازی یک برنامه C ++

آیا مجموعه ای از پارامترهای کامپایلر وجود دارد که می تواند برای جلوگیری از دسترسی هر کدام از برنامه های C ++ به اکثر توابع سیستم، استفاده از آن را با دسترسی به خواندن / نوشتن به stdin / stdout، اما در غیر این صورت قادر به آسیب رساندن به سیستم باشد. 19659002] این به من اعتقاد دارد که برای سیستم هایی مانند یک سرور ارسال تکالیف یا سرور "tryit" آنلاین مفید است.