OAK — OnChain Attack Knowledge

Worked example · 2022-03

Agave / Hundred Finance reentrancy exploit — Gnosis Chain — 2022-03-15

Loss
Agave lost 2,116 ETH (about $5.5M) and Hundred Finance 2,363 ETH (about $6.2M), about $11.7M in total [rektagave]; The Block rounds the total to about $11M [theblockagave]. This file covers Agave; Hundred Finance was hit by the same root cause minutes later.
OAK Techniques observed
OAK-T9.005 (Reentrancy — primary; the attacker re-entered borrow logic through a post-transfer hook on Gnosis Chain tokens, borrowing more than the protocol recorded as debt [rektagave]). OAK-T1.007 (Token-2022 Transfer-Hook Abuse — original cross-standard analogy, retained as the original mapping).
Attribution
unattributed pseudonymous. Rekt lists separate attacker addresses for Agave and Hundred and names no individuals; none of the funds were reported returned, and the proceeds were sent to Tornado Cash [rektagave]. Sources cited here do not establish that the two attacks were by the same actor.
Corrected 2026-10-11
Agave is an Aave fork (not Compound V2) and Hundred Finance is the Compound fork; losses are about $5.5M for Agave (the file said about $5M across both); the "same attacker" claim and unsourced post-mortem/analyst references were removed.
Key teaching point
Lending-market forks deployed on a chain whose tokens run a callback on transfer inherit a reentrancy surface that the original deployment did not have. Sending borrowed tokens before updating the user's debt is the vulnerable ordering [immunefihundred].

Summary

On 2022-03-15 attackers exploited Agave (an Aave fork) and Hundred Finance (a Compound fork) on Gnosis Chain [rektagave]. Rekt attributes the vulnerability to the design of the xDAI token, which contains a _callAfterTransfer() function; the attacker used flash loans as initial collateral and nested borrow calls inside one another, borrowing more than the protocol could record in its debt balance [rektagave]. Immunefi traces both attacks to post-transfer hooks (onTokenTransfer()) in non-standard ERC-677 tokens on the bridge, which enabled reentrancy; for Hundred, the attacker deposited about $2M in USDC as collateral and borrowed well over $6M, and tokens were sent before the user's debt was updated [immunefihundred].

Rekt reports that after a few hours the attacker sent the 2,116 ETH from Agave and 2,363 ETH from Hundred to Tornado Cash [rektagave].

Timeline (UTC+1 per Rekt)

When Event
2022-03-15 11:25:40 Agave exploit transaction [rektagave]
2022-03-15 11:28:40 Hundred Finance exploit transaction [rektagave]
2022-03-15 (hours later) Proceeds sent to Tornado Cash [rektagave]

Public references

Techniques demonstrated (2)