DefiingerMulti-Chain DeFi Data, News & Research

Weekly Deep Dive: How a Reordered Withdrawal Took $7.8m of rsETH

How an MEV bot took about $7.8m of rsETH by reordering a valid withdrawal ahead of a pause: a self-authorising Safe module, a 19 ETH priority fee, and the recovery plan that follows.

Weekly Deep Dive2026-09-219 min readDefiinger Research Desk2029 words

This week's report covers the most instructive failure of the week by mechanism rather than by size: about 2,900 rsETH (roughly $7.8m) left Kelp DAO's system on 15 September 2026 — smaller than Liquid's $320m, but produced by a flaw that generalises to every protocol using a self-authorising executor on a value-bearing vault.

We chose it because it fails in a direction the fortnight had not yet shown. Liquid was value created upstream and accepted downstream. Chainflip was value paid twice. rsETH was a valid instruction, reordered in time — and the deposit, at every moment, was authorised all along.

1 1. In brief

On 15 September 2026, about 2,900 rsETH — roughly $7.8m — left Kelp DAO's staking system without a single signature being forged or a single key being stolen. An MEV searcher nicknamed 'Yoink' paid about 19 ETH in priority fees to have a legitimate withdrawal reordered ahead of a pause, at block 25,980,525, capturing 2,882.37 rsETH before the circuit breaker could engage.

The pattern ran as one coordinated sequence in the early hours of Monday. The withdrawal was real and the validator signature was valid; the attacker simply paid to win the slot and land ahead of the pause. Kelp had enabled a Safe module whose executor / Multicall contract accepted target = address(this) as a valid authorisation, and that was the gap.

~2,900 rsETH
Withdrawn
about $7.8m at the time
2,882.37 rsETH
Captured by the bot
the bulk of the loss, in one slot
~19 ETH
Priority fees paid
to win the reorder
block 25,980,525
Where it happened
on Ethereum mainnet

2 2. Background: what rsETH is, and why the Safe module

Kelp DAO runs one of the larger liquid restaking protocols: users deposit ETH or liquid staking tokens and receive rsETH, a transferable receipt that accrues restaking yield. rsETH is one of the receipts in the liquid-staking tables we track. The security model rests on withdrawals being processed only through authorised modules, and on a pause switch that can freeze withdrawals if something looks wrong.

The Safe module — a Gnosis Safe-style executor that lets the protocol batch and automate operations — was switched on to make withdrawals and other administrative actions more efficient. It is a convenience layer, not part of the core staking math. The integration lived in Kelp's operational tooling, and the flaw sat in how that module checked whether an instruction was allowed to act on the vault.

One structural point matters for everything that follows. The vulnerability was not in Safe itself — Gnosis Safe's core contract behaved exactly as specified. It was in a module the protocol had attached to its own setup and had the authority to enable and configure. The trust boundary moved from 'is this a valid Safe transaction' to 'is this module allowed to instruct the vault', and nobody re-examined what the second question now required.

3 3. Mechanism: a valid withdrawal, reordered

Reconstructing the sequence from Kelp's statements and the on-chain trace gives a path with four steps and no exotic cryptography at any of them.

The attack path. The withdrawal was valid and the signature real; the attacker only changed when each landed.
#StepWhat happenedWhy it passed
1User withdrawalA legitimate rsETH holder requests a withdrawalA real withdrawal; the system queues it correctly
2Signed by keeperKelp's keeper signs the withdrawal as authorisedThe signature is genuine; the instruction is real
3Pause attemptThe protocol tries to pause withdrawals as a precautionThe pause is a separate transaction in the same block
4ReorderThe MEV bot pays priority fees to land its withdrawal firstBlock ordering is by fee, not by intent; the pause lands after

The step that fails safely on most designs is step 4. A pause is supposed to be the circuit breaker — once it lands, no further withdrawals process. But block ordering is by priority fee, not by intent, so a transaction that pays more lands first. The bot paid ~19 ETH to ensure its already-signed withdrawal executed before the pause took effect, and captured 2,882.37 rsETH in that gap.

The attacker behaved like someone exploiting a known race rather than discovering one. A single coordinated sequence, a real withdrawal, a genuine signature, and a fee paid to win the slot — there was no probing ladder this time, just one well-timed move. That is the mark of an actor who understood the ordering rule and priced the slot.

4 4. Root cause: an authorisation check that trusted its own input

A withdrawal system needs to bind every instruction it acts on to something it can verify. On a normal path, the keeper signs the withdrawal and the vault pays it — the signature is the binding. The Safe module added a second instruction channel: the executor could call the vault on the protocol's behalf, and its authorisation check accepted target = address(this) — it treated the module calling itself as sufficient proof that the call was allowed.

payment_authorised = signed_withdrawal + safe_module_call(target = address(this)) # what the system accepted
payment_authorised_required = signed_withdrawal + module_check(signature, withdrawal_id, not_self_call)

In plain terms, the module could instruct the vault to pay out using an authorisation that resolved to 'the module authorised itself'. The keeper signature proved a withdrawal existed; it did not prove the module's self-call was the one the withdrawal was meant to take. Treating the second as covered by the first is the defect in one sentence.

The failure is therefore not in Safe, not in rsETH's staking math, and not in the keeper's keys. Every component behaved as specified. The specification itself contained the gap: a module with a self-authorising executor, attached to a vault that trusted it, in a block where ordering is for sale.

5 5. Detection, response and the recovery plan

The breach was discovered the way most drains are: the funds moved and someone noticed. Kelp paused the contract at 0xc70f…80ea0 for 24 hours once the outflow was clear, and published a statement acknowledging the Safe-module vector rather than a core compromise. Blockaid estimated the loss at $7.73m and BlockSec at $7.81m — both close to the ~$7.8m figure Kelp's own accounting implied.

Three commitments matter for assessing the outcome. First, the affected module was disabled, so the vector is closed at the source rather than merely paused downstream. Second, Kelp stated it would make affected users whole, though the funding mechanism had not been named at the time of writing. Third, the bulk of the loss — 2,882.37 rsETH — was taken in a single reorder, which is unusual: most of the value was gone in one slot, not drip-fed across rounds.

Context is worth recording honestly. This is the second rsETH incident of 2026; the first, in April, traced to a LayerZero-related dependency. Two incidents in five months on the same receipt token, through two unrelated mechanisms, is the strongest available argument for treating rsETH's operational tooling — not just its staking contract — as the surface to audit.

6 6. Data: the numbers, and what each one measures

This incident produced a small set of quantities, and conflating them is how coverage of it goes wrong. Each row below is a different measurement.

All figures are per Kelp's accounting and on-chain traces at the time of the 15 September statement; Blockaid and BlockSec estimated $7.73m and $7.81m.
QuantityValueWhat it measuresSource
Unauthorised capture2,882.37 rsETHThe bulk of the loss, in one reorderKelp / on-chain
Total withdrawn~2,900 rsETHAbout $7.8m at the timeKelp
Priority fees paid~19 ETHCost of winning the slotOn-chain (block 25,980,525)
Block25,980,525Where the reorder landedEtherscan
Stranded user swaps0No pending withdrawal left unpaid, unlike ChainflipKelp

The derived number worth stating plainly is the ratio between the attacker's cost and the take. About 19 ETH in priority fees — roughly $50-60k at prevailing prices — bought roughly $7.8m. That is a returns multiple most exploits never see, and it existed because the gap was a logic flaw reachable by ordinary transaction ordering, not a cryptographic break requiring skill to find.

7 7. The same window, three different mechanisms

rsETH was one of three failures in the same seven days, and the three make a controlled comparison almost nobody would design on purpose.

Three incidents, three mechanisms, one shared assumption: that the step before the payout had been checked.
DateVenueHow value movedRealised lossContained by
15 SepKelp (rsETH)Valid withdrawal reordered ahead of a pause via a self-authorising Safe module~$7.8mModule disabled; users to be made whole
17 SepNostra (Starknet)Oracle marked NSTR ~8,000x real price; borrowed against it$3.5mFull pause; no bounty
16 SepChainflipDuplicate refund against one deposit via memo reuse736,442 USDTNetwork pause; TRON route dropped

The finding is the same shape as recent weeks, stated one level up. Liquid created value upstream; Symbiosis minted it; Chainflip paid twice; Nostra borrowed against a phantom price; rsETH let a valid instruction be reordered. In every case the realised loss equals the exit liquidity the attacker could reach before someone pulled a switch — and rsETH's switch was a pause that simply landed one slot too late.

8 8. Impact assessment: who is actually exposed

The most concentrated exposure sits with Kelp's own balance sheet and rsETH holders, not with a third party's vault.
LayerWho is affectedImmediate effectResolution depends on
rsETH holdersAnyone holding or withdrawing rsETHModule paused; withdrawals frozen 24hThe make-whole mechanism and the post-mortem
Kelp DAOThe protocolA ~$7.8m loss and a second 2026 incidentFunding the compensation and rebuilding trust
Safe-module usersEvery protocol using a self-authorising executorReputational re-pricing of the patternWhether this becomes a standard audit check
MEV searchersThe block-building marketA visible, profitable reorderNothing — the slot was won under current rules

That last row is the one to generalise. The industry now has a small catalogue of 'valid instruction, wrong timing or wrong channel' bugs, and the fix is unglamorous: bind every payout to the specific withdrawal it settles, forbid self-authorising executors on value-bearing vaults, and treat a pause as a hard pre-check rather than a transaction that can be outbid. None of it is novel cryptography. All of it is the kind of work that gets skipped when a module seems trusted because it is part of a well-known wallet.

9 9. What this changes for due diligence

  • For any protocol using a Safe or similar executor module: ask whether the module can call the vault on itself, and whether that self-call is treated as authorisation.
  • For withdrawal systems specifically: ask whether a pause is a hard pre-check or just another transaction that can be outbid by priority fees.
  • For MEV exposure: ask what a well-funded searcher could reorder in your withdrawal path, because block ordering is for sale.
  • For rsETH holders: treat the issuer's operational tooling as part of the risk, not just the staking contract — two 2026 incidents through two mechanisms argue for it.

10 10. What would change our read

This assessment rests on Kelp's own accounting and on-chain traces, published before an independent post-mortem. It would change materially if a forensic report attributes the loss to a different mechanism than a self-authorising Safe module, if the ~2,900 rsETH / $7.8m figure is revised, or if the compensation terms leave any affected user short. The disabled module and the stated make-whole promise are the specific things to read when they arrive.

The broader conclusion does not depend on those details. Six failures over the past three weeks — Liquid, Nomic, Symbiosis, Chainflip, Nostra and now rsETH — share one assumption: that the step before the payout had been checked. Until self-authorising modules, oracle dependencies and refund paths are standard audit items rather than post-incident upgrades, that is the distribution to expect: frequent small failures, and occasional $7m ones that cost 19 ETH to run.

11 11. In brief

Kelp's rsETH lost about 2,900 tokens (~$7.8m) because a Safe module with a self-authorising executor let a valid withdrawal be reordered ahead of a pause — not because a key was stolen or a signature forged. An MEV bot paid ~19 ETH to win the slot at block 25,980,525 and captured 2,882.37 rsETH before the circuit breaker landed.

For the wider system, the lesson is the same one Liquid, Chainflip and Nostra taught in the same fortnight, stated one level up: the unguarded step is wherever the last person assumed the previous step had checked it. The fix is boring, known, and not yet standard. That combination is what these weeks keep purchasing.

DE
Defiinger Research Desk

The Defiinger Research Desk compiles multi-chain DeFi data and commentary from public on-chain sources and vetted industry publishers. Our editorial process prioritizes verifiable figures and clearly dated references.

Sources & Methodology

  1. Kelp DAO — statement on the 15 September rsETH Safe-module incident and the 24-hour pause.
  2. Blockaid — independent loss estimate ($7.73m) for the rsETH incident.
  3. BlockSec — independent loss estimate ($7.81m) for the rsETH incident.
  4. Etherscan — the on-chain trace at block 25,980,525 and the priority-fee payment.
  5. Decrypt and PANews — coverage of the incident and Kelp's response.
  6. Nostra and Ekubo — context on the 17 September oracle exploit used in the comparison.
  7. Chainflip — context on the TRON memo exploit used in the comparison.
  8. DefiLlama — rsETH context used for background.

Headlines and figures on this page are drawn from the outlets listed above; commentary is clearly labelled opinion and is not investment advice. Last reviewed 2026-09-21.

Frequently Asked Questions

Was Safe itself compromised?
No. Gnosis Safe's core contract behaved exactly as specified; the flaw was in a module Kelp attached and configured, whose executor accepted a self-call as authorisation.
Were user funds lost?
The ~2,900 rsETH came from Kelp's staking system. Kelp has committed to making affected users whole, and the vector — the module — was disabled rather than merely paused.
Is this like the Chainflip incident?
No. Chainflip paid the same deposit twice via a memo; rsETH let a valid withdrawal be reordered ahead of a pause. Both are failures to check the step before the payout, but they sit on opposite sides of the settlement.
Could this happen to other protocols?
Yes. Any protocol using a self-authorising Safe executor on a value-bearing vault is exposed to the same reorder race until the module is audited or removed.
Is this investment advice?
No. This is an incident analysis. Nothing here accounts for your holdings, mandates or risk appetite.