W o r l d . C r y p t o . G l o b a l

Loading

Welcome at World Crypto Global. This portal is packed with useful content and resources to built out your own crypto skills. WorldCrypto is a site member of Gabriel Vega Network.

Contact Info

Bitcoin Core

United States

Web Site: Bitcoin Core

Language: English (United States)
Category: Blog
Total News: 359
Total Read: 0
Apr 29, 2025 07:25

CVE-2024-52919 - Remote crash due to addr message spam (part 2)

Disclosure of the details of an integer overflow bug which causes a crash if a node is gettingspammed addr messages continuously for a very long time (years). A fix was released on April 14th2025 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 everyinsertion. An earlier securityadvisory explained how itenabled an attacker to remotely trigger an assertion failure by spamming a node with addr messagesuntil the 32-bit identifier overflow.

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

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

Attribution

Credit goes to Eugene Siegel for discovering and disclosing the vulnerability, and to MartinZumsande 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 identifer is merged in PR #30568
  • 2025-04-14 - Bitcoin Core v29.0 is released with the 64-bit identifier
  • 2025-04-28 - Public Disclosure

Apr 15, 2025 07:25

Bitcoin Core 29.0 released

Bitcoin Core version 29.0 is now available for download. See the release notes for more information about thebug fixes in this release.

With the release of this new major version, versions 26.x and older are atMaintenance End and will no longer receive updates. In accordance with thesecurity policy, two weeks after this release, medium andhigh severity vulnerabilities affecting versions 26.x (if any) will bedisclosed. Additionally, low severity vulnerabilities affecting versions 28.x(if any) will be disclosed.

Feb 26, 2025 07:30

CVE-2024-52919 - Remote crash due to addr message spam

Disclosure of the details of an integer overflow bug which causes an assertioncrash, a fix for which was released on September 14th, 2021 in Bitcoin Coreversion v22.0.

This issue is considered High severity.

Details

CAddrMan has a 32-bit nIdCount field that is incremented on every insertioninto addrman, and which then becomes the identifier for the new entry. Bygetting the victim to insert 232 entries (through e.g. spamming addrmessages), this identifier overflows, which leads to an assertion crash.

Attribution

Credit goes to Eugene Siegel for discovering and disclosing the vulnerability,and to Pieter Wuille for fixing the issue inhttps://github.com/bitcoin/bitcoin/pull/22387.

Timeline
  • 2021-06-21 - Initial report sent to security@bitcoincore.org by Eugene Siegel
  • 2021-07-19 - Fix is merged (https://github.com/bitcoin/bitcoin/pull/22387)
  • 2021-09-13 - v22.0 is released
  • 2024-07-31 - Public disclosure

Feb 26, 2025 07:30

CVE-2024-52917 - Infinite loop bug in the miniupnp dependency

Disclosure of the impact of an infinite loop bug in the miniupnp dependency onBitcoin Core, a fix for which was released on September 14th, 2021 in BitcoinCore version v22.0.

This issue is considered Low severity.

Details

Miniupnp, the UPnP library used by Bitcoin Core, would be waiting upondiscovery for as long as it receives random data from a device on the network.In addition it would allocate memory for every new device information. Anattacker on the local network could pretend to be a UPnP device and keepsending bloated M-SEARCH replies to the Bitcoin Core node until it runs out ofmemory.

Only users running with the -miniupnp option would have beenaffected by this bug as Miniupnp is otherwise turned off by default.

Attribution

Credit goes to Ronald Huveneers for reporting the infinite loop bug to theminiupnp project, and to Michael Ford (Fanquake) for the report to the BitcoinCore project along with a PoC exploit to trigger an OOM and a pull request tobump the dependency (containing the fix).

Timeline
  • 2020-09-17 - Initial report of infinite loop bug to miniupnp by Ronald Huveneers
  • 2020-10-13 - Initial report sent to security@bitcoincore.org by Michael Ford
  • 2021-03-23 - Fix is merged (https://github.com/bitcoin/bitcoin/pull/20421)
  • 2021-09-13 - v22.0 is released
  • 2024-07-31 - Public disclosure

Feb 26, 2025 07:30

CVE-2019-25220 - Memory DoS due to headers spam

Before Bitcoin Core v24.0.1, attackers could spam nodes with low-difficulty headers chains, whichcould be used to remotely crash peers.

This issue is considered High severity.

Details

Bitcoin Core stores the blockchain headers in memory. This makes it susceptible to being DoSed, byhaving it download and store extremely long chains of headers, even if they are of low difficulty.It is important to note that once crafted, an attack chain could be reused to crash any node on thenetwork.

The possibility of using this to attack nodes has long been known, and was the primary reason whythe checkpoint system was still in place: making an attacker start an attack at the last checkpointmakes it far more costly than starting at the genesis block. However, over time, with decreasinghashrate costs, even this mitigation became less effective.

This attack was independently discovered and reported to the Bitcoin Core project in January 2019 byDavid Jaenson, who suggested introducing newer checkpoints as a practical mitigation. However:

  1. This still leaves nodes performing IBD with no protection before they receive checkpoint blocks.
  2. It relies on the ecosystem semi-regularly adopting updated software with new checkpoints, apractice which Bitcoin Core contributors have long been uncomfortable with.

It later got increased attention when Braydon Fuller posted his Chain width expansionwriteup to thebitcoin-dev mailing list in October 2019. He had previously responsibly reported it to the BitcoinCore security list. The suggested approach was not adopted in Bitcoin Core due to concerns aboutnetwork convergence when limiting the number of parallel chains.

At the time, the computational cost of creating a huge low-difficulty headers chain was equal toabout 32.28% of mining one block at the tip. That is a cost of about 4.12 BTC since the block rewardthen was about 12.77 BTC.

By February 2022, the cost of the attack had dropped further to around 14.73% of the cost of mininga block, and this prompted investigation of alternative solutions. If unaddressed, the cost today(September 2024) would just be 4.44% of a block. These figures translate to a cost of about 1.07 BTCand 0.14 BTC respectively, given the block reward at these dates.

A protection against this DoS was implemented in Bitcoin Core PR#25717, whereby the node will first verify apresented chain has enough work before committing to store it. With that, Bitcoin Core no longerrelies on having checkpoints to protect against any known attacks.

Attribution

Credit goes to David Jaenson and Braydon Fuller for independently re-discovering the attack,estimating its cost and suggesting modifications.

Credit goes to Suhas Daftuar and Pieter Wuille for researching a satisfying fix and implementing it.

Timeline
  • 2010-07-17 - Bitcoin 0.3.2 is released, which introduces checkpoints. They protect among otherthings against low-difficulty block spam.
  • 2011-11-21 - Bitcoin 0.5.0 is released, which skips script validation for blocks before the lastcheckpoint. This makes the role of checkpoints even more security-critical.
  • 2014-04-09 - Block 295000 is mined, which becomes the last Bitcoin Core checkpoint. The protectionoffered by checkpoints against block spam starts eroding from this point on as hashrate costsdecrease.
  • 2015-02-16 - Bitcoin Core 0.10.0 is released, with headers-first synchronization. This weakens thelow-difficulty block spam attack to a block header spam attack.
  • 2017-03-08 - Bitcoin Core 0.14.0 is released, which disentangles the skipping of script validationfrom checkpoints, leaving them only relevant for protecting against block header spam.
  • 2019-01-28 - David Jaenson reports this issue to the Bitcoin Core security mailing list.
  • 2019-09-18 - Braydon Fuller emails the Bitcoin Core security list with a paper titled BitcoinChain Width Expansion Denial-of-ServiceAttacks, which discusses the dangers ofblock and block header spam, a cost analysis, and a proposed solution.
  • 2019-09-26 - Suhas Daftuar replies to Braydon Fuller that its a known issue, and invites him topost his writeup to the bitcoin-dev mailing list.
  • 2019-10-04 - Braydon Fuller sends his paper to the bitcoin-dev mailing list.
  • 2019-10-31 - In response to the above events, Suhas Daftuar opens PR#17332 with an earlier but impractical proof ofconcept he worked on to improve the situation, with the hope of causing more discussion on thetopic.
  • 2022-02 - Suhas Daftuar and Pieter Wuille discuss this issue and estimate that the cost of thisattack has now actually become so low that it warrants immediate action, and the need to avoidtalking about it publicly.
  • 2022-06-22 - Suhas Daftuar opens PR #25454 aspreparatory work toward implementing a fix.
  • 2022-06-22 - Suhas Daftuar messages a group of long-term contributors detailing the attack, itscost and the fix Pieter Wuille and him have been working on.
  • 2022-07-26 - Suhas Daftuar opens PR #25717,co-authored with Pieter Wuille, which implements the fix.
  • 2022-08-30 - PR #25717 is merged.
  • 2022-10-21 - Niklas Gögges PR #26355 is merged,which fixes a bug in the headers pre-synchronization step that was introduced in PR #25717.Without this, it would still have been possible to spam block headers. The discovery of this bug,and the possibility of potential undiscovered ones, is the reason why the old checkpoints have notbeen removed entirely yet.
  • 2022-12-12 - Bitcoin Core 24.0.1 is released with the fix.
  • 2023-12-07 - The last vulnerable version of Bitcoin Core (23.2) goes end of life.
  • 2024-09-18 - Public disclosure.

Feb 26, 2025 07:30

CVE-2024-52918 - Crash using malicious BIP72 URI

Bitcoin-Qt could crash upon opening a BIP72 URI.

This issue is considered Medium severity.

Details

BIP72 extends the BIP21 URI schemewith an r parameter to fetch a payment request from. An attacker could simply point the URLcontained in the r parameter to a very large file, for which Bitcoin-Qt would try to allocateenough memory and crash.

The victim could get tricked into opening a rogue payment request. The large download would happenin the background with little to no output in the GUI until the application runs out of memory.

Attribution

Credits go to Michael Ford (Fanquake) for responsibly disclosing the issue and providing a PoC.

Timeline
  • 2019-08-12 Michael Ford reports the bug to Cory Fields and Wladimir Van Der Laan
  • 2019-10-16 Michael Ford opens PR #17165 to get rid of BIP70 support entirely
  • 2019-10-26 Michaels PR is merged into Bitcoin Core
  • 2020-06-03 Bitcoin Core version 0.20.0 is released
  • 2021-09-13 The last vulnerable Bitcoin Core version (0.19.x) goes EOL
  • 2024-07-03 Public disclosure

Feb 26, 2025 07:30

CVE-2024-52920 - DoS using huge GETDATA messages

A malformed GETDATA message could trigger an infinite loop on the receiving node, using 100% ofthe CPU allocated to this thread and not making further progress on this connection.

This issue is considered Low severity.

Details

Before Bitcoin Core 0.20.0, an attacker (or buggy client, even) could send us a GETDATA messagethat would cause our net_processing thread to start spinning at 100%, and not make progressprocessing messages for the attacker peer anymore. It would still make progress processing messagesfrom other peers, so it is just a CPU DoS with low impact beyond that (not making progress forattacker peers is a non-issue). It also increases per-peer long-term memory usage up by 1.5 MB perattacker peer.

John Newbery opened PR #18808 to fix this issue byonly disclosing the lack of progress.

Attribution

Credits to John Newbery for finding this bug, responsibly disclosing it and fixing it.

Timeline
  • 2020-04-29 John Newbery opens #18808
  • 2020-05-08 John Newbery reports his finding by email
  • 2020-05-12 #18808 is merged
  • 2020-06-03 Bitcoin Core version 0.20.0 is released with a fix
  • 2021-09-13 The last vulnerable Bitcoin Core version (0.19.x) goes EOL
  • 2024-07-03 Public disclosure.

Feb 26, 2025 07:30

CVE-2024-52916 - Memory DoS using low-difficulty headers

After Bitcoin Core 0.12.0 and before Bitcoin Core 0.15.0 a node could be spammed with minimumdifficulty headers, which could possibly be leveraged to crash it by OOM.

This issue is considered Medium severity.

Details

Before the introduction of headerspre-synchronisation, nodes relied exclusively oncheckpoints to avoid getting spammed by low-difficulty headers.

In Bitcoin Core 0.12.0 a check for headers forking before the last checkpoints height was moved toafter storing the header in mapBlockIndex. This allowed an attacker to grow the map unboundedly byspamming headers whose parent is the genesis block (which only need difficulty 1 to create), as suchblocks bypassed the checkpoint logic.

Attribution

Credits to Cory Fields for finding and responsibly disclosing the bug.

Timeline
  • 2017-08-08 Cory Fields privately reports the bug
  • 2017-08-11 Pieter Wuille opens PR #11028 to fix it
  • 2017-08-14 PR #11028 is merged
  • 2017-09-14 Bitcoin Core version 0.15.0 is released with a fix
  • 2018-10-03 The last vulnerable version of Bitcoin Core (0.14.3) goes end of life
  • 2024-07-03 Public disclosure.

Feb 26, 2025 07:30

CVE-2024-52915 - Memory DoS using huge INV messages

A node could be forced to allocate a significant amount of memory upon receiving a specially craftedINV message. This was particularly an issue for nodes with little available memory or a largenumber of connections.

This issue is considered Medium severity.

Details

An INV message filled with 50,000 block items could cause 50,000 getheaders responses to be sentin a single ProcessMessages() call. Each response contains a locator and is around 1 kB. All wouldbe put into the send buffer at once. The attacker could just refuse to receive data to prevent the50 MB buffer from draining.

John Newbery opened PR #18962 to fix this issuepretexting a bandwidth gain from sending a single GETHEADERS per received INV.

Attribution

Credits to John Newbery for finding this bug, responsibly disclosing it and fixing it.

Timeline
  • 2020-05-08 John Newbery reports his finding by email
  • 2020-05-12 John Newbery opens #18962
  • 2020-05-14 #18962 is merged
  • 2020-06-03 Bitcoin Core version 0.20.0 is released with a fix
  • 2021-09-13 The last vulnerable Bitcoin Core version (0.19.x) goes EOL
  • 2024-07-03 Public disclosure.

Feb 26, 2025 07:30

CVE-2024-52914 - Significant DoS due to orphan handling

A node could be stalled for hours when processing the orphans of a specially crafted unconfirmedtransaction.

This issue is considered High severity.

Details

After accepting a transaction into its mempool, the node would go through its cache of orphantransactions to find if this new accepted transaction makes it possible to accept any. This searchwas quadratic: for each output in the newly accepted transaction it would go through all cachedorphan transactions (limited to 100). By specially crafting the orphan transactions to be invalidyet expensive to validate a node could be stalled for several hours.

The stall was fixed by Pieter Wuille in PR #15644by interrupting the orphan resolution to process new messages when a match is found (whether theorphan turns out to be valid or not).

Attribution

Credits to sec.eine for responsibly disclosing the bug and providing feedback on the fix.

Timeline
  • 2019-03-19 sec.eine reports the issue to Greg Maxwell by email
  • 2019-03-21 Greg Maxwell responds with information about the proposed patch
  • 2019-03-22 sec.eine gives feedback on the patch (seems solid and [..] doesnt attract attention)
  • 2019-03-22 Pieter Wuille opens PR #15644
  • 2019-04-01 PR #15644 is merged
  • 2019-05-18 Bitcoin Core version 0.18.0 is released with a fix
  • 2020-07-22 The issue is partially disclosed during a PR review club
  • 2020-08-01 The last vulnerable Bitcoin Core version (0.17.x) goes EOL
  • 2024-07-03 Public disclosure.

Your Crypto Gateway

Claim 1,000
Free WCG Coins

World Crypto Global opens the door to digital freedom for everyone.
Manage your free WCG Coins securely—where simplicity meets global accessibility.

11 bn

FREE CRYPTO COINS

8.9 bn

AVAILABLE FOR RESERVATION

2.1 bn+

ALREADY ALLOCATED

× WCG Coin

🎉 Get 1,000 WCG Coins

No fees. No catch. Your crypto journey starts here.