Cardano Leios Prototype Fixes Timing Attack in Endorser Block Announcements
Cardano developers have fixed a timing flaw in the Leios prototype that could cause honest nodes to disconnect from each other. The issue affected prototype Endorser Block announcement logic and was never part of the current Cardano mainnet protocol.
By SongMarketCap
Cardano’s Leios prototype has received a networking fix after developers identified a timing attack involving Endorser Block announcements. Under specific conditions, a stake pool with valid operational credentials could send a carefully timed announcement that caused an honest node to disconnect from another honest peer whose view of the chain was slightly behind.
The fix was merged into the leios-prototype branch of Ouroboros Consensus on August 18 and highlighted by Intersect’s Consensus team on August 25. Blink Labs subsequently implemented the corresponding protection in Dingo.
Leios Timing Difference Could Disconnect Honest Peers
Ouroboros Leios is Cardano’s planned scaling architecture designed to increase transaction throughput while retaining the security properties of the underlying consensus protocol.
Part of the design uses Endorser Blocks, which carry additional transaction data alongside Cardano’s ranking blocks. Nodes can announce an Endorser Block before the complete block data arrives, helping information propagate through the network more efficiently.
The identified issue involved the operational certificate issue number, or OCIN, attached to those announcements.
Two honest nodes can temporarily have different immutable chain tips. A more advanced node may already consider an older OCIN revoked, while an upstream peer that has not yet reached the same immutable point can still legitimately treat it as valid.
The previous prototype logic could interpret an announcement using that older OCIN as invalid behavior and disconnect the upstream peer.
The original GitHub issue describes how an attacking stake pool could exploit that timing difference by sending an announcement shortly before its OCIN became immutable. Because the pool could increment its OCIN when placing a new header on the chain, the sequence could be used to trigger disconnects between honest nodes.
The issue stated that the behavior needed to be fixed before the announcement logic could be considered suitable for mainnet.
New Leios Logic Stops the Disconnect
The merged fix changes how a Leios node reacts when it receives an announcement using an OCIN that its own immutable tip already considers revoked.
Instead of terminating the peer connection, the node accepts the message at the network protocol level. Because the receiving node already knows that the OCIN is stale, the announcement is ignored rather than processed or relayed further.
The change allows an honest peer to temporarily lag behind without being classified as malicious.
Developers also documented a narrower residual case involving leaked historical KES keys. A leaked key could still be used to send a small number of additional bogus Endorser Block announcements to immediate downstream peers after revocation.
Those announcements do not trigger disconnects and are not propagated further. The development discussion describes the additional processing cost as minimal and the remaining behavior as undesirable, but not a blocker for the current prototype.
There is no primary source evidence that this attack vector affected Cardano mainnet. The affected announcement mechanism belongs to the Leios prototype, and the fix was merged into its dedicated development branch rather than the production consensus branch.
Dingo Adopts the Same Leios Protection
Blink Labs has also applied the stale OCIN handling model to Dingo, its independent Cardano node implementation.
The Dingo issue was opened on August 26 after developers identified that a correctly signed but stale announcement could still be recorded and relayed. Pull request #3563 was merged on August 27.
Under the updated implementation, stale or unknown issuer announcements are accepted without closing the peer connection but are not recorded, processed or relayed. Fresh announcements continue through normal processing, with regression tests covering several OCIN states.
Intersect’s August development update also reported expanded db-analyser support for Leios chains. The tool can now replay Leios chain data and measure certified Endorser Block transactions, their size, and the time required to read and apply them. That extends testing beyond throughput into ledger processing costs and resource behavior.
The stale announcement fix now spans two implementations. Ouroboros Consensus changed the behavior in the original Leios prototype on August 18, while Dingo adopted its corresponding implementation nine days later, aligning how both codebases handle the same network edge case before Leios reaches production deployment.