Wednesday, September 19, 2012

Bypassing Intel SMEP on Windows 8 x64 Using Return-oriented Programming

Authors: Artem Shishkin, Ilya Smit (Positive Research)

This article presents a way to bypass Intel SMEP security feature on x64 version of Windows 8. It is performed by using return-oriented programming. A way to build a suitable ROP chain is demonstrated below.

SMEP feature doesn’t allow executing a code from a user-mode page in supervisor mode (CPL = 0). Any attempt of executing a code under these circumstances on Windows 8 ends up with a blue screen of death with a bugcheck code “ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY”. For more details on how SMEP is implemented in Windows 8 please refer to [1].

In order to disable SMEP, the 20th bit of CR4 register has to be reset. There are two steps in bypassing SMEP — firstly, we’ll need to find out the value of CR4 register, and secondly, we’ll need a way to set a new value of CR4 register. The first step is needed because we have to preserve the original value of the other CR4 bits. The point is that various bits of this register are responsible for enabling or disabling certain processor features. The OS enables those features only once during the system startup and they are not supposed to be modified in a runtime. Modifying various bits of CR4 register can lead to undefined behavior or a system crash.

The preliminary requirement of a successful attack on SMEP is making the shellcode (or a ROP chain in our case) dynamic, that is, all of the needed code offsets have to be calculated in a runtime. For this, a certain kernel-mode information disclosure is needed, e.g. when determining the base address of a module with ROP gadgets [2]. A code for parsing PE file format is also needed to ensure that the found gadgets are located in the executable section of the exploited module.

There are two approaches that can be used for getting the value of CR4 register. The first one is using a ROP chain. There is a suitable function KiSaveInitialProcessorControlState() present in the “ntoskrnl” module. The body of this function is provided below.
mov     rax, cr0
mov     [rcx], rax
mov     rax, cr2
mov     [rcx+8], rax
mov     rax, cr3
mov     [rcx+10h], rax
mov     rax, cr4
mov     [rcx+18h], rax
mov     rax, cr8
mov     [rcx+0A0h], rax
sgdt    fword ptr [rcx+56h]
sidt    fword ptr [rcx+66h]
str     word ptr [rcx+70h]
sldt    word ptr [rcx+72h]
stmxcsr dword ptr [rcx+74h]
Listing 1. KiSaveInitialProcessorControlState() function

As we can see, this function can be successfully used for retrieving various interesting information about the processor control state. It is also not guarded with stack cookies and uses volatile registers RAX and RCX.

That’s grand!

We can fill in the values of RAX and RCX registers with another ROP gadgets just like at the end of the  HvlEndSystemInterrupt() function shown in listing 2.

pop     rdx
pop     rax
pop     rcx
 Listing 2. HvlEndSystemInterrupt() function ROP gadget

The problem of this method is that it depends mostly on the situation. There are certain cases when it is difficult to restore the original control flow of the exploiting program. In our case, we also need to reset the 20th bit of CR4 value, but there is no suitable ROP gadget that can be found in the “ntoskrnl” module for that, so some user mode code has to be executed which is impossible due to the fact that SMEP is still enabled. However, you can look for a suitable ROP gadget in other loaded modules in a runtime.

The other approach is to emulate the initialization of CR4 register. Most of the bits in CR4 can be set or reset with the help of “cpuid” instruction which defines supported features for the current processor. This method is more convenient although less reliable.

The second step of bypassing SMEP is using a gadget that will set the new CR4 register value. For that KiConfigureDynamicProcessor() function can be used.

mov     cr4, rax
add     rsp, 28h
Listing 3. KiConfigureDynamicProcessor() function ROP gadget

Once SMEP is disabled, we can jump to the user-mode buffer with a shellcode. Luckily, there is no stack cookie security feature in the exploited ROP gadgets. Here goes out an obvious mitigation: adding a stack cookie security feature to the functions with ROP gadgets could significantly complicate SMEP bypassing using a ROP chain.


[1] Artem Shishkin: Intel SMEP overview and partial bypass on Windows 8.
[2] Mateusz “j00ru” Jurczyk: Windows Security Hardening Through Kernel Address Protection.


  1. Il ya beaucoup de femmes qui sont à la mode. Ils passent et faire des folies sur des choses qu'ils peuvent utiliser pour remplir leur garde-robe. Certains préfèrent investir sur des espadrilles Isabel marant dans différents styles et couleurs, tout en certains voudraient constituer une collection d'accessoires qu'ils peuvent utiliser pour égayer tout type de vêtements. Cependant, il ya certains qui sont plus intéressés à garder une collection de chaussures de sport. Sandales, escarpins, sans-ons, n'importe quel type de chaussures de sport est un add-on défini la garde-robe de chaque femme.

  2. My Website has some issue with the security wise,but now fine Thanks a lot for info

    Click more

  3. Thanks a lot ,Keep Rocking and if you need anyhelp regarding wedding Photography Singapore Check out this

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


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

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

  6. شركة مكافحة حشرات بالاحساء
    نقل اثاث بالاحساء
    نقل عفش بالاحساء
    شركة تنظيف بيوت بالجبيل
    شركة تسليك مجارى بالجبيل
    شركة تنظيف بالجبيل
    شركة تنظيف خزانات بالجبيل
    شركة تنظيف سجاد بالجبيل
    شركة تنظيف شقق بالجبيل
    شركة تنظيف فلل بالجبيل
    شركة تنظيف مجالس بالجبيل
    شركة تنظيف منازل بالجبيل
    شركة رش مبيدات بالجبيل
    شركة شفط بيارات بالجبيل
    شركة عزل اسطح بالجبيل
    شركة عزل خزانات بالجبيل
    شركة كشف تسربات المياه بالجبيل
    شركة مكافحة البق بالجبيل

    شركة مكافحة النمل الابيض بالدمام
    شركة مكافحة حشرات بالرياض
    شركة نقل اثاث بالقطيف
    شركة نقل عفش بالقطيف
    شركة تسليك مجارى بالخبر
    شركة تنظيف بالخبر
    شركة تنظيف بيوت بالخبر
    شركة تنظيف خزانات بالخبر
    شركة تنظيف سجاد بالخبر
    شركة تنظيف بالخبر
    شركة تنظيف بالخبر
    شركة تنظيف مجالس بالخبر
    شركة تنظي منازل بالخبر
    شركة رش مبيدات بالخبر
    شفط بيارات بالخبر

    عزل ايطح بالخبر
    عزل خزانات بالخبر
    كشف تسربات بالخبر
    مكافحة البق بالخبر
    مكافحة النمل الابيض بالخبر
    مكافحة حشرات بالخبر
    شركة نقل اثاث بالخبر
    شركة نقل عفش بالخبر
    شركة تسليك بالقطيف
    شركة تنظيف بالظهران
    شركة تنظيف بيوت بالظهران
    شركة تنظيف خزانات بالظهران
    شركة تنظيف سجاد وموكيت بالظهران
    شركة تنظيف شقق بالظهران

  7. شركة تنظيف فلل بالظهران
    شركة تنظيف منازل بالظهران
    شركة رش مبيدات بالظهران
    شركة شفط بيارات بالظهران
    شركة عزل اسطح بالظهران
    شركة عزل خزانات بالظهران
    شركة تنظيف مجالس بالظهران
    شركة كشف تسريبات المياه بالظهران
    شركة مكافحة البق بالظهران
    شركة مكافحة النمل الابيض بالظهران
    شركة مكافحة حشرات بالظهران
    شركة نقل اثاث بالظهران
    شركة نقل عفش بالظهران
    شركة تسليك مجارى بالقطيف
    شركة تنظيف بالقطيف
    شركة تنظيف بيوت بالقطيف
    شركة تنظيف خزانات بالقطيف
    شركة تنظيف سجاد وموكيت بالقطيف
    شركة تنظيف شقق بالقطيف
    شركة تنظيف فلل بالقطيف
    شركة تنظيف مجالس بالقطيف
    شركة تنظيف منازل بالقطيف
    شركة رش مبيدات بالقطيف
    شركة شفط بيارات بالقطيف
    شركة عزل اسطح بالقطيف
    شركة عزل خزانات بالقطيف
    شركة كشف تسريبات المياه بالقطيف
    شركة مكافحة البق بالقطيف
    شركة مكافحة النمل الابيض بالقطيف
    شركة مكافحة حشرات بالقطيف
    شركة نقل اثاث بالقطيف
    شركة نقل عفش بالقطيف
    شركة تسليك مجارى ببقيق
    شركة تنظيف ببقيق
    شركة تنظيف بيوت ببقيق
    شركة تنظيف خزانات ببقيق

  8. اتصلوا بنا تجدونا اينما كنتم وفى كل وقت وكل مكان
    نتعامل معكم بافضل جوده واحسن اداء واقل الاسعار
    مع شركة اركان المملكه انتو تتعاملون مع افضل شركة بالمملكه ككل
    لاننا شركة زات باع كبير فى عالم التنظيف على مر السنين ونعمل باقصى جهد من اجل راحتكم اولااا
    شركة كشف تسربات المياه بجازان

    شركة كشف تسربات المياه بخميس مشيط

    شركة كشف تسربات المياه بابها

    شركة كشف تسربات المياه بالدمام

    شركة كشف تسربات المياه بالرياض

    شركة نقل اثاث بجازان

    تسليك مجارى بالدمام

    شركة تسليك مجارى بجازان

    شركة تسليك مجارى بابها

    شركة نقل عفش بالرياض

    شركة نقل عفش بخميس مشيط


  9. In spite of the fact that you may feel somewhat unusual at to begin with, it was found that back rub her bosoms, and to give somewhere around 100 and 300 strokes round, twice every day, have the chance to build the container size inside of 30 days.

    Seek Filets-chicken bosom increase