CVE-2026-34066nimiq-blockchain是为Nimiq Rust实现提供持久化块存储的组件。在1.3.0版本之前,`HistoryStore::put_historic_txns`函数使用`assert!`宏来强制执行关于`HistoricTransaction.block_number`的不变量。在历史同步过程中,恶意对等节点可以通过发送畸形的历史列表数据,破坏这些不变量并触发断言失败,导致程序崩溃。由于该崩溃发生在后续的根值校验之前,攻击者可利用此漏洞造成拒绝服务攻击。
该漏洞源于nimiq-blockchain中对历史同步数据处理的不当验证机制。受影响版本在`HistoryStore::put_historic_txns`方法中依赖`assert!`宏来确保`HistoricTransaction.block_number`位于推送的宏块内且处于同一纪元。然而,`extend_history_sync`函数的执行逻辑存在缺陷:它先调用`this.history_store.add_to_history(..)`处理数据,之后才比对计算出的历史根值与宏块头部的`block.history_root()`。攻击者可利用这一时序差,在网络同步阶段向受害者节点发送恶意构造的、违反不变量的历史数据切片。这会直接触发`assert!`宏,导致Rust程序因panic而异常终止,从而实现拒绝服务攻击。