Crypto exploits

DoinGud exploit analysis

On 2026-09-21, a Polygon marketplace facet accepted two byte-identical acceptOffer calls and paid out the escrow twice for one offer, netting the helper 35,380 USDC.

Reported loss
35,380.154566 USDC net (two byte-identical acceptOffer calls each paid out 35,486.935717 USDC from escrow; funded via a UniV2 flash swap, repaid 35,593.716868 USDC), per DeFiHackLabs
Logged

Logged as “2026-09-21: Acceptoffer Replay Via Missing Offer Cleanup On The Amount0 Path on DoinGud”.

Analysis1 min read

The DoinGud marketplace facet on Polygon paid out the same offer's USDC twice on 2026-09-21 after acceptOffer failed to clear its bookkeeping on a single code path (attack transaction, block 94170781). DeFiHackLabs reconstructs the double-pay on a Polygon fork and reproduces both escrow payouts and the helper's net profit to the wei.

The marketplace tracks each listing in an Offer record. acceptOffer runs the buyer's payment, releases the escrowed asset to the buyer, and is then expected to clear the offer so it cannot be replayed. The cleanup is only performed on the code path taken when the buyer's input amount is non-zero; the amount == 0 branch skips it. The same offer record therefore remains live, and a second acceptOffer call with identical calldata is paid again. Each payout sent 35,486.935717 USDC to the attacker, so two payouts over the same escrow left the helper 70,973.87 USDC gross, minus the 35,593.72 USDC repayment of a UniV2 flash swap that funded the first payment, for a net 35,380.15 USDC.

The attacker funded the first payment with a flash swap and reused the second payout to repay it, leaving the marketplace escrow drained of both halves.

The facet is not source-verified on Polygonscan; DeFiHackLabs reconstructed the relevant selectors from the attack trace. The fix is straightforward: clear the Offer record on every exit branch, including the amount == 0 one.

Sources read (2)

Other exploits

Query every incident yourself — free, no signup

Updated 14 Oct 2026. Figures are as reported by the sources listed above and are not independently verified.