{"id":24435,"date":"2013-05-06T13:38:18","date_gmt":"2013-05-06T20:38:18","guid":{"rendered":"http:\/\/blogs.mcafee.com\/?p=24435"},"modified":"2025-05-29T21:03:33","modified_gmt":"2025-05-30T04:03:33","slug":"emerging-stack-pivoting-exploits-bypass-common-security","status":"publish","type":"post","link":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/","title":{"rendered":"Emerging &#8216;Stack Pivoting&#8217; Exploits Bypass Common Security"},"content":{"rendered":"<p>[This blog was primarily written by Xiaoning Li of McAfee Labs, with assistance from Peter Szor of McAfee Labs.]<\/p>\n<p>In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released <a href=\"http:\/\/blogs.adobe.com\/psirt\/2013\/02\/security-advisory-for-adobe-reader-and-acrobat-apsa13-02.html\">security advisory APSA13-02. <\/a>In that report they listed two vulnerabilities (CVE-2013-0640 and CVE-2013-0641) that were widely exploited. At McAffee Labs and McAfee Labs we ran some further analysis of these exploits and want to share some of the interesting details we discovered.<\/p>\n<p>Based on information from the PSIRT, both vulnerabilities will impact all versions of Adobe Reader from 9.x to 11.x. (Some Acrobat versions are also vulnerable.) We verified this claim and found the sample affected all of them.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop1\" rel=\"attachment wp-att-24441\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24441\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\" alt=\"Szor ROP1\" width=\"550\" height=\"76\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg 550w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP1-300x41.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<h2><b>Attack Path<\/b><\/h2>\n<p>The exploit is spread by a malicious PDF file. When Reader opens the PDF file, it will trigger the vulnerability and start the exploit. This PDF file delivers a very complex attack, bypassing the current Adobe sandbox mechanism to launch the malware.<\/p>\n<p>This flow shows the basic steps for the attack path:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop2\" rel=\"attachment wp-att-24442\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24442\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP2.jpg\" alt=\"Szor ROP2\" width=\"576\" height=\"124\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP2.jpg 576w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP2-300x64.jpg 300w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/a><\/p>\n<p>The files D.T and L2P.T are DLLs in a sandboxed temp path, as in the following:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop3\" rel=\"attachment wp-att-24443\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24443\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP3.jpg\" alt=\"Szor ROP3\" width=\"473\" height=\"148\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP3.jpg 473w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP3-300x93.jpg 300w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/a><\/p>\n<p>A new PDF is created in the normal temp path:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop4\" rel=\"attachment wp-att-24444\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24444\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP4.jpg\" alt=\"Szor ROP4\" width=\"580\" height=\"268\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP4.jpg 580w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP4-300x138.jpg 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>The new PDF, Visaform Turkey, will appear to hide the exploitation. The exploit uses a lot of memory in the background.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop5\" rel=\"attachment wp-att-24445\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24445\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP5.jpg\" alt=\"Szor ROP5\" width=\"494\" height=\"317\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP5.jpg 494w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP5-300x192.jpg 300w\" sizes=\"auto, (max-width: 494px) 100vw, 494px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><b>First Exploit <\/b><\/h2>\n<p>The PDF\u2019s first exploit uses a heap overflow to overwrite a virtual function pointer, and also uses a memory information leak to bypass the address space layout randomization (ASLR) protection in Windows. Return-oriented programming is used to bypass data execution prevention (DEP).<\/p>\n<p>Let\u2019s sidetrack for a moment and look at two definitions: <b><i>Return-oriented programming<\/i><\/b>\u00a0(ROP) is an exploit\u00a0technique in which an attacker controls the\u00a0call stack\u00a0to indirectly execute arbitrary intended or unintended code to deliver an attack, thereby bypassing security features such as DEP. <b><i>Stack pivoting<\/i><\/b> is a common technique used by ROP-based exploits. Pointing the stack pointer to an attacker-owned buffer, such as the heap, will provide more flexibility for the attacker to carry out a complex ROP exploit.<\/p>\n<p>Here\u2019s how the exploit works from the first trigger point. The vulnerability is in AcroForm.api. After the exploit prepares customized stack data on the heap, the data triggers the exploit via following instructions in AcroForm.api.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop6\" rel=\"attachment wp-att-24446\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24446\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP6.jpg\" alt=\"Szor ROP6\" width=\"579\" height=\"76\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP6.jpg 579w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP6-300x39.jpg 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/a><\/p>\n<p>With a modified virtual function pointer, the instruction calls into a special ROP gadget, which will start pivoting.<\/p>\n<p>The address for the first gadget is 0x209b9f50. Here\u2019s the original code:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop7\" rel=\"attachment wp-att-24447\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24447\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP7.jpg\" alt=\"Szor ROP7\" width=\"580\" height=\"114\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP7.jpg 580w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP7-300x58.jpg 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>But if we decode from 0x209b9f50, the code piece looks like what follows. This is the ROP gadget for stack pivoting:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop8\" rel=\"attachment wp-att-24448\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24448\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP8.jpg\" alt=\"Szor ROP8\" width=\"413\" height=\"173\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP8.jpg 413w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP8-300x125.jpg 300w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/a><\/p>\n<p>Now the stack points to a fake stack in the heap. The code log in a debugger at runtime looks like this:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop9\" rel=\"attachment wp-att-24449\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24449\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP9.jpg\" alt=\"Szor ROP9\" width=\"580\" height=\"175\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP9.jpg 580w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP9-300x90.jpg 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Once the customized stack works, it will start more ROP gadgets. When the next Ret instruction is called, the stack looks like this:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop10\" rel=\"attachment wp-att-24450\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24450\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP10.jpg\" alt=\"Szor ROP10\" width=\"579\" height=\"195\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP10.jpg 579w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP10-300x101.jpg 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/a><\/p>\n<p>What\u2019s the instruction for 0x6acc1049? It is offset 0x1049 from AcroForm.api because 0x6acc00 is the base address for the target module. Here is the unintended ROP gadget again:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop11\" rel=\"attachment wp-att-24451\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24451\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP11.jpg\" alt=\"Szor ROP11\" width=\"578\" height=\"76\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP11.jpg 578w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP11-300x39.jpg 300w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/a><\/p>\n<p>The decoded ROP gadget is just a Ret instruction:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop12\" rel=\"attachment wp-att-24452\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24452\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP12.jpg\" alt=\"Szor ROP12\" width=\"580\" height=\"84\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP12.jpg 580w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP12-300x43.jpg 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>It will repeat from stack 0x11849a34 to stack 0x1184beb4, a whopping 9,344 (0x2480) times!<\/p>\n<p>Let\u2019s see what the stack content is now:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop13\" rel=\"attachment wp-att-24453\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24453\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP13.jpg\" alt=\"Szor ROP13\" width=\"236\" height=\"136\" \/><\/a><\/p>\n<p>The next gadget will move the esp register to esi. It will control the stack itself.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop14\" rel=\"attachment wp-att-24454\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24454\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP14.jpg\" alt=\"Szor ROP14\" width=\"289\" height=\"90\" \/><\/a><\/p>\n<p>The gadget still includes lots of return addresses with repeated patterns, such as these:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop15\" rel=\"attachment wp-att-24455\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24455\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP15.jpg\" alt=\"Szor ROP15\" width=\"403\" height=\"40\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP15.jpg 403w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP15-300x29.jpg 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/a><\/p>\n<p>With related code pieces:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop16\" rel=\"attachment wp-att-24456\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24456\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP16.jpg\" alt=\"Szor ROP16\" width=\"382\" height=\"52\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP16.jpg 382w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP16-300x40.jpg 300w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop17\" rel=\"attachment wp-att-24457\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24457\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP17.jpg\" alt=\"Szor ROP17\" width=\"361\" height=\"52\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP17.jpg 361w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP17-300x43.jpg 300w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop18\" rel=\"attachment wp-att-24458\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24458\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP18.jpg\" alt=\"Szor ROP18\" width=\"419\" height=\"87\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP18.jpg 419w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP18-300x62.jpg 300w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/a><\/p>\n<p>So the logic will write target memory with values in the ecx register. The same pattern will repeat many times to modify 0x6b55e001, which is the beginning of the data section of AcroForm.api.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop19\" rel=\"attachment wp-att-24459\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24459\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP19.jpg\" alt=\"Szor ROP19\" width=\"314\" height=\"339\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP19.jpg 314w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP19-277x300.jpg 277w\" sizes=\"auto, (max-width: 314px) 100vw, 314px\" \/><\/a><\/p>\n<p>The data from 0x6b55e001 to 0x6b55e04e is modified and writes several API\/DLL names into the area of 0x6b55e001:<\/p>\n<ul>\n<li>GetTempPathA<\/li>\n<li>Fwrite<\/li>\n<li>Wb<\/li>\n<li>CryptStringToBinaryA<\/li>\n<li>Ntdll<\/li>\n<li>RtlDecompressBuffer<\/li>\n<li>Wcsstr<\/li>\n<\/ul>\n<p>These strings are later used as parameters, during ROP-based API calls. After writing these strings into the data section, the ROP code continues with the following gadgets:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop20\" rel=\"attachment wp-att-24460\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24460\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP20.jpg\" alt=\"Szor ROP20\" width=\"253\" height=\"75\" \/><\/a><\/p>\n<p>We can list the first piece of an ROP gadget step by step. The following code moves [esp] to ecx:<\/p>\n<p style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>6b218551<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c074\u00a0 cccc0240 6b022c74 6b19567b 6ad6ed72<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c084\u00a0 6b19567b 6b237664<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b218551 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b218552 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b022c74 0fb7c0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 movzx\u00a0\u00a0 eax,ax<\/p>\n<p style=\"padding-left: 30px;\">6b022c77 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b19567b 97\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,edi<\/p>\n<p style=\"padding-left: 30px;\">6b19567c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed72 01f7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 add\u00a0\u00a0\u00a0\u00a0 edi,esi<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed74 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b19567b 97\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,edi<\/p>\n<p style=\"padding-left: 30px;\">6b19567c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b237664 91\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,ecx<\/p>\n<p style=\"padding-left: 30px;\">6b237665 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>The following code moves the pointer to eax, and then writes [eax] with the previous value in ecx:<\/p>\n<p style=\"padding-left: 30px;\"><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6b218551 cccc023c<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c094\u00a0 6b022c74 6b19567b 6ad6ed72 6b1d943b<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0a4\u00a0 6b16d51a<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b218551 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b218552 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b022c74 0fb7c0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 movzx\u00a0\u00a0 eax,ax<\/p>\n<p style=\"padding-left: 30px;\">6b022c77 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b19567b 97\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,edi<\/p>\n<p style=\"padding-left: 30px;\">6b19567c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed72 01f7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 add\u00a0\u00a0\u00a0\u00a0 edi,esi<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed74 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b1d943b 57\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 push\u00a0\u00a0\u00a0 edi<\/p>\n<p style=\"padding-left: 30px;\">6b1d943c 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b1d943d c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b16d51a 8908\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mov\u00a0\u00a0\u00a0\u00a0 dword ptr [eax],ecx<\/p>\n<p style=\"padding-left: 30px;\">6b16d51c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>The following code gets the LoadLibraryA() API pointer from the import table:<\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0a4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6b218551 6b32b234 6b1d92ac<\/strong><\/p>\n<p style=\"padding-left: 30px;\">6b218551 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b218552 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p style=\"padding-left: 30px;\">6b1d92ac ff10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 call\u00a0\u00a0\u00a0 dword ptr [eax]<\/p>\n<p style=\"padding-left: 30px;\">6b1d92ae c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>At this point, the stack keeps the parameter for LoadLibraryA(). This is actually a string for MSVCR100.dll in the \u201cidata\u201d section.<\/p>\n<p>Once the MSVCR100.dll handle is available via LoadLibraryA(), the following code writes the handle to the target address in the heap (actually the fake stack), which is used to call GetProcAddress() as the first parameter. The address is 0x1184c0e4.<\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0b4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6b237664 6b218551 cccc022c<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0c4\u00a0 6b022c74 6b19567b 6ad6ed72 6b1d943b<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0d4\u00a0 6b16d51a<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b237664 91\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,ecx<\/p>\n<p style=\"padding-left: 30px;\">6b237665 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b218551 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b218552 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b022c74 0fb7c0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 movzx\u00a0\u00a0 eax,ax<\/p>\n<p style=\"padding-left: 30px;\">6b022c77 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b19567b 97\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xchg\u00a0\u00a0\u00a0 eax,edi<\/p>\n<p style=\"padding-left: 30px;\">6b19567c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed72 01f7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 add\u00a0\u00a0\u00a0\u00a0 edi,esi<\/p>\n<p style=\"padding-left: 30px;\">6ad6ed74 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b1d943b 57\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 push\u00a0\u00a0\u00a0 edi<\/p>\n<p style=\"padding-left: 30px;\">6b1d943c 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b1d943d c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b16d51a 8908\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0mov\u00a0\u00a0\u00a0\u00a0 dword ptr [eax],ecx<\/p>\n<p style=\"padding-left: 30px;\">6b16d51c c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>Next the process calls the following gadgets to get function pointers for the wcsstr function. The first parameter is a DLL handle received from previous gadgets.<\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0d4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6b218551 6b32b1ec 6b1d92ac<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b218551 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pop\u00a0\u00a0\u00a0\u00a0 eax<\/p>\n<p style=\"padding-left: 30px;\">6b218552 c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6b1d92ac ff10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 call\u00a0\u00a0\u00a0 dword ptr [eax]<\/p>\n<p style=\"padding-left: 30px;\">6b1d92ae c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ret<\/p>\n<p>Now it\u2019s time to call the function with the jmp eax gadget.<\/p>\n<p style=\"padding-left: 30px;\"><strong>1184c0e4\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a06acce598<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 30px;\">6acce598 ffe0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 jmp\u00a0\u00a0\u00a0\u00a0 eax {MSVCR100!wcsstr (6c5f20f1)}<\/p>\n<p>Here the code searches for the string \u201cMODULE\u201d from the heap or the fake stack. There is a long string in the heap following the \u201cMODULE\u201d signature. This is the encoded and compressed DLL D.T. With more gadgets, the code calls CryptStringToBinaryA() to convert this string to binary, and then calls RtlDecompressBuffer() to decompress the binary to the real D.T binary code in memory.<\/p>\n<p>Similar ROP gadgets get ntdll.dll and related API addresses, for example, RtlDecompressBuffer() and CryptStringToBinaryA(). Finally, the ROP gadget calls GetTempPathA() to get the current temp path, the sandboxed path. It will create D.T under this path and call LoadLibraryA() to run the D.T. module.<\/p>\n<p>D.T creates two threads. One shows error messages. The second creates and loads the DLL L2P.T, which exploits the second vulnerability to load L2P.T into a nonsandboxed acrord32 process. Finally this process terminates.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop21\" rel=\"attachment wp-att-24461\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24461\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP21.jpg\" alt=\"Szor ROP21\" width=\"365\" height=\"184\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP21.jpg 365w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP21-300x151.jpg 300w\" sizes=\"auto, (max-width: 365px) 100vw, 365px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>Second Exploit<\/b><\/p>\n<p>The second exploit triggers the vulnerability at acrord32.exe:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop22\" rel=\"attachment wp-att-24462\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24462\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP22.jpg\" alt=\"Szor ROP22\" width=\"543\" height=\"42\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP22.jpg 543w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP22-300x23.jpg 300w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<p>Due to a heap overflow, the eax register calls to the stack-pivoting ROP gadget.<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/attachment\/szor-rop23\" rel=\"attachment wp-att-24440\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-24440\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP23.jpg\" alt=\"Szor ROP23\" width=\"471\" height=\"117\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP23.jpg 471w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP23-300x74.jpg 300w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/a><\/p>\n<p>A few more ROP gadgets after stack pivoting load L2P.T in the same process. L2P.T creates another DLL, langbar.dll, which downloads the rest of the malware.<\/p>\n<h2><b>No Shell<\/b><\/h2>\n<p>After we reviewed all of the exploit code and corresponding ROP, we found that this exploit does not use any traditional shellcode. All API calls use the fake stack from the stack pivoting.<\/p>\n<h2><b>Mitigation <\/b><\/h2>\n<p>Stack pivoting is a very common technique to allow an exploit to run powerful gadgets with a fake stack. For this kind of complex case, it\u2019s very hard to create a customized stack within the real stack instead of within a fake stack. Once an exploit can do stack pivoting, it can bypass different defense mechanisms. Evolving security solutions need to address this attack pattern. Stack pivoting creates a very complex ROP attack and is a good example of how exploitation techniques continue to evolve. This successful exploit bypasses both Adobe client security features and basic Windows DEP and ASLR defenses.<\/p>\n<p>We thank our colleagues Haifei Li, Bing Sun, Xiaobo Chen, and Chong Xu for their help with this analysis.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[This blog was primarily written by Xiaoning Li of McAfee Labs, with assistance from Peter Szor of McAfee Labs.] In&#8230;<\/p>\n","protected":false},"author":674,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[442],"tags":[2026,1814,3923,180],"coauthors":[3973],"class_list":["post-24435","post","type-post","status-publish","format-standard","hentry","category-mcafee-labs","tag-big-data","tag-computer-security","tag-email-and-web-security","tag-malware"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Emerging &#039;Stack Pivoting&#039; Exploits Bypass Common Security | McAfee Blog<\/title>\n<meta name=\"description\" content=\"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Emerging &#039;Stack Pivoting&#039; Exploits Bypass Common Security | McAfee Blog\" \/>\n<meta property=\"og:description\" content=\"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\" \/>\n<meta property=\"og:site_name\" content=\"McAfee Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/McAfee\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/McAfee\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-05-06T20:38:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-30T04:03:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"550\" \/>\n\t<meta property=\"og:image:height\" content=\"76\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"McAfee\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@McAfee\" \/>\n<meta name=\"twitter:site\" content=\"@McAfee\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"McAfee\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\"},\"author\":{\"name\":\"McAfee\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa\"},\"headline\":\"Emerging &#8216;Stack Pivoting&#8217; Exploits Bypass Common Security\",\"datePublished\":\"2013-05-06T20:38:18+00:00\",\"dateModified\":\"2025-05-30T04:03:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\"},\"wordCount\":1533,\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\",\"keywords\":[\"big data\",\"computer security\",\"email and web security\",\"malware\"],\"articleSection\":[\"McAfee Labs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\",\"name\":\"Emerging 'Stack Pivoting' Exploits Bypass Common Security | McAfee Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\",\"datePublished\":\"2013-05-06T20:38:18+00:00\",\"dateModified\":\"2025-05-30T04:03:33+00:00\",\"description\":\"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage\",\"url\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\",\"contentUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Other Blogs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"McAfee Labs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Emerging &#8216;Stack Pivoting&#8217; Exploits Bypass Common Security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"name\":\"McAfee Blog\",\"description\":\"Internet Security News\",\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\",\"name\":\"McAfee\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"width\":1286,\"height\":336,\"caption\":\"McAfee\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/McAfee\/\",\"https:\/\/x.com\/McAfee\",\"https:\/\/www.linkedin.com\/company\/mcafee\/\",\"https:\/\/www.youtube.com\/McAfee\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa\",\"name\":\"McAfee\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/1ffadfeeda1f4f9e7891a81f27a9ecf4\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2020\/08\/Original-Logo-96x96.png\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2020\/08\/Original-Logo-96x96.png\",\"caption\":\"McAfee\"},\"description\":\"We're here to make life online safe and enjoyable for everyone.\",\"sameAs\":[\"https:\/\/www.facebook.com\/McAfee\/\",\"https:\/\/www.linkedin.com\/company\/mcafee\/\",\"https:\/\/x.com\/McAfee\"],\"url\":\"https:\/\/www.mcafee.com\/blogs\/author\/mcafee\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Emerging 'Stack Pivoting' Exploits Bypass Common Security | McAfee Blog","description":"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Emerging 'Stack Pivoting' Exploits Bypass Common Security | McAfee Blog","og_description":"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two","og_url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/","og_site_name":"McAfee Blog","article_publisher":"https:\/\/www.facebook.com\/McAfee\/","article_author":"https:\/\/www.facebook.com\/McAfee\/","article_published_time":"2013-05-06T20:38:18+00:00","article_modified_time":"2025-05-30T04:03:33+00:00","og_image":[{"width":550,"height":76,"url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg","type":"image\/jpeg"}],"author":"McAfee","twitter_card":"summary_large_image","twitter_creator":"@McAfee","twitter_site":"@McAfee","twitter_misc":{"Written by":"McAfee","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#article","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/"},"author":{"name":"McAfee","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa"},"headline":"Emerging &#8216;Stack Pivoting&#8217; Exploits Bypass Common Security","datePublished":"2013-05-06T20:38:18+00:00","dateModified":"2025-05-30T04:03:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/"},"wordCount":1533,"publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg","keywords":["big data","computer security","email and web security","malware"],"articleSection":["McAfee Labs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/","url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/","name":"Emerging 'Stack Pivoting' Exploits Bypass Common Security | McAfee Blog","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg","datePublished":"2013-05-06T20:38:18+00:00","dateModified":"2025-05-30T04:03:33+00:00","description":"In February 2013, the Adobe Product Security Incident Response Team (PSIRT) released security advisory APSA13-02. In that report they listed two","breadcrumb":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#primaryimage","url":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg","contentUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2013\/05\/Szor-ROP1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/emerging-stack-pivoting-exploits-bypass-common-security\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mcafee.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Other Blogs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/"},{"@type":"ListItem","position":3,"name":"McAfee Labs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/"},{"@type":"ListItem","position":4,"name":"Emerging &#8216;Stack Pivoting&#8217; Exploits Bypass Common Security"}]},{"@type":"WebSite","@id":"https:\/\/www.mcafee.com\/blogs\/#website","url":"https:\/\/www.mcafee.com\/blogs\/","name":"McAfee Blog","description":"Internet Security News","publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mcafee.com\/blogs\/#organization","name":"McAfee","url":"https:\/\/www.mcafee.com\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","width":1286,"height":336,"caption":"McAfee"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/McAfee\/","https:\/\/x.com\/McAfee","https:\/\/www.linkedin.com\/company\/mcafee\/","https:\/\/www.youtube.com\/McAfee"]},{"@type":"Person","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa","name":"McAfee","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/1ffadfeeda1f4f9e7891a81f27a9ecf4","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2020\/08\/Original-Logo-96x96.png","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2020\/08\/Original-Logo-96x96.png","caption":"McAfee"},"description":"We're here to make life online safe and enjoyable for everyone.","sameAs":["https:\/\/www.facebook.com\/McAfee\/","https:\/\/www.linkedin.com\/company\/mcafee\/","https:\/\/x.com\/McAfee"],"url":"https:\/\/www.mcafee.com\/blogs\/author\/mcafee\/"}]}},"_links":{"self":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/24435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/users\/674"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/comments?post=24435"}],"version-history":[{"count":2,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/24435\/revisions"}],"predecessor-version":[{"id":214726,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/24435\/revisions\/214726"}],"wp:attachment":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/media?parent=24435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/categories?post=24435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/tags?post=24435"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/coauthors?post=24435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}