Nimiq is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross consensus algorithm. Prior to version 1.4.0, when LightBlockchain::rebranch() adopts a fork chain whose tip is a macro block (checkpoint or election), it only updates self.head but fails to update self.macrohead, self.electionhead, self.currentvalidators, or store the election header in the chainstore. This is in direct contrast with the full Blockchain::rebranch() at blockchain/src/blockchain/push.rs:504-518, which correctly updates all macro/election state when the new head is a macro block. After a rebranch to a macro block, the stale macrohead causes subsequent macro blocks pushed via push() to be verified against the wrong predecessor via verifymacrosuccessor(&this.macrohead). If the rebranch target was an election block, the stale currentvalidators causes every subsequent block to fail verifyvalidators(), completely stalling the light client's chain progression. This issue has been patched in version 1.4.0.
{
"cwe_ids": [
"CWE-841"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/46xxx/CVE-2026-46540.json",
"cna_assigner": "GitHub_M"
}