That's what I'm wondering, and naturally would hope that physical memory
"rowhammering" would not be achievable through Xen/Qubes virtual memory.
But these blurbs from it make me wonder...
"We learned about the rowhammer problem from Yoongu Kim et al’s paper,
“Flipping Bits in Memory Without Accessing Them: An Experimental Study
of DRAM Disturbance Errors” (Yoongu Kim, Ross Daly, Jeremie Kim, Chris
Fallin, Ji Hye Lee, Donghyuk Lee, Chris Wilkerson, Konrad Lai, Onur
Mutlu).
They demonstrate that, by repeatedly accessing two “aggressor” memory
locations within the process’s virtual address space, they can cause bit
flips in a third, “victim” location. The victim location is potentially
outside the virtual address space of the process it is in a different
DRAM row from the aggressor locations, and hence in a different 4k page
(since rows are larger than 4k in modern systems)."
...
"To many security researchers, especially those who practice writing
proof-of-concept exploits, it is well known that bit flips can be
exploitable. For example, a 2003 paper explains how to use random bit
flips to escape from a Java VM. (See “Using Memory Errors to Attack a
Virtual Machine” by Sudhakar Govindavajhala and Andrew W. Appel.)"
...
"Our proof-of-concept exploits use the x86 CLFLUSH instruction, because
it’s the easiest way to force memory accesses to be sent to the
underlying DRAM and thus cause row hammering.
The fact that CLFLUSH is usable from unprivileged code is surprising,
because the number of legitimate uses for it outside of a kernel or
device driver is probably very small. For comparison, ARM doesn’t have
an unprivileged cache-flush instruction. (ARM Linux does have a
cacheflush() syscall, used by JITs, for synchronising instruction and
data caches. On x86, the i-cache and d-cache are synchronised
automatically, so CLFLUSH isn’t needed for this purpose.)
We have changed NaCl’s x86 validator to disallow CLFLUSH. Unfortunately,
kernels can’t disable CLFLUSH for normal userland code. Currently,
CLFLUSH can’t be intercepted or disabled, even using VMX (x86
virtualisation). (For example, RDTSC can be intercepted without VMX
support. VMX allows intercepting more instructions, including WBINVD and
CPUID, but not CLFLUSH.) There might be a case for changing the x86
architecture to allow CLFLUSH to be intercepted. From a security
engineering point of view, removing unnecessary attack surface is good
practice.
However, there might be ways of causing row hammering without CLFLUSH,
which might work on non-x86 architectures too..."
...
Comment: "This exploit technology can be definitely applied to
hypervisor, and cause privilege escalation to VMX root mode."
WhonixQubes