In a computing device executing a hypervisor hosting a secure virtual machine and an unsecure virtual machine, a method for redirecting an access request to the unsecure virtual machine, comprising: intercepting, by a control virtual machine hosted by the hypervisor executing on the computing device, a request to access an unsecure resource, the unsecure resource comprising one of: a file, an application and an uniform resource locator; determining, by the control virtual machine, that the request originates from the secure virtual machine executing on the computing device; redirecting, by the control virtual machine responsive to the determination, the request to the unsecure virtual machine executing on the computing device; and accessing, via the unsecure virtual machine, the requested unsecure resource; wherein a first virtual machine, being a first one of the secure virtual machine, the unsecure virtual machine and the control virtual machine, and a second virtual machine, being a second one of the secure virtual machine, the unsecure virtual machine and the control virtual machine, communicate with one another via a secure communications channel established between the first virtual machine and the second virtual machine, and wherein establishing the secure communications channel comprises: selecting, by the first virtual machine, a region of memory to monitor; writing, by the second virtual machine, a predetermined data string to the selected memory region; detecting, by the first virtual machine, the predetermined data string written by the second virtual machine; in response to detecting the predetermined data string, locking, by the first virtual machine, the selected memory region; and sending, by the first virtual machine, an interrupt to the second virtual machine to indicate that the communication channel is established and ready for secure transfer of data by reading and/or writing data from/to the memory region by the first and/or second virtual machines. intercepting, by a control virtual machine hosted by the hypervisor executing on the computing device, a request to access an unsecure resource, the unsecure resource comprising one of: a file, an application and an uniform resource locator; determining, by the control virtual machine, that the request originates from the secure virtual machine executing on the computing device; redirecting, by the control virtual machine responsive to the determination, the request to the unsecure virtual machine executing on the computing device; and accessing, via the unsecure virtual machine, the requested unsecure resource; wherein a first virtual machine, being a first one of the secure virtual machine, the unsecure virtual machine and the control virtual machine, and a second virtual machine, being a second one of the secure virtual machine, the unsecure virtual machine and the control virtual machine, communicate with one another via a secure communications channel established between the first virtual machine and the second virtual machine, and wherein establishing the secure communications channel comprises: selecting, by the first virtual machine, a region of memory to monitor; writing, by the second virtual machine, a predetermined data string to the selected memory region; detecting, by the first virtual machine, the predetermined data string written by the second virtual machine; in response to detecting the predetermined data string, locking, by the first virtual machine, the selected memory region; and sending, by the first virtual machine, an interrupt to the second virtual machine to indicate that the communication channel is established and ready for secure transfer of data by reading and/or writing data from/to the memory region by the first and/or second virtual machines. selecting, by the first virtual machine, a region of memory to monitor; writing, by the second virtual machine, a predetermined data string to the selected memory region; detecting, by the first virtual machine, the predetermined data string written by the second virtual machine; in response to detecting the predetermined data string, locking, by the first virtual machine, the selected memory region; and sending, by the first virtual machine, an interrupt to the second virtual machine to indicate that the communication channel is established and ready for secure transfer of data by reading and/or writing data from/to the memory region by the first and/or second virtual machines.