🚨@gnosispay Gnosis Pay Incident: Root Cause Disclosure
While the attack was still ongoing, the team refrained from publishing the root cause. Now that the incident has been fully contained, we believe it is the right time to disclose the root cause.
💡Root Cause
A logic flaw in SignatureChecker::_isValidContractSignature() within the Zodiac Delay Module.
During EIP-1271 signature validation, the function performed a staticcall to the signer contract but only checked the returned data — it did not verify whether the call was successful.
The attacker exploited this by forcing the staticcall to revert, while embedding the EIP1271_MAGIC_VALUE (0x1626ba7e) in the revert data. The flawed checker mistakenly matched the revert payload and treated the failed call as valid authorization.
This bypass allowed the attacker to:
- Queue arbitrary malicious transactions into victim Gnosis Safe wallets (without real permission)
- Wait for the mandatory cooldown period to expire
- Execute them via executeNextTx() and drain funds
An update on the Gnosis Pay incident. As of now, the issue is fully contained.
We expect to begin enabling operations in batches on Wednesday evening (GMT+2), with the goal of restoring normal card usage progressively after that. 🧵
🚨 [Transit Finance Incident Reflection]
A deprecated 2022 smart contract on #TRON was exploited, draining ~$1.88M DAI. Even though marked “deprecated”, it remained fully callable.
This raises a hard question for every Web3 builder:
- Why didn’t the deprecated contract truly die?
⏰Proper deprecation isn’t optional — it must be designed from day one.
Correct ways to deprecate:
- Reset critical state variables
- Use toggle switches(Pausable/Deprecation Flag) to disable core functions
- For upgradeable contracts: point proxy to a dead (revert-only) implementation
- Renounce all admin privileges
💡Security isn’t “deploy and forget.” Build for a safe, graceful exit.
#SmartContractSecurity #DeFi #Web3Security #Solidity
🚨 Alert: @Aurellion_Labs on Arbitrum was exploited, losing approximately $455k USDC.
Root Cause: Uninitialized Diamond Protocol
The protocol set the owner in the constructor but never called initialize(). The attacker called initialize() on the SafeOwnable Facet to claim ownership, then used diamondCut() to inject a malicious facet with pullERC20 & sweepERC20 functions, draining approved USDC from multiple victims.
Tx: https://t.co/PWljTyWSjr
1/ 🚨 DeepBook was drained of $239,700 on May 9 using just ~$2,500 in capital—a massive 100x return.
No reentrancy, no oracle attack, no access control bypass. Just two order-placement paths with mismatched price validation.
pool::place_limit_order — no price check
pool_proxy::place_limit_order — price ∈ [Pyth ± tolerance]
Margin uses proxy. Regular accounts use raw. Same orderbook. Same attacker. 🧵
2/
Attacker uses TWO BalanceManagers, both their own:
• BM 0xe63374a58f2a63fe8554f0e9210332848654bd1130931c0719b1e9ba0a4fa30a (regular)
• MM 0xe63374a58f2a63fe8554f0e9210332848654bd1130931c0719b1e9ba0a4fa30a (margin — borrows USDC)
Per PTB, BM places a "trap" at the tolerance band edges:
SELL @ $1.0878 + BUY @ $1.0759
(Pyth mid $1.0819, tolerance ±0.55%)
1.1% spread, both legs pass proxy.
3/
But this only works if the band is empty of legitimate orders.
Phase A (asymmetric scan): attacker uses throwaway BMs as takers to sweep ~218K SUI / $235K of legitimate liquidity. Net cost: ~$1K in spread.
Now only BM's trap sits in the band.
4/
Phase B (wash loop): MM market-orders into BM's trap.
• MM BUY → only ASK in band = BM's $1.0878 → MM pays high
• MM SELL → only BID in band = BM's $1.0759 → MM gets low
Each round trip: $0.0119/SUI leaks MM's borrowed pool → BM.
Run 35×, 70 + 70 fills at exact band edges.
5/
After PTB: MM insolvent → $283K bad debt to suppliers. BM keeps ~$96K + 8K SUI. Flashloan repaid same-PTB.
Just 4 successful attack txs over 50 mins. Bridged 78 ETH + 0.7 BTC to a single EVM address.
6/ 🛡️ The AstraSec Takeaway:Vulnerabilities don't always hide in complex math—they hide in architectural inconsistencies. When proxy logic and raw pool logic don't enforce the same invariants, attackers will bridge the gap.
At ~3:18 AM UTC today, an undercollateralization vulnerability accrued $239,700 in bad debt in the USDC margin pool. Margin Trading has been temporarily paused.
The Deepbook Insurance Fund has injected the amount of lost funds back into the affected pools. Deposits and withdrawals have now resumed.
🚨 https://t.co/9Opv0Nqq5d exploited -- $229K lost
Root cause: The Forwarder contract blindly forwards req.from as the msg.sender to the SwapRouter. An attacker can set req.from to any victim who previously approved the protocol, then drain their funds via spendFromUser.
tx: https://t.co/YNSBErTzlD
⚠️ Revoke approvals to this address IMMEDIATELY:
0x2990A16D2C37163f26F86d7af219064Ba5CD5605
@aave just took a major step forward in the @KelpDao rsETH bridge exploit recovery.
Aave has successfully executed controlled liquidations of the attacker’s positions on both Ethereum and Arbitrum. This was achieved by temporarily setting the rsETH oracle to a FixedPriceAdapter returning a fixed price of 1, enabling low-cost liquidation of the positions.
Total: 89,567 rsETH have been recovered and are now safely held in the multi-sig wallet: 0x53cb4BB8F61fa45405dC75F476FaDAd801e653D9
In line with the technical plan outlined below, the attacker's rsETH positions on Aave have been liquidated on Ethereum and Arbitrum. The liquidated collateral now sits with the Recovery Guardian as specified in the AIP.
No other users were affected, and Umbrella was also untouched. This was a critical step in the recovery roadmap, with next steps to follow.
. @trustedvolumes suffered an exploit leading to a loss of approximately $5.87M. The root cause is that TrustedVolumes' RFQ contract had potential input validation vulnerability, which allowed any victim to be designated as order taker, thereby enabling the exploitation of their authorized assets.
tx: https://t.co/nbBGBQOxn8
Revoke your approvals to the following address immediately (via https://t.co/GRgDy1AXeN):
0xeEeEEe53033F7227d488ae83a27Bc9A9D5051756
@EkuboProtocol suffered an exploit due to missing payer validation in its EVM swap router contracts (on Ethereum and Arbitrum).
The loss was approximately $1.4M, primarily in wrapped Bitcoin (WBTC) drained from approved user positions via unauthorized transferFrom calls.
Revoke your approvals to the following addresses immediately (via https://t.co/GRgDy1AXeN):
Ethereum:
0x8ccb1ffd5c2aa6bd926473425dea4c8c15de60fd (V2)
0x4f168f17923435c999f5c8565acab52c2218edf2 (V3)
Arbitrum:
0xc93c4ad185ca48d66fefe80f906a67ef859fc47d (V3)