ان‌اکس بیت

از ویکی‌پدیا، دانشنامهٔ آزاد

ان‌اکس بیت (به انگلیسی: NX bit) (no-execute) یک فناوری است که در واحد پردازش مرکزی (CPU) برای مجزاسازی مناطق حافظه برای ذخیره سازی دستورالعمل های پردازنده (کد) یا برای ذخیره سازی داده ها استفاده می شود، ویژگی که معمولاً فقط در پردازنده های معماری هاروارد یافت می شود. با این حال، ان‌اکس بیت به دلایل امنیتی به شکل فزاینده ای در پردازنده های معماری von Neumann مرسوم استفاده می شود.

یک سیستم عامل با پشتیبانی از ان‌اکس بیت ممکن است قسمت های خاصی از حافظه را به عنوان غیر قابل اجرا نشان گذاری کند. سپس پردازنده از اجرای هر کدی که در این قسمت های حافظه وجود دارد خودداری می کند. تکنیک کلی استفاده شده، که به عنوان حفاظت از فضای اجرایی شناخته می‌شود، همچنین Write XOR Execute نیز نامیده می‌شود، که برای جلوگیری از غلبه انواع خاصی از نرم‌افزارهای مخرب به روش وارد کردن کد آن‌ها در فضای ذخیره‌سازی اطلاعات برنامه های دیگر و اجرای کد خود از داخل این بخش مورد استفاده قرار میگیرد. یک دسته از چنین حملاتی به عنوان حمله buffer overflow(سرریز بافر) شناخته می شود.

شرکت اینتل این ویژگی را به عنوان اکس‌دی بیت (به انگلیسی: XD bit) (execute disable) به بازار عرضه می کند. شرکت Advanced Micro Devices (AMD) از اصطلاح بازاریابی NX bit استفاده می کند . معماری ARM به ویژگی ای اشاره دارد که در ARMv6 به عنوان XN (اجرا هرگز) معرفی شده است، . [۱] خود اصطلاح NX bit گاهی اوقات برای توصیف فناوری های مشابه در سایر پردازنده ها استفاده می شود.

پشتیبانی معماری[ویرایش]

x86[ویرایش]

پردازنده‌های x86 ، از 80286 ، دارای قابلیت مشابهی هستند که در سطح بخش(segment) پیاده‌سازی شده‌اند. با این حال، تقریباً تمام سیستم عامل‌های 80386 و پردازنده‌های x86 نسل های بعدی ، مدل حافظه تخت را پیاده‌سازی می‌کنند، بنابراین نمی‌توانند از این قابلیت استفاده کنند. هیچ پرچم «قابل اجرا» در ورودی جدول برنامه (صفحه جدول توصیف) آن پردازنده ها وجود نداشت، تا زمانی که برای در دسترس قرار دادن این قابلیت برای سیستم عامل های که از مدل flat memory استفاده میکنند، AMD یک بیت «no-execute» یا NX را به ورودی جدول برنامه در معماری AMD64 خود اضافه کرد،تا مکانیزمی را ارائه دهد که می تواند اجرا را در هر صفحه به جای کل بخش (segment) کنترل کند.

اینتل در سال 2001 ویژگی مشابهی را در پردازنده Itanium ( Merced ) خود با معماری IA-64 اضافه کرد، اما آن را به خانواده‌های پردازنده‌های محبوب‌تر x86 ( Pentium ، Celeron ، Xeon و غیره) ارائه نکرد. ان‌اکس بیت برای اولین بار در معماری x86 توسط AMD برای استفاده در خط پردازنده های AMD64 ، مانند Athlon 64 و Opteron ، پیاده سازی شد.

پس از تصمیم AMD برای گنجاندن این قابلیت در مجموعه دستورالعمل های AMD64، اینتل ویژگی مشابه XD بیت را در پردازنده های x86 با پردازنده های Pentium 4 بر اساس نسخه های بعدی هسته Prescott اجرا کرد. [۲] ان‌اکس بیت به طور خاص به بیت شماره 63 (مهم ترین بیت) از یک ورودی 64 بیتی در جدول صفحه اشاره دارد . اگر این بیت 0 باشد، کد را می توان از آن صفحه اجرا کرد. اگر 1 باشد، کد را نمی توان از آن صفحه اجرا کرد و هر چیزی که در آنجا ساکن است به عنوان داده فرض می شود. این تنها در حالت طولانی (حالت 64 بیتی) یا تعمیم سبک قدیمی آدرس حقیقی (legacy Physical Address Extension) برای ساختار جدول صفحه موجود است، اما در معماری x86 اصلی 32 بیتی با ساختار جدول صفحه وجود ندارد ،زیرا بیت 63ام ورودی های جدول صفحه در این ساختار برای فعال و غیر فعال کردن اجرا مورد استفاده قرار میگیرد

Windows XP SP2 و نسخه های بعدی از حفاظت از فضای آدرس اجرایی (به انگلیسی:Data Execution Prevention ) پشتیبانی می کند.

ARM[ویرایش]

در ARMv6 یک ساختار ورودی جدول صفحه جدید معرفی شد; این شامل یک بیت "execute never" هست.[۱] برای ARMv8-Aو بلوک VMSAv8-64 و توصیفگر صفحه VMSAv8-64 و بلوک توصیفگر طولانی VMSAv8-32 و توصیفگر صفحه VMSAv8-32 برای بیت تفسیر مرحله یک "execute never" برای هر دو حالت ممتاز و غیر ممتاز را دارند.ولی بلوک و توصیفگرهای صفحه برای یک بیت تفسیر مرحله دو "execute never" دارند (دو بیت به دلیل قابلیت ARMv8.2-TTS2UXN); توصیف‌کننده‌های جدول ترجمه توصیفگر کوتاه VMSAv8-32، در سطح ۱ دارای بیت‌های "اجرا هرگز" برای هر دو حالت ممتاز و غیر ممتاز هستند و در سطح ۲ دارای یک بیت "اجرا هرگز" تکی هستند.[۳]

آلفا[ویرایش]

از نسخه چهارم کتابچه راهنمای معماری آلفا، DEC (HP کنونی) Alpha دارای بیت خطای اجرا در ورودی های جدول صفحه با OpenVMS ، Tru64 UNIX ، و (Alpha Linux PALcode) است.

SPARC[ویرایش]

SPARC Reference MMU برای Sun SPARC نسخه 8 دارای مجوز فقط خواندن، خواندن/نوشتن، خواندن/اجرا، و خواندن/نوشتن/اجرا در ورودی‌های جدول صفحه است، [۴] اگرچه همه پردازنده‌های SPARC دارای MMU مرجع SPARC نیستند.

SPARC نسخه 9 MMU ممکن است ترکیبی از مجوزهای خواندن/نوشتن/اجرا ارائه کند، ولی لزوست. [۵] یک ورودی جدول ترجمه در بافر ذخیره‌سازی ترجمه در (Oracle SPARC Architecture 2011, Draft D1.0.0) دارای بیت‌های اجرایی و قابل نوشتن جداگانه است. [۶]

PowerPC/Power ISA[ویرایش]

ورودی های جدول صفحه برای جدول صفحه هش شده IBM PowerPC دارای یک بیت منع اجرای صفحه هستند. ورودی‌های جدول صفحه برای جدول صفحه درخت مبنا در Power ISA دارای بیت‌های مجوز جداگانه هستند که دسترسی خواندن/نوشتن و اجرا را می‌دهند. [۷]

PA-RISC[ویرایش]

ورودی‌های بافر نگاهدار ترجمه (TLB) و ورودی‌های جدول صفحه در PA-RISC 1.1 و PA-RISC 2.0 از صفحات فقط خواندن، خواندن/نوشتن، خواندن/اجرا و خواندن/نوشتن/اجرا پشتیبانی می‌کنند. [۸] [۹]

ایتانیوم[ویرایش]

ورودی‌های TLB در Itanium از صفحات فقط خواندن، خواندن/نوشتن، خواندن/اجرا و خواندن/نوشتن/اجرا پشتیبانی می‌کنند. [۱۰]

z/Architecture[ویرایش]

از نسخه دوازدهم اصول عملیات z/Architecture، پردازنده‌های z/Architecture ممکن است از تسهیلات حفاظت از دستور عمل های اجرایی پشتیبانی کنند، که یک بیت را در ورودی‌های جدول صفحه اضافه می‌کند که کنترل می‌کند آیا دستورالعمل‌ها از یک منطقه، بخش یا صفحه می‌توانند قابل اجرا باشند. اجرا شود.

بیشتر ببینید[ویرایش]

منابع[ویرایش]

  1. ۱٫۰ ۱٫۱ "ARM Architecture Reference Manual" (PDF). ARM Limited. pp. B4-8,B4-27. Archived from the original (PDF) on 2009-02-06. APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]
  2. "Data Execution Prevention" (PDF). Hewlett Packard. 2005. Retrieved 2014-03-23.
  3. "ARM Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile". ARM Limited. pp. D4-1779,D4-1780,D4-1781,G4-4042,G4-4043,G4-4044,G4-4054,G4-4055.
  4. "The SPARC Architectural Manual, Version 8". SPARC International. p. 244.
  5. "The SPARC Architecture Manual, Version 9" (PDF). SPARC International. 1994. F.3.2 Attributes the MMU Associates with Each Mapping, p. 284. ISBN 0-13-825001-4. Archived from the original (PDF) on 2012-01-18.
  6. "Oracle SPARC Architecture 2011, Draft D1.0.0" (PDF). Oracle Corporation. January 12, 2016. p. 452.
  7. "Power ISA Version 3.0". IBM. November 30, 2015. p. 1003.
  8. "PA-RISC 1.1 Architecture and Instruction Set Reference Manual, Third Edition" (PDF). Hewlett-Packard. February 1994. p. 3-13. Archived from the original (PDF) on June 7, 2011.
  9. Gerry Kane. "PA-RISC 2.0 Architecture, Chapter 3: Addressing and Access Control" (PDF). Hewlett-Packard. p. 3-14.
  10. "Intel Itanium Architecture Software Developer's Manual, Volume 2: System Architecture, Revision 2.0". Intel. December 2001. p. 2:46.

لینک های خارجی[ویرایش]