#38459 [BC-Low] erigon remote DoS

Submitted on Jan 3rd 2025 at 22:39:50 UTC by @gln for Attackathon | Ethereum Protocol

  • Report ID: #38459

  • Report Type: Blockchain/DLT

  • Report severity: Low

  • Target: https://github.com/ledgerwatch/erigon

  • Impacts:

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

Description

Brief/Intro

Erigon contains embedded consensus implementation called Caplin.

BlobSidecarsByRange handler does not validate incoming parameters.

Malformed p2p request allows an attacker to trigger infinite loop in erigon node.

Vulnerability Details

Let's look at the BlobSidecarsByRange p2p handler https://github.com/erigontech/erigon/blob/main/cl/sentinel/handlers/blobs.go#L32

  1. req.StartSlot and req.Count are not validated

  2. ReadCanonicalBlobkRoot() returns zero hash for invalid slot

  3. the 'for' loop continues to run

Basially, if req.StarSlot and req.Count are large enough, erigon could enter into an infinite loop.

Impact Details

Attacker could trigger an infinite loop in erigon node with a single malformed p2p request.

https://gist.github.com/gln7/c8106d435f0d1f3cde96f8d76e886e10

Proof of Concept

Proof of Concept

How to reproduce:

  1. get erigon source

  1. apply poc.patch (see gist link)

  2. run test:

Golang enters into an infite loop and starts to output messages like these:

Was this helpful?