Disclosure of the details of an integer overflow bug which causes a crash if a node is getting spammed addr messages continuously for a very long time (years). A fix was released on April 14th 2025 in Bitcoin Core v29.0.

This issue is considered Low severity.

Details

The address manager in Bitcoin Core uses a 32-bit identifier for each entry, incremented on every insertion. An earlier security advisory explained how it enabled an attacker to remotely trigger an assertion failure by spamming a node with addr messages until the 32-bit identifier overflow.

This was partially addressed in Bitcoin Core v22.0 by rate-limiting insertions in the address manager to 1 address per peer every 10 seconds. This made the attack a lot more expensive if not impractical: even with 1000 peers continuously attacking it would still take more than a year to get the 32-bit identifier to overflow.

The remaining, more expensive attack vector was addressed in Bitcoin Core version 29.0 by making the identifier a 64-bit identifier.

Attribution

Credit goes to Eugene Siegel for discovering and disclosing the vulnerability, and to Martin Zumsande for changing the identifier to 64-bit.

Timeline

  • 2021-06-21 - Initial report sent to security@bitcoincore.org by Eugene Siegel
  • 2021-07-19 - Rate limiting is merged in PR #22387
  • 2021-09-13 - v22.0 is released with rate-limiting
  • 2024-07-31 - Publication of the first security advisory
  • 2024-09-20 - Change to 64-bit identifier is merged in PR #30568
  • 2025-04-14 - Bitcoin Core v29.0 is released with the 64-bit identifier
  • 2025-04-28 - Public Disclosure