{"id":75709,"date":"2017-07-17T11:53:39","date_gmt":"2017-07-17T18:53:39","guid":{"rendered":"https:\/\/securingtomorrow.mcafee.com\/?p=75709"},"modified":"2025-05-27T20:34:50","modified_gmt":"2025-05-28T03:34:50","slug":"analyzing-patch-of-a-virtual-machine-escape-on-vmware","status":"publish","type":"post","link":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/","title":{"rendered":"Analyzing a Patch of a Virtual Machine Escape on VMware"},"content":{"rendered":"<p><em>This blog was written by Yakun Zhang.<\/em><\/p>\n<p>A virtual machine is a completely isolated guest operating system installation within a normal host operating system. Virtual machine escape is the process of breaking out of a virtual machine and interacting with the host operating system, which can lead to infections and malware execution. VMware escapes demonstrated at the most recent PwnFest, organized by Power of Community in Seoul, South Korea, grabbed our attention as VMware was publicly pwned for the first time. The McAfee IPS Vulnerability Research Team decided to look deeper into the issue to better understand the vulnerability.<\/p>\n<p>VMware responded well by very quickly pushing a fix for these exploits and releasing <a href=\"http:\/\/www.vmware.com\/in\/security\/advisories\/VMSA-2016-0019.html\">a security advisory<\/a>. As we often do for security issues in closed-source software, we looked into the advisory. It includes this:<\/p>\n<p style=\"padding-left: 30px;\">\u201cThe drag-and-drop (DnD) function in VMware Workstation and Fusion has an out-of-bounds memory access vulnerability. This may allow a guest to execute code on the operating system that runs Workstation or Fusion. On Workstation Pro and Fusion, the issue cannot be exploited if both the drag-and-drop function and the copy-and-paste (C&amp;P) function are disabled.\u201d<\/p>\n<p>The vulnerability resides in the drag-and-drop and copy-and-paste functions. Both use the VMware remote procedure call (RPC) mechanism. VMware\u2019s RPC has been a very popular attack surface for guest-to-host escapes.<\/p>\n<p>Before we go deeper into the patch for VMSA-2016-0019 (CVE-2016-7461) we must have a basic idea of how VMware Workstation handles guest-to-host or host-to-guest copy-and-paste operations.<\/p>\n<p>The following diagram shows the VMware drag-and-drop copy-and-paste (DnDCP) model by class hierarchy. (Source: Open VM Tools source code.)<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75702 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\" alt=\"\" width=\"808\" height=\"177\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic.png 808w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-300x66.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-768x168.png 768w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>To seamlessly perform a guest-to-host or host-to-guest copy-and-paste operation, VMware tools need to be installed on the guest operating system. VMware tools handle the guest-to-host or host-to-guest communication. In our investigation, we used Windows guest and Windows host. In Windows guest, the main tools process is vmtoolsd.exe.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75703 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic-1.png\" alt=\"\" width=\"556\" height=\"125\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-1.png 556w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-1-300x67.png 300w\" sizes=\"auto, (max-width: 556px) 100vw, 556px\" \/><\/p>\n<p>One way guest and host communicate with each other is by RPC. VMware has an RPC interface called <a href=\"https:\/\/sites.google.com\/site\/chitchatvmback\/backdoor\">Backdoor<\/a><a name=\"_ednref1\"><\/a>.<a name=\"_edn1\"><\/a><\/p>\n<h2><strong>Guest RPC mechanism<\/strong><\/h2>\n<p>Let\u2019s take a close look at how a guest and host OS communicate with each other over RPC. To understand the guest RPC mechanism, we referred to the open-source component of VMware tools, <a href=\"https:\/\/github.com\/vmware\/open-vm-tools\">open-vm-tools<\/a>, which primarily use the following functions for guest RPC calls:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75704 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic-2.png\" alt=\"\" width=\"784\" height=\"122\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-2.png 784w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-2-300x47.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-2-768x120.png 768w\" sizes=\"auto, (max-width: 784px) 100vw, 784px\" \/><\/p>\n<p>Theoretically, anything using RpcChannel_Send() or RpcOut_send() can be sent with the command-line tool rpctools.exe, which ships with VMWare Workstation.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75705 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic-3.png\" alt=\"\" width=\"889\" height=\"125\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-3.png 889w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-3-300x42.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic-3-768x108.png 768w\" sizes=\"auto, (max-width: 889px) 100vw, 889px\" \/><\/p>\n<p>RpcOut_Send() invokes Message_Send(), which calls the function Backdoor().<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75712 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-1.png\" alt=\"\" width=\"496\" height=\"373\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-1.png 496w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-1-300x226.png 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/p>\n<p>The Backdoor function is responsible for sending the message through the VMware special I\/O port.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75713 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-2.png\" alt=\"\" width=\"398\" height=\"436\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-2.png 398w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-2-274x300.png 274w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Usually we see the following set of instructions while invoking Backdoor from guest to host.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75715 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-3.png\" alt=\"\" width=\"664\" height=\"131\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-3.png 664w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-3-300x59.png 300w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/p>\n<p>In the VMware tools installation, the function resides in vmtools.dll. Here we see Backdoor() calling the function sub_10050190.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75716 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-4.png\" alt=\"\" width=\"336\" height=\"480\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-4.png 336w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-4-210x300.png 210w\" sizes=\"auto, (max-width: 336px) 100vw, 336px\" \/><\/p>\n<p>Digging into this, we find this function executes the privilege instruction \u201cin.\u201d<\/p>\n<p>Let\u2019s return to the vulnerability. We are mainly interested in DnDCP RPC message(s) because the vulnerability lies in DnDCP RPC, per the advisory. The VM Tools source code reveals the DnDCP RPC message structure for us.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75717 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-5.png\" alt=\"\" width=\"758\" height=\"392\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-5.png 758w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-5-300x155.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>From the source code, we see the first member of the structure is the RPC command. When we break into vmtools!RpcOut_send(x,x,x,) of the vmtoolsd.exe process in guest, we see the same thing.<\/p>\n<p style=\"padding-left: 30px;\">Bool RpcOut_send(RpcOut *out,\u00a0char const\u00a0*request, size_t reqLen,char const\u00a0**reply, size_t *repLen);<\/p>\n<p>In RpcOut_Send(), the second argument is the request-RPC packet. If we dump the packet from the guest OS vm-tools process, in the data packet we first see the RPC command (as in the DnDCPMsgHrV4 structure) and we also see a copy-and-paste request packet for our test file debasish.txt on the guest desktop.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75719 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-6.png\" alt=\"\" width=\"840\" height=\"333\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-6.png 840w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-6-300x119.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-6-768x304.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p><strong>RPC packet handling in guest<\/strong><\/p>\n<p>Let\u2019s look at how the host operating system handles the RPC request.\u00a0On the host, each running virtual machine has a separate process, vmware-vmx.exe.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75721 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-7.png\" alt=\"\" width=\"545\" height=\"144\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-7.png 545w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-7-300x79.png 300w\" sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/p>\n<p>When a guest RPC is issued by the guest, code inside vmware-vmx.exe searches the guest RPC handler table for a handler corresponding the request.<\/p>\n<p>If we search the raw string in vmware-vmx.exe disassembled in IDA Pro, we find almost all the handlers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75722 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-8.png\" alt=\"\" width=\"775\" height=\"439\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-8.png 775w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-8-300x170.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-8-768x435.png 768w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75723 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-9.png\" alt=\"\" width=\"685\" height=\"332\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-9.png 685w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-9-300x145.png 300w\" sizes=\"auto, (max-width: 685px) 100vw, 685px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>From this, we know vmware-vmx.exe is the main component in the host, responsible for handling the vulnerable component, the copy-and-paste RPC. We next performed a binary \u201cdiffing\u201d of the patched and unpatched binaries. The patch was shipped through VMware Workstation Version\u00a012.5.2, so we ran the binary diffing between the vmware-vmx.exe of Version<strong>\u00a0<\/strong>12.5.2 and\u00a012.5.1.<\/p>\n<p>We can see a few functions in vmware-vmx.exe that were modified by the patch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75724 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-10.png\" alt=\"\" width=\"1067\" height=\"126\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-10.png 1067w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-10-300x35.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-10-768x91.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-10-1024x121.png 1024w\" sizes=\"auto, (max-width: 1067px) 100vw, 1067px\" \/><\/p>\n<p>One interesting modified function is vmware_vmx!sub_140621520.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75726 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-11.png\" alt=\"\" width=\"995\" height=\"466\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-11.png 995w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-11-300x141.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-11-768x360.png 768w\" sizes=\"auto, (max-width: 995px) 100vw, 995px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>This function grabbed our attention because it has a call to memcpy(), which is a perfect situation for triggering an out-of-bounds condition.<\/p>\n<p>After running some debugging and reverse engineering, we confirmed the function vmware_vmx!sub_140621520 handles RPC packets, and we were able to control one argument of the modified function from the guest operating system. The argument is a pointer to a structure, giving us control of the content of the passed structure.<\/p>\n<p>The following screenshot demonstrates the statement. The window at left is the guest virtual machine and the window at right is windbg attached with the vmware_vmx.exe process.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75727 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-12.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-12.png 1920w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-12-300x169.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-12-768x432.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-12-1024x576.png 1024w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-12-889x500.png 889w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>In this screen, we have modified an RPC packet in the main vm-tools process vmtoolsd.exe (RpcOut_send) at runtime, and the modified packet is received by the function\u00a0vmware_vmx!sub_140621520 in the vmware-vmx.exe process.<\/p>\n<p>Now, let\u2019s look at the decompiled source code of our patched function to identify which fixes were added to kill the bug.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75728 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-13.png\" alt=\"\" width=\"929\" height=\"816\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-13.png 929w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-13-300x264.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-13-768x675.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-13-569x500.png 569w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/p>\n<p>To send a valid RPC packet we referred to the source code of VM Tools, which defines the RPC packet structure. The following screen shows the definition of an RPC packet header; we can see the size is exactly 0x38.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75729 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-14.png\" alt=\"\" width=\"778\" height=\"387\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-14.png 778w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-14-300x149.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-14-768x382.png 768w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The fields binarySize and payloadSize are actually the variables v6 and v5 in our decompiled code. We can control the values of these two fields to cause an out-of-bounds access. To send an arbitrary RPC packet from guest to host, we developed a standalone tool that can send an RPC from guest to host via the function Backdoor. After thorough reverse engineering, we found that using the vulnerable function we can achieve an out-of-bounds read\/write in the vmware-vmx.exe process.<\/p>\n<p><strong>Out-of-bounds read<\/strong><\/p>\n<p>As we know, the payloadSize is in our control. If we send a packet with a large payloadSize without a payload buffer, when the program reaches memcpy() it will read some memory out of bounds.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75730 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-15.png\" alt=\"\" width=\"941\" height=\"529\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-15.png 941w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-15-300x169.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-15-768x432.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-15-889x500.png 889w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/p>\n<p>The preceding screen shows the code will copy 0x500-length contents from 0x36E4D96 to 0x378A0D0. However, our data ends only with 0x4C in 0x36E4DB7. The data after 0x36E4DB7 will cause an out-of-bounds read.<\/p>\n<h2><strong>Out-of-bounds write<\/strong><\/h2>\n<p>If the RPC message contains multiple packets, we will get into the function sub_1406215F0.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-75732 size-full\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-16.png\" alt=\"\" width=\"1006\" height=\"941\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-16.png 1006w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-16-300x281.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-16-768x718.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-16-535x500.png 535w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>To create an out-of-bounds write in the preceding function we have to send more than one RPC packet in one session; then vmware-vmx will create a new buffer to combine the payloads of all packets. After some thorough reverse engineering trials, we conclude that RPC packets with the following characteristics can be sent from guest to host to achieve an out-of-bounds write.<\/p>\n<p>First, we send a drag-and-drop RPC packet with these characteristics:<\/p>\n<ul>\n<li>packet-&gt;binarySize is 0x10000.<\/li>\n<li>packet-&gt;payloadOffset is 0x0.<\/li>\n<li>packet-&gt;payloadSize is 0x500.<\/li>\n<\/ul>\n<p>With these options, all preceding check conditions are satisfied.<\/p>\n<ul>\n<li>packetSize is certainly larger than DND_CP_MSG_HEADERSIZE_V4.<\/li>\n<li>packet-&gt;payloadSize is less than 0xFF64.<\/li>\n<li>packet-&gt;binarySize is less than 0x400000.<\/li>\n<li>packet-&gt;payloadOffset + packet-&gt;payloadSize &lt; packet-&gt;binarySize.<\/li>\n<\/ul>\n<p>The procedure will create a new buffer and copy all our packet payloads to it.<\/p>\n<p>Then, we send another packet with the same session ID, in which<\/p>\n<ul>\n<li>packet-&gt;binarySize is 0x10100.<\/li>\n<li>packet-&gt;payloadOffset is 0x500.<\/li>\n<li>packet-&gt;payloadSize is 0xFC00.<\/li>\n<\/ul>\n<p>These options also satisfy the sanity checks.<\/p>\n<ul>\n<li>packetSize is certainly larger than DND_CP_MSG_HEADERSIZE_V4.<\/li>\n<li>packet-&gt;payloadSize is less than 0xFF64.<\/li>\n<li>packet-&gt;binarySize is less than 0x400000.<\/li>\n<li>packet-&gt;payloadOffset + packet-&gt;payloadSize &lt; packet-&gt;binarySize.<\/li>\n<\/ul>\n<p>Because this packet has the same session ID as the first packet, and the new buffer is already allocated, the code continues to copy payloads to the current buffer\u2014because 0x500 + 0xFC00 = 0x10100, not 0x10000. This leads to an out-of-bounds write to memory of 0x100 bytes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-75733 aligncenter\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-17-300x178.png\" alt=\"\" width=\"300\" height=\"178\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-17-300x178.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-17-768x455.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-17-1024x607.png 1024w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-17-844x500.png 844w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-17.png 1438w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The preceding screenshot shows the memory state of the vmware-vmx.exe process before the out-of-bounds write happens.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-75734 aligncenter\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/Capture-18-300x213.png\" alt=\"\" width=\"300\" height=\"213\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-18-300x213.png 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-18-768x545.png 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-18-1024x727.png 1024w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-18-705x500.png 705w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/Capture-18.png 1419w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The preceding screenshot shows the memory state of the vmware-vmx.exe process after the out-of-bounds write, where 0x40E3070 is the memory after the new buffer ends (0x10000). After we sent the second packet, we successfully overwrote 0x100 bytes of memory at 0x40E3070.<\/p>\n<p>&nbsp;<\/p>\n<p>This post gives a brief overview of the RPC mechanism in VMware Workstation and how the RPC attack surface can be exploited to escape from the guest to the host operating system. In a series of posts, we will discuss each step of this exploitation in detail and demonstrate how these exploits can be chained together to achieve a complete VMware guest-to-host escape.<\/p>\n<p>RPC is not the only vector to attack VMware. In future posts, we will discuss other virtual machine attack surfaces, techniques, and exploits.<\/p>\n<p>&nbsp;<\/p>\n<p><em>The authors would like to thank Bing Sun for his valuable assistance throughout this analysis.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a&#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":[1814,5092,4827],"coauthors":[3973],"class_list":["post-75709","post","type-post","status-publish","format-standard","hentry","category-mcafee-labs","tag-computer-security","tag-virtual-machine","tag-vulnerability"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog<\/title>\n<meta name=\"description\" content=\"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating\" \/>\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=\"Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog\" \/>\n<meta property=\"og:description\" content=\"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\" \/>\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=\"2017-07-17T18:53:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-28T03:34:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic.png\" \/>\n\t<meta property=\"og:image:width\" content=\"808\" \/>\n\t<meta property=\"og:image:height\" content=\"177\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\"},\"author\":{\"name\":\"McAfee\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa\"},\"headline\":\"Analyzing a Patch of a Virtual Machine Escape on VMware\",\"datePublished\":\"2017-07-17T18:53:39+00:00\",\"dateModified\":\"2025-05-28T03:34:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\"},\"wordCount\":1598,\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\",\"keywords\":[\"computer security\",\"virtual machine\",\"vulnerability\"],\"articleSection\":[\"McAfee Labs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\",\"name\":\"Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\",\"datePublished\":\"2017-07-17T18:53:39+00:00\",\"dateModified\":\"2025-05-28T03:34:50+00:00\",\"description\":\"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage\",\"url\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\",\"contentUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#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\":\"Analyzing a Patch of a Virtual Machine Escape on VMware\"}]},{\"@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":"Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog","description":"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating","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":"Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog","og_description":"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating","og_url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/","og_site_name":"McAfee Blog","article_publisher":"https:\/\/www.facebook.com\/McAfee\/","article_author":"https:\/\/www.facebook.com\/McAfee\/","article_published_time":"2017-07-17T18:53:39+00:00","article_modified_time":"2025-05-28T03:34:50+00:00","og_image":[{"width":808,"height":177,"url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/07\/pic.png","type":"image\/png"}],"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\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#article","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/"},"author":{"name":"McAfee","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/47851fdb92fad9456152405839c92efa"},"headline":"Analyzing a Patch of a Virtual Machine Escape on VMware","datePublished":"2017-07-17T18:53:39+00:00","dateModified":"2025-05-28T03:34:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/"},"wordCount":1598,"publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png","keywords":["computer security","virtual machine","vulnerability"],"articleSection":["McAfee Labs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/","url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/","name":"Analyzing a Patch of a Virtual Machine Escape on VMware | McAfee Blog","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png","datePublished":"2017-07-17T18:53:39+00:00","dateModified":"2025-05-28T03:34:50+00:00","description":"This blog was written by Yakun Zhang. A virtual machine is a completely isolated guest operating system installation within a normal host operating","breadcrumb":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#primaryimage","url":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png","contentUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/07\/pic.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/analyzing-patch-of-a-virtual-machine-escape-on-vmware\/#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":"Analyzing a Patch of a Virtual Machine Escape on VMware"}]},{"@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\/75709","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=75709"}],"version-history":[{"count":2,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/75709\/revisions"}],"predecessor-version":[{"id":214509,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/75709\/revisions\/214509"}],"wp:attachment":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/media?parent=75709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/categories?post=75709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/tags?post=75709"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/coauthors?post=75709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}