پس از چندين دهه كار و تلاش براي افزايش سرعت و بازده پردازندهها در اجراي فرامين، اكنون مهمترين و به روزترين ويژگي CPUها، توانايي در عدم اجراي برخي كدهاست.
آنچه ذكر شد توضيحي اجمالي از فناوري noexecute (يا NX) است كه در پردازندههاي Opteron، Athlon 64 و به تازگي در محصولات اينتل قرار داده شده و به نامهاي ديگري چون XD (يا executable disable) و DEP نيز معروف ميباشد.
در حالي كه لينوكس، سولاريس و اسپارك چندين سال است كه از اين فناوري پشتيباني ميكنند، مايكروسافت، DEP را به همراه XP SP2 در جولاي سال گذشته عرضه كرد.
NX به عبارتي ساده، از بخش سختافزاري پردازنده دستگاه براي خنثي كردن حملات ويروسها و تروجانها استفاده ميكند. فعاليتهاي انجام شده در زمينه فناوري محافظت از حافظه در XP SP2، اين فرآيند را با تقويت قدرت تشخيص پردازنده ميان محيطهاي داده و برنامهها ممكن ميسازد و بدين شكل از اجراي فرامين مربوط به memory جلوگيري ميكند.
اما در مورد برخي از برنامههاي قانوني مانند كامپايلرهاي جاوا كه همواره كدهاي بلادرنگ(real time) توليد كرده و بدين ترتيب فرامين صادر شده از محيطهاي اطلاعاتي را اجرا ميكنند، بايستي تجديد نظر شود و كماكان مهمترين راه سوءاستفاده از ساختارهاي x86 همان مشكل معروف سرريز بافر است؛ چند درخواست سنگين اوليه كه ناحيه ورودي برنامه را لبريز كرده و سپس اجراي كدهاي مخرب در اين ميان.
هنگامي كه سرريز بافر رخ ميدهد، حافظه جانبي همراه بافر تخريب شده و اطلاعات جديدي در آن نوشته ميشود. حال اگر اين فضا بخشي از پشته يك برنامه باشد، ميتواند مسير اجراي فرامين را تغيير داده و دستورات جديدي را مانند پاك شدن اطلاعات و يا دانلود كدهاي مخرب بيشتر صادر كند.
از آنجا كه بسياري از cpuها تفاوتي ميان اجازه خواندن اطلاعات و اجازه اجراي دستورات قائل نيستند، يك برنامه به دليل محدوديتهاي ساخت، هر كد ورودي را از هر فضاي حافظهاي اجرا ميكند. با اين وجود پردازندههاي AMD 64 از نشاني خاص(attribute) براي شناسايي نواحي non executable در حالتهاي 64 بيتي و 32 بيتيِ PAE استفاده ميكنند. (بيتِ NX در page table entry)
مود PAE قادر به شناسايي 4 گيگابايت حافظه (سقف حافظه ممكن در سيستمهاي 32 بيتي) بوده و امكانات اضافي موجود در آن براي صفحهبندي (paging) اطلاعات، NX را ممكن ميسازد. واضح است كه برخي از برنامههاي 32 بيتي بدين ترتيب دچار مشكل خواهند شد اما نصب XP SP2 اين ناسازگاري را با تغيير رفتار قديمي دسترسي مستقيم به حافظه (DMA) در HAL رفع ميسازد؛ SP2 با آگاهي از بيت NX، به هنگام اجراي يك كد از محيط data page پيغام خطايي صادر كرده(همان پنجره آشناي آبي در ويندوزهاي قديميتر) و فرآيند اجرا را مسدود ميسازد.
مايكروسافت پذيرفته است كه گزارش مكرر اين مشكلات و متوقف شدن دستگاه و به دنبال آن بررسي كلي سيستم، ظاهري ناهنجار دارد و البته سالهاست كه براي حذف آن ميكوشد اما عقيده دارد كه تكرار اين پروسهها به كنترلنشدن يك كد مخرب و اجراي آن ميارزد. MSBlaster براي مثال، در حضور NX نيز با وجود عدم توانايي در انتشار، باز هم قادر به ادامه حيات و اجراي حملات DoS ميباشد.
مهندسان نرمافزار ميتوانند به كمك جعبهابزار SP2 و به طور دلخواه، قابليت NX را براي برنامههاي 32 بيتي غيرفعال سازند و كاربران عادي نيز به وسيله يك control panel جديد(مانند ديوار آتش موجود در SP2) قادر به فعال و يا غيرفعال كردن NX براي كل سيستم و يا برنامههايي خاص(مانند كامپايلرهاي جاوا) خواهند بود.
NX و سازندگان پردازنده
همانطور كه گفته شد، پردازندههاي 64 بيتي Athlon و Opteron از بدو ورود به اين فناوري مجهز بودهاند اما اين به تنهايي كافي نيست؛ بيت مربوط به NX بدون نصب XP SP2 توسط پردازنده دستگاه شناخته نميشود. اينتل هم از آغاز توليد prescottها(اولين پردازندههاي 90 نانومتري P4) به كمك حافظه 2 مگابايتي لايه 2 و FSB سريعتر توانست اين فناوري را عرضه كند.
شركت Transmeta هم پشتيباني از NX را به تراشههاي Efficeon افزود تا توليدكننده اولين تراشههاي كممصرف دنيا و سازگار با اين قابليت ويندوز XP باشد. براي دستيابي به اين هدف نيازي به تغييرات سختافزاري پردازندههاي Efficeon نيست؛ با ايجاد تغيير در لايه نرمافزاري Code Morphing ميتوان دستورات سيستمهاي x86 را بلادرنگ به زبان VLIW ترجمه كرد.
روشن است كه NX توانايي متوقف ساختن تمامي ويروسها و تروجانها را ندارد اما تا حدودي از انتشار آنها و همچنين به تله افتادن مرورگرها و كاربران نامههاي الكترونيكي جلوگيري خواهد كرد. درست است كه مايكروسافت و سازندگان CPU، مسئولين اصلي بروز اشكالات امنيتي بسيار در ويندوز ميباشند ولي به هر ترتيب در فكر انجام فعاليتهايي براي جبران خسارات وارده هستند.