Developer reviewing smart contract architecture diagrams on a glass wall in a modern WeWork space, standing desk in background, natural industrial aesthetic, candid engineering moment.
Protocols

Cross-Contract Reentrancy and Composability Attacks

A deep dive into security incidents where the complex interaction between Rocket Pool's core contracts was exploited through reentrancy or composability flaws, detailing the specific call paths, root causes, and remediation strategies.
introduction
SYSTEMIC RISK PATTERNS

Introduction

Analysis of cross-contract reentrancy and composability attack vectors that exploit the interaction logic between Rocket Pool's core contracts.

Cross-contract reentrancy and composability attacks represent a class of vulnerability that arises not from a single contract's logic, but from the unintended interaction between multiple trusted contracts within the Rocket Pool protocol. Unlike a simple reentrancy on a token, these attacks exploit the complex, multi-step call paths that orchestrate minipool lifecycle events, rETH minting, and RPL staking operations. An attacker manipulates the ordering of external calls or the intermediate state between contract invocations to extract value, corrupt accounting, or lock funds.

The classic attack surface involves the rocketMinipool contracts, which make external calls to rocketNetworkPrices for ETH/RPL ratios and to rocketTokenRETH for minting. A composability flaw could allow an attacker to re-enter the minipool's stake or finalize functions after the price oracle is consulted but before the minipool's state is updated, effectively double-counting collateral or bypassing bonding requirements. Similarly, the interaction between rocketNodeStaking and rocketMinipoolQueue during node operator registration creates a state transition window that, if exploited, could allow an operator to claim RPL rewards on a minipool that has already been marked for withdrawal.

Auditors and protocol developers must model these call paths as state machines with external trust boundaries. The fix for these vulnerabilities typically involves enforcing the checks-effects-interactions pattern across the entire composable call chain, not just within a single contract. Rocket Pool's use of ReentrancyGuard modifiers and the strategic placement of state updates before external calls are direct mitigations. For integrators building on Rocket Pool, understanding these systemic risk patterns is critical—a seemingly safe integration with a single contract can become an attack vector when composed with other protocol functions. Chainscore Labs provides composability risk assessments that map these cross-contract call paths and identify latent reentrancy surfaces before they are exploited.

CROSS-CONTRACT REENTRANCY AND COMPOSABILITY ATTACKS

Incident Quick Facts

A structured overview of the systemic risks, failure modes, and affected parties in cross-contract reentrancy and composability attacks targeting Rocket Pool's minipool, rETH, and RPL staking contracts.

Risk AreaFailure ModeAffected ActorsMitigation Action

Minipool Finalization

Reentrancy during minipool creation or finalization allows an attacker to manipulate the deposit count or steal ETH before the minipool is locked.

Node Operators, Deposit Pool, rETH Holders

Audit state-changing functions for CEI pattern violations; implement reentrancy guards on minipool lifecycle transitions.

rETH Minting/Burning

A composability attack manipulates the rETH/ETH exchange rate during a mint or burn by reentering the pricing oracle mid-transaction.

rETH Holders, DEXs, Lending Protocols

Verify oracle update logic is isolated from token transfer callbacks; use pull-over-push patterns for reward distributions.

RPL Staking Contract

Reentrancy in the RPL staking or withdrawal function allows an attacker to drain staked RPL or claim rewards multiple times.

Node Operators, RPL Stakers

Ensure RPL staking operations complete all state changes before external calls; use OpenZeppelin's ReentrancyGuard on all staking paths.

Network Price Oracle

A malicious contract reenters the network price update function to create a stale or manipulated price, affecting minipool collateralization checks.

Node Operators, Liquidators, rETH Holders

Separate oracle update logic from any external call context; implement a time-weighted average price (TWAP) mechanism.

Smoothing Pool Rewards

An attacker claims rewards and reenters the distribution function before their balance is deducted, draining the smoothing pool.

Smoothing Pool Participants, Node Operators

Apply the checks-effects-interactions pattern strictly in reward distribution; use a Merkle-based claim system to isolate state changes.

Cross-Protocol Composability

A flash loan or multi-protocol call sequence exploits Rocket Pool's interaction with an external DeFi protocol, manipulating collateral ratios or triggering unfair liquidations.

DeFi Integrators, Lending Protocols, Liquidators

Conduct formal verification of cross-protocol call paths; establish circuit breakers for large or rapid collateral changes.

Withdrawal Address Setting

Reentrancy during the one-time setting of a validator's withdrawal address could redirect future ETH withdrawals to an attacker.

Node Operators, Validators

Ensure the withdrawal address setter is a one-way, non-reentrant function with no external calls before state finalization.

technical-context
CROSS-CONTRACT CALL PATH ANALYSIS

Root Cause Pattern: The Composability Attack Surface

Rocket Pool's architecture creates a complex web of interdependent contracts where external calls during sensitive state transitions have historically been the primary attack vector.

The core vulnerability pattern in Rocket Pool's composability attacks stems from the protocol's fundamental design: minipool creation, staking, and reward distribution require coordinated state changes across multiple contracts including the RocketMinipoolManager, RocketNetworkPrices, and RocketTokenRETH. When these contracts make external calls to untrusted addresses—such as transferring ETH to a node operator during minipool creation or minting rETH to a depositor—before completing all internal state updates, they expose a reentrancy window. Attackers exploit this window by deploying malicious contracts that re-enter the protocol mid-transaction, manipulating the not-yet-updated state to drain funds, mint unbacked rETH, or extract excess RPL rewards.

The most dangerous call paths involve the RocketDepositPool and RocketTokenRETH interaction during deposits, where the rETH exchange rate is computed from the current network state. If an attacker can reenter and alter the deposit pool balance or the total rETH supply between the rate calculation and the mint operation, they can mint rETH at a manipulated, favorable rate. Similarly, minipool finalization and withdrawal processes that distribute ETH to node operators before updating the minipool's internal status have been exploited to drain the ETH multiple times. These are not theoretical concerns—the protocol's own security history and audits have repeatedly identified and patched such cross-contract reentrancy vectors, often by restructuring state changes to follow the checks-effects-interactions pattern or by implementing reentrancy guards like OpenZeppelin's ReentrancyGuard on vulnerable functions.

For integrators and auditors, the operational lesson is that any external call made by a Rocket Pool contract during a state-modifying function must be treated as a potential reentrancy point. This includes not only direct ETH transfers but also calls to rETH.transfer(), RPL.transfer(), or any user-supplied address. The protocol's security posture depends on rigorous enforcement of the invariant that all internal accounting is finalized before interacting with external contracts. Teams building on Rocket Pool—whether as node operators, DeFi protocols integrating rETH, or wallet providers—should map the full call graph of any transaction they initiate and verify that the contracts they interact with have been audited for composability risks. Chainscore Labs can assist with protocol impact assessments that trace these call paths and identify residual reentrancy exposure in new integrations or upgrade proposals.

CROSS-CONTRACT REENTRANCY AND COMPOSABILITY ATTACKS

Affected Systems and Stakeholders

Node Operator Impact

Node operators are the primary victims in composability attacks that exploit the minipool lifecycle. A reentrancy bug in the stake() or finalize() functions can allow an attacker to manipulate the recorded debt or bond amount, directly stealing ETH from the operator's bond.

Immediate Actions:

  • Monitor Smartnode release notes for mandatory upgrades that patch known reentrancy vectors.
  • Verify the integrity of your minipool's state on-chain after any reported incident, specifically checking the user_deposit_balance and your bonded ETH amount.
  • Use simulation tools before interacting with new or upgraded peripheral contracts that integrate with your minipool.

Operational Risk: A successful exploit can lead to a total loss of your bonded ETH and RPL, not just a partial slashing. Operators should factor this tail risk into their capital allocation and consider the protocol's incident response history.

implementation-impact
DEFENSE-IN-DEPTH FOR COMPOSABILITY RISKS

Remediation and Fix Patterns

The systemic fixes Rocket Pool and the broader Ethereum ecosystem have adopted to neutralize cross-contract reentrancy and composability attack vectors. These patterns are now standard for any protocol integrating with Rocket Pool's minipool, rETH, or RPL staking contracts.

CROSS-CONTRACT REENTRANCY AND COMPOSABILITY ATTACKS

Systemic Risk Matrix

Mapping the systemic failure modes, affected actors, and required actions arising from cross-contract reentrancy and composability exploits within the Rocket Pool protocol.

Risk AreaFailure ModeAffected ActorsMitigation and Action

Minipool Lifecycle

Reentrancy during minipool creation, staking, or finalization allows an attacker to manipulate the deposit count or steal ETH before the minipool is properly initialized.

Node Operators, rETH Holders, Deposit Pool Users

Auditors must verify checks-effects-interactions patterns in all state-mutating minipool functions. Node operators should monitor for unexpected minipool state transitions.

rETH Exchange Rate

A composability attack manipulates the rETH/ETH exchange rate by reentering the deposit pool or burning mechanism, leading to an incorrect mint or burn amount.

rETH Holders, DeFi Protocols using rETH as collateral, Arbitrageurs

Integrators should implement circuit breakers based on off-chain oracle data. Risk teams must simulate cross-protocol call paths that touch the rate calculation.

RPL Staking and Rewards

A reentrancy bug in the RPL staking contract allows an attacker to claim rewards multiple times or withdraw staked RPL while a claim is being processed, draining the rewards pool.

RPL Stakers, Node Operators

Review the claim and unstake functions for reentrancy vulnerabilities. Governance delegates should fund audits specifically targeting the interaction between staking and reward distribution logic.

Smoothing Pool Accounting

An attacker exploits a composability flaw between the smoothing pool and a minipool's reward distribution, allowing them to claim a disproportionate share of rewards or drain the pool.

Smoothing Pool Participants, Node Operators

Verify the atomicity of reward submission and distribution. Node operators should monitor the smoothing pool's total balance for anomalous decreases.

Cross-Protocol Composability

A flash loan or cross-protocol call path uses a Rocket Pool contract as an intermediary in a multi-step exploit, even if the Rocket Pool contract itself is not the vulnerable endpoint.

All Rocket Pool Users, Partner DeFi Protocols

Protocol developers should map all external call vectors and assess their composability risk. Integrators must understand how Rocket Pool's contracts behave when called from untrusted contracts.

Network Price Oracle

A reentrancy attack on the oracle update mechanism allows an attacker to submit a stale or manipulated price between the time the price is reported and when it is stored, affecting RPL bond requirements.

Node Operators, Liquidators

Ensure oracle update functions are protected against reentrancy. Risk teams should monitor the time delay between price report submission and on-chain finalization.

Withdrawal Processing

A composability attack during ETH withdrawals from a minipool allows an attacker to reenter the withdrawal function before the minipool's state is updated, leading to a double-spend.

Node Operators exiting validators, rETH Redeemers

Auditors must verify the withdrawal function's state update logic. Exchanges and large holders should test withdrawal flows against the latest contracts on a testnet before mainnet interaction.

REENTRANCY AND COMPOSABILITY HARDENING

Detection and Prevention Checklist

A practical checklist for protocol developers, auditors, and integrators to detect and prevent cross-contract reentrancy and composability attacks in systems that interact with Rocket Pool's minipool, rETH, and RPL contracts.

What to check: Every external call made by your contract to a Rocket Pool contract (e.g., rocketMinipoolDelegate, rocketNetworkPrices) and any subsequent external calls that Rocket Pool makes back to your contract or to tokens.

Why it matters: Composability attacks exploit the interaction between multiple contracts where state is updated in one contract but not yet in another. A minipool finalization that triggers a callback to your contract before Rocket Pool updates its internal state can lead to double-spending or incorrect share calculations.

Signal of readiness: A complete call-graph diagram exists showing all reentrant paths, and a formal verification tool (Certora, Foundry invariant tests) has proven that no state inconsistency can occur across the multi-contract call chain.

Chains We Build On

Looking to build on a specific blockchain?

We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.

EVM ecosystems

  • Ethereum logo
    Ethereum
  • Arbitrum logo
    Arbitrum
  • Optimism logo
    Optimism
  • Polygon logo
    Polygon
  • Avalanche logo
    Avalanche
  • Cronos logo
    Cronos

Non-EVM ecosystems

  • Solana logo
    Solana
  • Sui logo
    Sui
  • Aptos logo
    Aptos
  • Hedera logo
    Hedera
  • Stellar logo
    Stellar
  • NEAR logo
    NEAR

Additional ecosystems

  • Polkadot logo
    Polkadot
  • Cosmos logo
    Cosmos
  • TON logo
    TON
  • Cardano logo
    Cardano
  • Algorand logo
    Algorand
  • Tempo logo
    Tempo

Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.

REENTRANCY AND COMPOSABILITY RISK FAQ

Frequently Asked Questions

Common questions from auditors, protocol developers, and risk teams analyzing cross-contract reentrancy and composability attack surfaces in Rocket Pool's minipool, rETH, and RPL staking architecture.

Rocket Pool's minipool lifecycle involves a complex sequence of external calls across multiple contracts during deposit, staking, withdrawal, and finalization. The protocol makes external calls to the Beacon Chain deposit contract, transfers ETH between the deposit pool and minipools, and interacts with the RPL staking contract. The primary risk vectors are:

  • Minipool creation and finalization: The deposit flow involves ETH moving from the deposit pool to the minipool, then to the Beacon Chain deposit contract. If state updates occur after external calls, an attacker could re-enter and manipulate the minipool's status.
  • rETH minting and burning: The rETH token contract calculates the exchange rate based on the protocol's total ETH backing. A reentrancy during minting or burning could allow an attacker to extract value by manipulating the rate mid-transaction.
  • RPL staking and withdrawal: The RPL staking contract holds bonded tokens and interacts with minipools to check collateralization. A reentrancy during withdrawal could allow a node operator to withdraw RPL while still appearing bonded.

Auditors should focus on the ordering of state changes versus external calls in these paths, particularly where ETH or tokens are transferred before internal accounting is updated.

Trusted by Industry Leaders

Delivering blockchain solutions for 5+ years.

We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.

Selected Partners & Clients

ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
“I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.”
L
Lee Erswell
CEO, Telos Foundation
how to get started

How to get started?

If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.

01

Exploration & Strategy

Define your product goals and choose the right blockchain architecture for your use case.

02

Architecture & Design

Design the smart contracts, tokenomics, and security parameters of your system.

03

Development & Integration

Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.

04

Security & Launch

Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.

Start a build

Need a blockchain engineering team?

Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.