For the complete documentation index, see llms.txt. This page is also available as Markdown.

74777 bc medium base node remote denial of service

Submitted on Apr 24th 2026 at 20:05:08 UTC by @quasar for Audit Comp | Base Azul

  • Report ID: #74777

  • Report Type: Blockchain/DLT

  • Report severity: Medium

  • Target: https://github.com/base/base/tree/v0.8.0-rc.24

  • Impacts:

    • Shutdown of greater than 10% or equal to but less than 30% of network processing nodes without brute force actions, but does not shut down the network

    • Shutdown of greater than or equal to 30% of network processing nodes without brute force actions, but does not shut down the network

    • Increasing network processing node resource consumption by at least 30% without brute force actions, compared to the preceding 24 hours

Description

Brief/Intro

The Base node stores a map entry in peerstore for every peer that completes a libp2p identify handshake with it.

Entries are added on every successful inbound identify exchange, but never removed on disconnect.

A remote attacker can make this map grow without limit by repeatedly connecting, completing the handshake, and disconnecting with a fresh peer identity each time. The node eventually runs out of memory.

Vulnerability Details

Let's look at the code:

Basically, identify::Event::Received fires automatically on every new connection - it's part of the standard libp2p handshake.

As you can see, for every new connection self.peerstore map will be updated.

The only place, where entries are remove from self.peerstore is handle_peer_monitoring function.

But:

  1. flag p2p.ban.peers is false by default

  2. It iterates over connected_peers(), so even when enabled, it only removes peers whose gossipsub score is below -100.

A peer that never sends any gossip traffic never accumulates a negative score.

Attack scenario

From any public IP:

  1. Generate a fresh secp256k1 keypair

  2. Open a TCP connection to the victim and perform a noise handshake

  3. Wait for the identify exchange

  4. Drop the connection

  5. Go to step 1

Impact Details

A remote attacker could trigger an out-of-memory crash on a typical Base node within minutes to a few hours.

Proof of Concept

1

Save the test

Save this test as crates/consensus/gossip/tests/peerstore_leak.rs, gist link - https://gist.github.com/lgprbs/9e5190297a196dbb6a9d0b6e8da9bf11

2

Run the test

Was this helpful?