Monday, September 17, 2012

Intel SMEP overview and partial bypass on Windows 8

Author: Artem Shishkin

English whitepaper (PDF): here
Russian whitepaper (PDF): here

1.    Introduction

        With a new generation of Intel processors based on the Ivy Bridge architecture a new security feature has been introduced. It is called SMEP which stands for “Supervisor Mode Execution Prevention”. Basically it prevents execution of a code located on a user-mode page at a CPL = 0. From an attacker’s point of view this feature significantly complicates an exploitation of kernel-mode vulnerabilities because there’s just no place for a shellcode to be stored. Usually while exploiting some kernel-mode vulnerability an attacker would allocate a special user-mode buffer with a shellcode and then trigger vulnerability gaining control of the execution flow and overriding it to execute prepared buffer contents.
        So if an attacker is unable to execute his shellcode, the whole attack is meaningless. Of course, there are some other techniques like return-oriented programming available to exploit vulnerabilities with effective payload. But there are also certain cases when the execution environment allows bypassing the security features when it is not properly configured. Let’s take a closer look to this technology and its software support by Windows 8 operating system which introduces SMEP support.

2.    Hardware support of SMEP

        This section includes an overview of SMEP hardware support.
        SMEP is a part of a page-level protection mechanism. In fact it uses the already existing flag of a page-table entry - the U/S flag (User/Supervisor flag, bit 2). This flag indicates whether a page is a user-mode page, or a kernel-mode. The page’s owner flag defines if this page can be accessed, that is, if a page belongs to the OS kernel which is executed in a supervisor mode, it can’t be accessed from a user-mode application.
        SMEP is enabled or disabled via CR4 control register (bit 20). It slightly modifies the influence of the U/S flag. Whenever the supervisor attempts to execute a code located on a page with the U value of this flag, indicating that this is a user-mode page, a page fault is generated by the hardware due to the violation of an access right (the access rights are described in Volume 3, chapter 4.6 [1]).
        As you can see, it doesn’t generate #GP but #PF instead, so the software has to process SMEP mechanism violation in a page-fault handler. We’ll use this point later when analyzing software support of this mechanism.

3.    Software support of SMEP

        SMEP support can be detected via the “cpuid” instruction. As stated in [1] the result of a “cpuid” level 7 (sublevel 0) query indicates whether the processor supports SMEP feature – the 7th bit of the EBX register has to be tested for that.

        The x64 version of Windows 8 checks SMEP feature presence during the initialization of boot structures, filling in the “KeFeatureBits” variable:

KiSystemStartup() → KiInitializeBootStructures() → KiSetFeatureBits()

The same is done on x86 version of Windows 8:

KiSystemStartup() → KiInitializeKernel() → KiGetFeatureBits()

The variable “KeFeatureBits” is then used in handling a page fault.

        If SMEP is supported on the current processor, it is enabled. On the x86 version it is enabled also during the startup, at phase 1 in the KiInitMachineDependent() function, and later it is initialized per processor core issuing an IPI which eventually calls KiConfigureDynamicProcessor() function. The same happens on the x64 OS version except of the fact that there is no KiInitMachineDependent() function.

        So, we have SMEP enabled and “KeFeatureBits” initialized at system startup. The other part of software feature support is a code of the page fault handler. A new shim function has been added in Windows 8 – MI_CHECK_KERNEL_NOEXECUTE_FAULT(). The access fault due to SMEP or NX violation is performed inside it. The result of SMEP or NX violations is a bugcheck and a blue screen of death with a code “ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY”:

KiTrap0E()/KiPageFault() → MmAccessFault() → … →

The previously mentioned function is implemented in Windows 8 only.

4.    The way to bypass SMEP on Windows and its mitigation

        It is natural to conclude that if you can’t store your shellcode in the user-mode, you have to find a way to store it somewhere in the kernel space. The most obvious solution is using windows objects such as WinAPI (Events, Timers, Sections etc) or GDI (Brushes, DCs etc). They are accessed indirectly from the user-mode via WinAPI that uses system calls. The point is that the object body is kept in the kernel and somehow some object fields can be modified from the user-mode, so an attacker can transfer the needed shellcode bytes from the user-mode memory to the kernel-mode.

        It is also obvious that an attacker needs to know where the used object’s body is located in the kernel. For that, certain information disclosure is needed. As we remember a user-mode application is unable to read kernel-mode memory. Certain source of information about the kernel space is available in Windows [2].

        So it is theoretically possible to bypass SMEP on Windows due to the kernel space information disclosure. But SMEP is backed up by the fact that kernel pools where the objects are kept are now protected with NX flag (not executable) in Windows 8.

        A number of WinAPI and GDI objects have been tested for being suitable to serve as a shellcode delivery tool. WinAPI objects are stored in the paged or the non-paged pool. GDI objects are stored in the paged session pool. All of them happen to be non-executable now. Moreover, according to the results of scanning page tables, there is a miserable number of pages used from executable pools. All data buffers are now non-executable. Most of the executable (f.e. driver images) pages are not writable.

4.1.     The flaw

        As mentioned above, all of the objects in Windows 8 are now kept in non-executable pools. It is true for x64 version of Windows 8, and partially true for x86 version of Windows 8. The flaw is the paged session pool. It is marked as executable on the x86 version of Windows 8. So a suitable GDI object can be used to store the shellcode in a kernel memory.

        The most convenient object for this purpose is a GDI palette object. It is created with CreatePalette() fuction and a supplied LOGPALETTE structure. This structure contains an array of PALETTEENTRY structures that define the color and usage of each entry in the logical palette [5]. The point is that there is no parameter validation for this palette unlike the other GDI functions that create various objects. An attacker can store any colors he wants in his palette. So he can also store any shellcode bytes there. The kernel address of palette object can be revealed through the shared GDI handle table. The contents of the palette are stored within some offset (0x54 in our case). It is not nessesary to know this offset for sure because the shellcode can be stored somewhere in the middle of spreaded NOP instructions.
A schematic view of SMEP bypass is presented on Figure 1.

Figure 1. Schema of SMEP bypass in Windows 8 x86

A palette object provides enough space to store a big shellcode. But in fact all an attacker needs is to disable SMEP. It can be easily done by reseting 20th bit of CR4 control register and then he’ll be able to execute a shellcode stored in a user-mode memory without a size limit.

        Of course, there are some limitations when using paged session pool. Firstly, it is paged, so we need to consider IRQL when exploiting a certain kernel-mode vulnerability. Secondly, the session pool is mapped per user session, so we also have to consider the current session when exploiting kernel-mode vulnerability. And thirdly, in a multiprocessor environment control registers are duplicated per core, so an attacker has to use thread affinity to disable SMEP on a certain processor core.

4.2.     Other SMEP bypassing attack vectors

        As mentioned before, return-oriented programming can be succesfully used to bypass SMEP security feature due to the fact that this way doesn’t neccesarily have to store a custom shellcode, it uses pieces of a code that already exists somewhere in the kernel memory.

(Update) Full Details: Bypassing Intel SMEP on Windows 8 x64 Using Return-oriented Programming

        There is also an opportunity of using custom OEM drivers which are not aware of using NX-compatible kernel pools.

5.    Conclusion

        In this paper we have reviewed the functioning of SMEP and its software support in Windows 8. We also have shown how it can be bypassed in certain cases because of a Windows kernel address space information disclosure and partial applying of security features. Still, the way SMEP is implemented in the x64 version of Windows 8 happens to be reliable and can be successfully used to prevent different attacks exploiting kernelmode vulnerabilities.

6.    Future work

        The future work is related to inspecting custom driver modules that still use executable pools and the ways of an effective kernel information disclosure that can be used for exploiting such drivers. It is considered now as the best direction of researching SMEP bypass methods.


[1] Intel: Intel® 64 and IA-32 Architectures Developer's Manual: Combined Volumes. Intel Corporation, 2012.
[2] Mateusz “j00ru" Jurczyk: Windows Security Hardening Through Kernel Address Protection.
[3] Mateusz ‘j00ru’ Jurczyk, Gynvael Coldwind: SMEP: What is it, and how to beat it on Windows.
[4] Ken Johnson, Matt Miller: Exploit Mitigation Improvements in Windows 8. Slides, Black Hat USA 2012.
[6] Feng Yuan: Windows Graphics Programming Win32 GDI and DirectDraw®. Prentice Hall PTR, 2000.
[7] Mark Russinovich, David A. Solomon, Alex Ionescu: Windows® Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition. Microsoft Press, 2009.


  1. Чем вам user-space не мил?:)) Все там там по прежнему прелестно и сердцу мило

  2. hi dear Shishkin,
    thank you for paper,
    but english whitepaper link does not work 'File not found error'

  3. I have read your blog and i got a very useful and knowledgeable information from your blog.its really a very nice article.You have done a great job . If anyone want to get Best Informatica training institutes in Chennai, Please visit Greens Technologies
    Informatica Training in Chennai located at Chennai Adyar which offer Best Informatica Training in Chennai.

  4. Thanks for splitting your comprehension with us. It’s really useful to me & I hope it helps the people who in need of this vital information.
    FITA Academy Complaints|Informatica training in chennai|Best Informatica Training In Chennai|SAS Training in Chennai

  5. The best in cleaning the area in terms of experience in the cleaning as well as accuracy in polishing floors and doors Kspah along with a good washing floors and with the utmost precision as well as disinfecting bathrooms kitchens along perfuming place international best fresheners.
    شركة تنظيف بالقصيم وحائل وبريدة وعنيزة
    شركة تنظيف فلل بالقصيم وحائل وبريدة وعنيزة
    شركة تنظيف خزانات بالقصيم وحائل وبريدة وعنيزة
    شركة تنظيف مسابح بالقصيم وحائل وبريدة وعنيزة
    شركة عزل اسطح بالقصيم وحائل وبريدة وعنيزة
    شركة عزل خزانات بالقصيم وحائل وبريدة وعنيزة
    شركة تنظيف منازل بالقصيم وحائل وبريدة وعنيزة
    شركة تنظيف شقق بالقصيم وبريدة وحائل وعنيزة
    شركة تنظيف بالباحة والعقيق
    شركة تنظيف خزانات ومسابح بالباحة والعقيق
    شركة تنظيف فلل بالباحة والعقيق
    شركة تنظيف شقق بالباحة والعقيق
    شركة عزل اسطح بالباحة والعقيق
    شركة عزل خزانات بالباحة والعقيق
    شركة مكافحة حشرات بالباحة والعقيق
    افضل شركة مكافحة حشرات بالباحة والعقيق
    شركات مكافحة حشرات بالباحة والعقيق

  6. too good piece of information, I had come to know about your site from my friend sajid, bangalore,i have read atleast 7 posts of yours by now, and let me tell you, your web-page gives the best and the most interesting information. This is just the kind of information that i had been looking for, i'm already your rss reader now and i would regularly watch out for the new post, once again hats off to you! Thanks a lot once again, Regards, informatica mdm training in hyderabad,informatica training in hyderabad

  7. الرئيسية » شركات نقل الأثاث والعفش بالدمام والمنطقة الشرقية » شركات نقل اثاث وعفش بالدمام
    شركة زهرة الشرقية

    شركة زهرة الشرقية
    شركات نقل اثاث وعفش بالدمام
    في شركات نقل الأثاث والعفش بالدمام والمنطقة الشرقيه
    شركة نقل اثاث بالدمام
    اذا تعاملنا مع شركات نقل العفش في الدمام كأنها شركات عادية تقدم خدمات نقل عفش شانها في ذلك شان كل شركات نقل الاثاث الأخرى فهذا غير عادل لان شركات نقل العفش بالدمام لها خصوصية مختلفة عن باقي شركات نقل الاثاث حيث يتطلب نقل عفش الدمام مزيد من المجهود وكذلك لندرة شركات شركة تخزين اثاث بالدمام نقل عفش بالدمام وليس معنى هذا ان تلك الشركات تفرض شروطها على العملاء بل بالعكس تخدم تلك الشركات او المؤسسات جميع الخدمات بليونة تامة ونحن هنا نقدم لك قائمة بشركات نقل العفش في الدمام لتختار من بيها شركة نقل عفش بالدمام تكون مناسبة لك.
    شركة نقل عفش بالدمام
    عند قيامك بالبحث في محرك البحث غوغل عن شركات لنقل العفش بالاحساء ستظهر لك قائمة بالعديد من شركات نقل الاثاث المحلية التي يمكنها انجاز تلك المهمة لك اذا كنت تريد نقل الاثاث الخاص بك من مكان الى اخر داخل محيط المدينة التي تسكن فيها فانه من الافضل لك اختيار شركة نقل عفش محلية تمارس نشاطها داخل المدينة الخاصة بك لأنها ستكون على دراية كاملة بأماكن التنقل شركة نقل اثاث بسيهات وكذلك تكاليف النقل والتغليف والتركيب لديها ستكون مناسبة اذا ما قورنت بشركات نقل الاثاث التي تقوم بنقل الاثاث من مدينة الى اخرى لأنها ستوق بتجهيزات خاصة من ادوات وشاحنات ومعدات قد ترفع تكلفة الشحن على الشركة وبالتالي تزداد التكلفة عليك انت ايضا.
    شركة نقل اثاث بالاحساء


  8. قد يعتقد البعض ان نقل العفش هو تحريك الاثاث ثم نقله الى شاحنة والتي تقوم بدورها بنقله الى الوجهة المطلوبة فيبدو الامر بسيطا بالنسبة للبعض ولكن اذا فكرنا قليلا فان شركة نقل الاثاث تقوم اولا بفك قطع الاثاث الكبيرة الحجم والتي لا يمكن نقلها كاملة الى اجزاء صغيرة يسهل حماله وتغليفها وتقوم بترقيم تلك الاجزاء الصغيرة حتى يسهل عملية تجميعها بعد ذلك وبعد الفك والتغليف والترقيم شركة نقل اثاث بالقطيف تقوم بنقل الاجزاء الكبيرة من الاثاث والتي تحتاج الى رافعات وزحافات ومزيد من العمال حتى تستطيع تحريك الاجزاء الكبيرة من الاثاث وبعد ذلك تقوم بالفصل بين قطع الاثاث نفسها ووضع القطع التي تحتوى على زجاج في اماكن خاصة ولفها جيدا باستخدام البلاستيك حتى لا تتعرض للكسر وتتم لك تلك العمليات بحرص شديد ويحتاج الامر الى مزيد من الصبر حتى لا يتعرض أي شيء الى ضرر اثناء النقل.
    شركة نقل اثاث بالخبر
    الان وقد اصبحت فكرة نقل الاثاث متبلورة امام عينيك فلم يعد مطلوب منك سوى اخذ قرار والاتصال بشركة نقل عفش في الدمام مناسبة تقوم بتنفيذ تلك العملية لك ونحن سنكون سعداء جدا إذا تواصلت معنا لتنفيذ هذه المهمة مع ضمان كامل بسلامة الاثاث الخاص بك.
    شركة نقل اثاث بالجبيل
    نحن شركة زهرة الشرقية لنقل الاثاث بالدمام والخبر والجبيل والاحساء والقطيف والهفوف وبسيهات وبراس تنورة وباقى المنطقة الشرقية.

  9. This comment has been removed by the author.

  10. This comment has been removed by the author.

  11. This comment has been removed by the author.

  12. This comment has been removed by the author.

  13. This comment has been removed by the author.

  14. شركة مكافحة الحشرات ورش المبيدات
    شركة كشف تسربات المياه بالنعيرية
    كشف تسربات المياه بسيهات
    شركة كشف تسربات المياه بالقطيف
    كشف تسربات المياه بالقصيم
    شركة كشف تسربات المياه بالخبر
    شركة كشف تسربات المياه بالجبيل
    شركة كشف تسربات المياه بالجبيل
    شركه عزل مائى بالدمام
    شركه عزل حرارى بالدمام
    شركه عزل مائي وحرارى بالدمام
    شركه صيانة بالدمام
    شركه ترميم بالدمام
    شركه تسليك مجارى بالدمام
    شركة تسليك مجارى بالدمام
    شركه كشف تسربات المياه بالدمام
    شركه كشف تسربات المياه بالدمام
    شركة كشف تسربات المياه بالدمام
    شركة كشف تسربات المياه بالدمام
    شركة مكافحة النمل الابيض بالدمام
    كشف تسربات المياه بالدمام للحجز 0530464144
    شركة ترميم المنازل بالدمام
    شركة رش مبيدات بالدمام
    أفضل شركة نظافة بالدمام
    شركة رش مبيدات بالدمام
    نقل عفش
    شركة عزل اسطح بالدمام
    شركة عزل اسطح بالدمام
    ترميم منازل
    شركه كشف تسربات المياه بالرياض
    كشف تسربات المياه بالرياض
    شركه عزل اسطح بالرياض
    شركه تسليك مجارى بالرياض
    شركة مكافحة حشرات بالرياض

  15. All the best blogs that is very useful for keeping me share the ideas
    of the future as well this is really what I was looking for, and I am
    very happy to come here. Thank you very much
    earn to die
    earn to die 2
    earn to die 3
    Hi! I’ve been reading your blog for a while now and finally got the
    earn to die 4
    courage to go ahead and give youu a shout out from
    earn to die 6
    Austin Texas! Just wanted to tell
    earn to die 5
    Hi! I’ve been reading your blog for a while now and finally got the
    happy wheels
    strike force heroes
    you keep up the fantastic work!my weblog
    age of war
    earn to die 5
    good game empire
    tank trouble
    tank trouble 2
    strike force heroes

  16. هكذا الافضليه الكامله لشركه اركان المملكه اذا معنا انت الافضل نقدم لك كافه التسهيلات الممكنه فى هذا المجال
    شركة كشف تسربات المياه بالرياض
    معنا انت تتعامل بمجال تنظيف المنازل والفلل والقصور وغيرها اذا معنا انت الافضل
    شركة نقل عفش بالرياض
    اتصلوا نصلكم اينما كنتم بالمملكه فى كافه المجالات ومجال العفش الدائم والفعال هنا وهناك وبكافه اركان المملكه
    شركة رش مبيدات بالرياض
    مع شركه اركان المملكه الشركه الام التى لها تاريخ وباع كبير وفعال فى هذا المجال وغيره من المجالات المتنوعه والمتوفره فى هذا السياق
    شركة اركان المملكه
    اذا نحن معك دائما نقدم لك كافه العماله بكل اتقان وامانه وبكافه التسهيلات الممكنه
    شركة تنظيف منازل بالرياض
    معنا انت تتعامل باقل الاسعار اتصل نصلك اينما كنت وفى كل وقت وكل مان بالمملكه السعوديهمع اركان المملكه انت الافضل دائما وهكذا نتعامل بكل صدق والعمل الجاد والوافر فى هذا المجال مجال التنظيف
    شركة تنظيف بالاحساءاذا معنا انت فى ايدى امينه نتعامل معك باقل الاسعار الممكنه فى كافه المجالات
    اذا اتصلوا نصلكم فى كل وقت وكل مكان لدينا الامكانيات الوفيره والكامله من اجل العمل الجاد والدئوب
    العمل بامانه سمه من سمات شركة اركان المملكه التى لها باع طويل فلى العمل اليومى والفعالشركة مكافحه حشرات بالاحساءاذا نحن نتقدم اليك باقل السعار المتاحه والممكنه فى مجال التنظيف والمكافحه على حد سواء
    اتصلوا نصلكم فى كل وقت وكل مكان فى كافه ارجاء المملكه السعوديهشركة تنظيف بالطائفمعنا انت الافضل دائما بالمملكه نقدم لكم العمل الجاد والهادف والفعال

  17. لا داعى للقلق وانت تتعامل مع شركة اركان المملكه للتنظيف والمكافحه والتسليك
    وغير ذالك من كافه انواع التنظيف فى المملكه السعوديه باكملها اذا
    كل ما عليكم هو زياره صفحتنا للتطلع على اقل الاسعار المتاحه
    والتى تفى احتياجاتكم الخاصه
    شركة كشف تسربات المياه بابها
    شركة تسليك مجارى بابها
    شركة مكافحة حشرات بابها
    شركة تنظيف بابها
    شركة تنظيف فلل بابها
    شركة تنظيف منازل بابها
    اتصلوا بنا دائما تجدونا فى كل وقت وكل مكان
    لاننا نتعامل بمنتهى الدقه والفعاله والاهميه الكبيره مع شركة
    اركان المملكه لاداعى للقلق نحن معك دائما

  18. مع شركة اركان المملكه للتنظيف,ومكافحه الحشرات,وكشف التسربات,وتسليك المجارى,ونقل العفش,وتنظيف البيوت انت
    شركة تنظيف منازل بخميس مشيط
    تتعامل مع افضل شركة بالمملكه ككل لانها تتعامل باقل الاسعار المتاحه فى مجال العمل
    شركة كشف تسربات المياه بخميس مشيط
    ونحن نوفر لك كل ما هو جديد وبخصم 30%فى مجال الحساب اذا معنا انت فى كل امان ممكن
    اتصل بشركة اركان المملكه لانها الافضل دائما فى كل المجالات
    شركة تسليك مجارى بخميس مشيط
    هكذا شركة اركان المملكه تقدم الخدمه الممتازه التى بدونها لا تستطيعوا العمل الجاد
    اننا نتعامل بالافضليه الكامله لاننا نتعامل بكل الاسعار البسيطه والممكنه
    شركة مكافحه حشرات بخميس مشيط
    نتعامل باقل الاسعار الممكنه والممتاحه فى هذا المجال وخاصه مدينه خميس مشيط
    شركة نقل عفش بخميس مشيط
    تحت شعار الراحه الكامله والاداء المتميز والخدمه طول اليوم
    معنا انت فى كل امان اتصل نصلك اينما كنتمع شركة اركان المملكه انت فى ايدى امينه لاننا بكل امان وحرفيه فى كافه المجالات الحديثه والعصريه
    شركة كشف تسربات المياه بجازان
    لدينا الخبره الكبيره فى مجال كشف التسربات اليوميه والتى من الافضل الاهتمام الكامل والشامل بها
    شركة نقل اثاث بجازان
    هكذا نحن معك دائما فى مجال التسليك والمكافحه فى كل وقت وكل مكان ندعمك بكل جهد
    شركة تسليك مجارى بجازان
    وايضا فى مدينه نجران لسنا الوحيدون ولكننا متميزون عن غيرنا فى كافه المجالات
    شركة تسليك مجارى بنجران
    ولدينا الخبره الطويله فى رش المبيدات والمكافحه بكل وقت وكل مكان
    شركة رش مبيدات بجازان
    ولدينا ايضا باع طويل فى المقاولات لاننا شركة متماسكه ولها الافضليه الكبيره فى هذا المجال
    شركة مقاولات بجازان
    نتعامل باقل الاسعار الممكنه والمتاحه لدى العميل والوصول الى الدقه الكامله

  19. Thank you so much... your blog is giving very useful knowledge for all.i didn’t have the knowledge in this now i get an idea about this..
    thks a lot:-)To know more seo training in chennai