Modern memory is still vulnerable to Rowhammer vulnerabilities — Phoenix root privilege escalation attack proves that Rowhammer still smashes DDR5 security to bits
Neither TRR, ECC, nor ODECC can save you from this one.
Scientists from the Computer Security Group (COMSEC) at the ETH Zürich college, in conjunction with Google, have published a proof-of-concept attack on DDR5 RAM called Phoenix, with the CVE number 2025-6202. The new attack causes bit-flips in memory, leading to a set of vulnerabilities that includes high-level privilege escalation. Phoenix adeptly bypasses DDR5's preventive measures for Rowhammer-style attacks, and neither ECC nor ODECC (on-die ECC) are of help.
It's worth noting that COMSEC only tested the attacks on an AMD Zen 4 platform, against 15 SK hynix DDR5 DIMMs from 2021-2024. The team states it chose the largest DRAM vendor, as the analysis is time-intensive even with the help of dedicated FPGA test boards. Having said that, the research is part of a Google-led effort for better RAM security in cooperation with JEDEC, the consortium that defines memory standards. It's also not the first time that COMSEC has worked on RAM security, having previously cooperated with VUSec to create the TRRespass attack.
Phoenix is a mix-up and evolution of existing Rowhammer-style attacks that repeatedly "hammer" a set of RAM locations with reads, in a specific pattern, in a bid to force at least one bit to flip via electromagnetic interference. This allows for extracting data or modifying code to an attacker's preference. The scenario is concerning enough in desktops and workstations, but particularly worrying in large-scale servers hosting thousands of clients. You can download the proof-of-concept software at COMSEC's Phoenix GitHub repository if you want to test your systems.
Phoenix's creators tested specific scenarios and had a 100% success rate in replicating attacks that manipulate Page Table Entries (PTE), granting access to forbidden locations in memory; a 73% chance of extracting the SSH login keys from a virtual machine in the same server; and a 33% probability of straight up getting root access thanks to manipulating the in-memory binary for the sudo utility. The team replicated the privilege escalation scenario in the Rubicon suite in only 5 minutes and 19 seconds flat. COMSEC's researchers revealed their findings past June 6 to SK hynix, CPU vendors, and the major cloud platforms, and will publish their findings at the IEEE Security & Privacy 2026 conference.
There's no bulletproof mitigation for this issue yet — at least for the tested SK hynix DIMMs — but the researchers state that increasing the row refresh rate (tREFI) in the machine's UEFI by 3 times down to around 1.3 μs makes the attacks unlikely to succeed. However, that comes at a steep cost, as a benchmark with the SPEC CPU2017 suite revealed a nasty 8.4% performance hit. COMSEC says there's an impending BIOS update for AMD client systems to address this problem, but couldn't verify its effectiveness as of the date of its publication.
Google points out in a related blog post that DDR5's TRR (Target Row Refresh) and ECC/ODECC can't quite fix the problem as they're not deterministic. For example, TRR's mechanism of triggering a refresh of a memory row doesn't keep an exact count of the number of accesses to it, making it easy to exploit by increasing the attack surface. Meanwhile, even the mighty ODECC only corrects bit-flips when data is written, or after a certain time (usually hours), meaning that just keeping an attack going for a long while is enough.
Those circumstances led to the creation of the PRAC (Per-Row Activation Counting) JEDEC standard, first announced in April 2024 for a future DD5 revision. PRAC keeps an accurate count of sequential accesses to a memory row and alerts the host system if a limit is exceeded, so that mitigation measures (likely a refresh) are implemented. Predictably, the upcoming LPDDR6 standard is integrating PRAC from the get-go. Here's to hoping the new feature will finally put a stake through Rowhammer's heart.
Get Tom's Hardware's best news and in-depth reviews, straight to your inbox.
Follow Tom's Hardware on Google News to get our up-to-date news, analysis, and reviews in your feeds. Make sure to click the Follow button.

Bruno Ferreira is a contributing writer for Tom's Hardware. He has decades of experience with PC hardware and assorted sundries, alongside a career as a developer. He's obsessed with detail and has a tendency to ramble on the topics he loves. When not doing that, he's usually playing games, or at live music shows and festivals.
-
Li Ken-un I have an AMD Ryzen Pro machine with memory encryption turned on. I wonder if that confers any protection from rowhammer.Reply -
bit_user Nice article, Bruno Ferreira! Thanks & welcome!Reply
: )
I wonder whether Kernel Address Space Layout Randomization can be used to mitigate, or if x86 system architecture mandates it reside at a fixed address? According to wikipedia, page table entries are not currently subject to randomization, but it doesn't say they can't be.The article said:Phoenix's creators tested specific scenarios and had a 100% success rate in replicating attacks that manipulate Page Table Entries (PTE),
https://en.wikipedia.org/wiki/Address_space_layout_randomization#Limitations
I assume you meant "DDR"?The article said:Those circumstances led to the creation of the PRAC (Per-Row Activation Counting) JEDEC standard, first announced in April 2024 for a future DD5 revision.
The final point I'd mention is that this attack is not without symptoms. Many recent side-channel vulnerabilities involve spying, but not modifying the memory of the victim, and therefore have relatively low potential for detection. However, RowHammer is quite a violent and somewhat indiscriminate exploit, in that it's likely to cause side-effects (e.g. crashing processes or even kernel panics), by the time the attacker finally flips a bit that does something useful. Therefore, one bit of solace I think we can take is that close monitoring of hosts could probably detect and even isolate a victim, by the time the attacker achieves anything useful. -
setx Reply
From direct privilege escalation – maybe, from memory corruption – no.Li Ken-un said:I have an AMD Ryzen Pro machine with memory encryption turned on. I wonder if that confers any protection from rowhammer. -
bit_user Reply
Sadly, I'd assume not. I expect memory encryption simply changes the meaning of the bits, without affecting information density or adding any more integrity checks. Since RowHammer relies on somewhat randomly flipping bits until "something useful" happens, changing the meaning of specific bits has no real value as a defense.Li Ken-un said:I have an AMD Ryzen Pro machine with memory encryption turned on. I wonder if that confers any protection from rowhammer.
Memory compression might help a bit more, at least in so far as affecting layout variability and potentially increasing the amount of collateral damage from such an attack (though, I'm not sure if page tables would ever be subject to compression). If you cause a kernel panic or trigger other sorts of fault monitoring, then the actual success rate of the attack is compromised.
I wonder if another mitigation tactic could involve layering another level of ECC. So, what if you had in-band ECC atop out-of-band ECC? At least for critical in-memory structures that have fixed addresses? It would further increase the amount of time for a successful attack. In the meantime, the system would be throwing loads of ECC errors, which could quickly grab the attention of monitoring software. If the ECC errors weren't localized to a single DIMM, but spread evenly across all DIMMs, that would help distinguish RowHammer from a normal harware fault. -
pjmelect This is rubish row hammer assults do not work for many reasons, the main one being that if it did then computers would be crashing all over the place.Reply -
Li Ken-un Reply
That might be good enough. For some, a hard crash is better than continuing as if nothing were amiss.bit_user said:If you cause a kernel panic or trigger other sorts of fault monitoring, then the actual success rate of the attack is compromised. -
bit_user Reply
RowHammer doesn't happen by accident, which I think might be the point of misunderstanding. Naive code that repeatedly reads from or writes to the same memory location will simply hit the cache hierarchy instead of DRAM. That's what's saving us from this "crashing all over the place" scenario you describe.pjmelect said:This is rubish row hammer assults do not work for many reasons, the main one being that if it did then computers would be crashing all over the place.
In order to mount a RowHammer attack that has any chance of success, the attacker must take explicit measures to circumvent the cache hierarchy.
BTW, there's a RowHammer test in the Memtest86 program from PassMark. I've never seen it fail, in several systems I've run it on, which suggests it's not a very strong implementation. It's described, here:
"Starting from MemTest86 v6.2, potentially two passes of row hammer testing are performed. On the first pass, address pairs are hammered at the highest possible rate. If errors are detected on the first pass, errors are not immediately reported and a second pass is started. In this pass, address pairs are hammered at a lower rate deemed as the worst case scenario by memory vendors (200K accesses per 64ms). If errors are also detected in this pass, the errors are reported to the user as normal. However, if only the first pass produces an error, a warning message is instead displayed to the user."
https://www.memtest86.com/tech_individual-test-descr.html#hammer
Yup, it turns out they only tell you if the memory can't survive the JEDEC target rate of 200k accesses per 64 ms, which is much lower than the peak achievable rate. I'll bet they got too many complaints from memory vendors, when they exposed the results of the full-rate testing.