Gleb Natapov found a bug in KVM that allows code that runs in CPL3 (inside a guest) to modify memory in CPL0 (inside a guest). The bug is in x86 emulator code. When emulator accesses guest's memory on behalf of the gust's code it does this with the CPL0 privilege, so if emulated instruction is executed by unprivileged code it can still modify memory that otherwise is not accessible to it. To tak advantage of this vulnerability malicious code should trick KVM to emulate malicious instruction. KVM emulates IO and MMIO instructions, so if unprivileged process has access to some IO port or MMIO region (framebuffer for instance) the bug is very easy to use to modify arbitrary location in kernel memory.
Created attachment 386981 [details] Proposed patch
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2010:0088 https://rhn.redhat.com/errata/RHSA-2010-0088.html
This issue has been addressed in following products: Red Hat Enterprise Virtualization for RHEL-5 Via RHSA-2010:0095 https://rhn.redhat.com/errata/RHSA-2010-0095.html
Upstream commit: http://git.kernel.org/linus/1871c6020d7308afb99127bba51f04548e7ca84e