Cardano Leios 原型修复 Endorser Block 公告中的时序攻击
Cardano 开发者已修复 Leios 原型中的一处时序缺陷,该缺陷可能导致诚实节点彼此断开连接。该问题影响的是原型阶段的 Endorser Block 公告逻辑,从未属于当前 Cardano 主网协议的一部分。
By SongMarketCap
在开发者识别出涉及 Endorser Block 公告的时序攻击后,Cardano 的 Leios 原型已获得一项网络层面的修复。在特定条件下,拥有有效运营凭证的质押池可以发送经精确计时的公告,导致某个诚实节点与其链视图略微落后的另一诚实对等节点断开连接。
该修复已于 8 月 18 日合并进 Ouroboros Consensus 的leios-prototype分支,并在 8 月 25 日由 Intersect 的共识团队予以强调。随后 Blink Labs 在 Dingo 中实现了相应的防护。
Leios 的时序差异可能导致诚实节点断连
Ouroboros Leios 是 Cardano 规划中的扩容架构,旨在在保留底层共识协议安全性的同时提升交易吞吐量。
该设计的一部分使用 Endorser Block,它们与 Cardano 的 ranking 区块一起携带额外的交易数据。节点可以在完整区块数据到达之前先行公告某个 Endorser Block,从而更高效地在网络中传播信息。
所识别的问题与附在这些公告上的运营证书发行编号,简称 OCIN,有关。
两个诚实节点可能会在短时间内拥有不同的不可变链尖。进度更靠前的节点或许已经将较旧的 OCIN 视为已被吊销,而尚未达到相同不可变点的上游对等节点仍可合法地将其视为有效。
此前的原型逻辑可能会把使用该较旧 OCIN 的公告解读为无效行为,并与该上游对等节点断开连接。
最初的 GitHub 议题描述了攻击性质押池如何利用这一时序差异:在其 OCIN 即将变为不可变之前不久发送公告。由于该池在向链上放置新头部时可以递增其 OCIN,这一序列可以被用来触发诚实节点之间的断连。
该议题指出,在将公告逻辑视为适用于主网之前,必须修复这一行为。
新的 Leios 逻辑阻止断连
合并的修复改变了 Leios 节点在接收使用其自身不可变链尖已认定为已吊销的 OCIN 所发出的公告时的反应方式。
节点不再终止对等连接,而是在网络协议层面接受该消息。由于接收节点已经知道该 OCIN 已经过期,因此会忽略该公告,而非处理或继续转发。
这一改变允许诚实对等节点在短时间落后时不被归类为恶意。
开发者还记录了一个更为狭窄的残留情形,涉及泄露的历史 KES 密钥。被泄露的密钥在吊销后仍可能被用来向直接下游对等节点发送少量额外的伪造 Endorser Block 公告。
这些公告不会触发断连,也不会被进一步传播。开发讨论将其额外处理开销描述为极小,将该剩余行为视为不理想,但不至于阻碍当前原型的推进。
没有任何第一手证据表明该攻击路径曾影响 Cardano 主网。受影响的公告机制属于 Leios 原型,且修复被合并到其专用开发分支而非生产共识分支。
Dingo 采纳相同的 Leios 防护
Blink Labs 也已将过期 OCIN 的处理模型应用到其独立的 Cardano 节点实现 Dingo。
在开发者发现一条签名正确但已过期的公告仍可能被记录并转发后,关于 Dingo 的议题于 8 月 26 日开启。编号为 #3563 的拉取请求已于 8 月 27 日合并。
在更新后的实现中,针对过期或未知发行者的公告会被接受但不会关闭对等连接,同时不会被记录、处理或转发。新的公告仍按正常流程处理,并有回归测试覆盖多种 OCIN 状态。
Intersect 八月的开发更新还报告了对 Leios 链的db-analyser支持已扩展。该工具现在可以回放 Leios 链数据,并测量已认证的 Endorser Block 交易、其大小以及读取与应用所需时间。这使测试从吞吐量扩展到了分类账处理成本与资源行为。
针对过期公告的修复如今已覆盖两个实现。Ouroboros Consensus 于 8 月 18 日在原始 Leios 原型中更改了该行为,九天后 Dingo 也采纳了相应实现,使两套代码库在 Leios 进入生产部署之前就针对同一网络边界情况达成一致处理。