Skip to content

cl/beacon: a null blobs bundle from an external execution layer panics block production #23299

Description

@lystopad

produceBeaconBody dereferences the blobs bundle without checking it, immediately after a successful payload collection:

if len(bundles.Blobs) != len(bundles.Proofs) || ...

The in-process execution client always returns a non-nil bundle, so this is unreachable there. The remote engine-API client forwards resp.BlobsBundle unvalidated, so an external execution layer that answers engine_getPayload with a null blobsBundle produces a nil-pointer dereference.

It happens inside the goroutine that builds the execution payload, so it is not recovered: the panic takes the process down rather than failing the one proposal.

Reported by @yperbasis while reviewing #23274, recorded separately as it predates that change.

Metadata

Metadata

Assignees

Labels

CaplinCaplin: Consensus Layer, Beacon API

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions