About four years ago, the Rowhammer vulnerability in DRAM memory chips emerged. It came about by "hammering" -- many reads or write access -- a particular memory location causing a bit to change state in a completely different location.
It was thought that error-correcting code-style memory was resistant to this, since it stores extra -- or redundant -- information that the CPU uses to detect and repair these "bit flips."
Now, however, Security researchers from Vrije Universiteit Amsterdam have found out that Rowhammer attacks will work on error-correcting code (ECC) memory chips. It turns out that ECC is not a protection against this kind of attack.
The researchers posted in their blog that they first had to reverse engineer how ECC memory worked to determine this, since manufacturers don't want to give out details about it.
In their report, researchers used Intel Xeon E3-1270 v3 CPU (Haswell), AMD Opteron 6376 CPU (Bulldozer), Xeon E5-2650 v1 (Sandy Bridge), and Intel Xeon E5-2620 v1 CPU (Sandy Bridge) in their research. They did not name the memory DIMMs that they tested.
They found that ECC merely slows down the Rowhammer attack and is not enough to stop it.
ECC technology was designed to stop one bit flip caused by something out of the ordinary, such as a cosmic ray hitting a chip in a satellite. However, it has quirks. If it detects two bit flips, it makes the program crash because it cannot repair itself.
That's why ECC was thought to be a protection. A single Rowhammer bit flip would be corrected, while two bit flips break the system.
However, the researchers realized that if you got three bit flips to occur without accidentally getting two first and triggering a crash, you could bypass ECC.
Their method involved the discovery of a side channel that they could exploit in order to find out which bit flips have been ECC-corrected. As they wrote:
What we found is that we can detect that a bit has been corrected by means of a timing side channel. Simply put: it will typically take measurably longer to read from a memory location where a bitflips needs to be corrected, than it takes to read from an address where no correction was needed. Thus, we can try each bit in turn, until we find a word in which we could flip three bits that are vulnerable. The final step is then to make all three bits in the two locations different and hammer one final time, to flip all three bits in one go: mission accomplished.
The attack, which they call ECCploit, takes time, however. The simplest attack, in theory, can take 32 minutes. In a noisy environment, it can take up to one week. They also think that that the side-channel introduced by the error correction is observable on DDR4.
Since ECC is a reliability mechanism, they do not counsel removing it from routine use. But they do think that users should phase out memory/setup that is susceptible to Rowhammer.
Full details may be found in their technical write up "Exploiting Correcting Codes: On the Effectiveness of ECC Memory Against Rowhammer Attacks."
— Larry Loeb has written for many of the last century's major "dead tree" computer magazines, having been, among other things, a consulting editor for BYTE magazine and senior editor for the launch of WebWeek.