W^X
W^X یا Write XOR Execute که به صورت دبلیو اکس-اور اکس خوانده میشود، یک ویژگی امنیتی در سیستمعامل اپنبیاسدی است. W^X یک سیاست حفاظت از حافظه است که به موجب آن هر صفحه در فضای آدرس یک فرایند یا نوشتنی است یا اجرا کردنی، اما نمیتواند به صورت همزمان هم قابل نوشتن و هم قابل اجرا کردن باشد. نام این قابلیت از عملگر بولی XOR آمدهاست که خروجی آن وقتی در حالت «درستی» قرار میگیرد که دو عملوند آن مکمل یک دیگر باشند. W^X این ویژگی را از برنامهها دریغ نمیکند و برنامهها در صورت درخواست دادن میتوانند بر روی صفحههای مورد نظر خود هم بنویسند و هم اطلاعات آن را اجرا کنند. این ویژگی باعث کاهش یافتن حملات سرریز بافر میشود. برای مثال این ویژگی با تضمین اینکه کدهای موجود در پشته قابل اجرا نیست، باعث میشود کدهای دلخواهی که توسط مهاجم به پشته تزریق شده، قابلی اجرا نباشند و در عوض برنامه به اجرای خود خاتمه دهد. W^X اولین بار در نسخه ۳٫۳ اپنبیاسدی ظاهر شد. قابلیتهای مشابهی هم در دیگر سیستمعاملها وجود دارد. مانند وصلههای PaX و سپر اجرا برای لینوکس. با این حال اوپنبیاسدی از معدود سیستمعاملهایی است که از این تکنولوژی در معماریهایی نظیر i386 که فاقد بیت NX هستند پشتیبانی میکند.
این تکنیک در پردازندههایی که اجازه میدهند صفحهها دارای بیتهای حفاظتی باشند، نسبتاً ساده پیادهسازی میشود، همانند پردازندههای اسپارک و SPARC64 شرکت سان مایکروسیستمز، پردازنده AMD64 شرکت AMD و پردازندههای دیگر. برخی از پردازندههای اولیه Intel 64 بیت NX که مورد نیاز W^X است را نداشتند، اما در تراشههای جدیدتر این بیت اضافه شد. در پردازندههایی که محدودیتهای بیشتری دارند، همانند Intel i386، تکنیک W^X از حد سگمنت کد برنامه به عنوان «خط قرمز» استفاده میکند، نقطهای که در فضای آدرس بالاتر از آن، اجرا شدن کدها مجاز نیست و دادهها (که نیاز به اجرا شدن ندارند) در آنجا قرار داده میشوند، اما در فضای آدرس پایینتر از آن نقطه، اجرا شدن کدها مجاز است و صفحات نیازمند اجرا در آنجا قرار داده میشوند. در همه پلتفرمها، اعمال تغییراتی در برنامه لینکر برای جداسازی کد و دادهها نیاز است.
جستارهای وابسته
منابع
مشارکتکنندگان ویکیپدیا. «W^X». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۲۰ ژانویه ۲۰۱۴.