
This batch of exploits reads like a checklist of preventable failures. CIVNFT shipped fund-transfer functions with zero access control. Themis let its oracle be warped by a Balancer pool imbalance. Shido forgot to update unlock times in a token swap. And DEPUSDT/LEVUSDT handed over token control through unprotected approvals. Total losses: over $890K. Root cause: no one asked “what if an attacker calls this?” before deploying.
On July 8, the CIVNFT exploit on the Ethereum chain caused a loss of $459K. The root cause was the absence of access control for the 7ca06d68() function in the CIVNFT contract. This allowed the attacker to initiate callback functions that transferred CIV and USDT funds to Uniswap for selling. To prevent such attacks, the exploit contract should have included function modifiers to ensure that only the contract owner could transfer funds.

Exploit Contract: 0xf169bd68ed72b2fdc3c9234833197171aa000580
Transaction Hash: 0x93a033917fcdbd5fe8ae24e9fe22f002949cba2f621a1c43a54f6519479caceb
On June 27, the Themis Protocol exploit on the Arbitrum chain resulted in a $370K loss due to an inaccurate price oracle. The attacker started by borrowing 40,000 ETH using flash loans from Aave and Uniswap. They used this ETH as collateral to borrow DAI, USDT, ARB, and WBTC tokens. Next, the attacker deposited 55 ETH into the Balancer pool and received 54.7 B-wstETH-WETH-Stable-gauge BLP tokens in return. After that, they exchanged 39,725 WETH for Themis, which significantly increased the WETH amount in the pool, manipulating the price oracle. Finally, the attacker sold the B-wstETH-WETH-Stable-gauge BLP tokens at an artificially inflated price, making a profit.

Exploit Contract (on Arbitrum Chain): 0x75f805e2fb248462e7817f0230b36e9fae0280fc
Transaction Hash: 0xff368294ccb3cd6e7e263526b5c820b22dea2b2fd8617119ba5c3ab8417403d8
On June 23, the Shido exploit on the BNB chain caused a loss of $238K due to a vulnerability in the lock and claim logic. The attacker used the ShidoLock contract, which allows users to lock old SHIDO tokens (V1) and claim new SHIDO tokens (V2). The attacker started by borrowing 40 WBNB through a flash loan and exchanged the funds for 10E9 V1 SHIDO tokens. Next, they used the lockTokens() and claimTokens() functions to acquire 10E18 V2 SHIDO tokens. The attacker made a profit by taking advantage of a configuration error in the token swap between V1 and V2 SHIDO tokens, where the unlock time failed to update and was fixed at 14:00 on June 23, 2023.

Exploit Contract (on BNB Chain): 0x7b190a928aa76eece5cb3e0f6b3bdb24fcdd9b4f
Transaction Hash: 0xaF0CA21363219C8f3D8050E7B61Bb5f04e02F8D4
On June 14, the DEPUSDT and LEVUSDT exploit caused a loss of $105K due to an access control vulnerability. The attacker exploited a flaw in the CurveSwap contract’s public approveToken() function, which lacked the necessary modifiers to verify owner permissions. By exploiting this vulnerability, the attacker was able to become an approved spender and transfer DEPUSDT and LEVUSDT tokens, resulting in the loss of funds.

Exploit Contract (DEPUSDT): 0x7b190a928aa76eece5cb3e0f6b3bdb24fcdd9b4f
Exploit Contract (LEVUSDT): 0x2a2b195558cf89aa617979ce28880bbf7e17bc45
Transaction Hash (DEPUSDT): 0xf0a13b445674094c455de9e947a25bade75cac9f5176695fca418898ea25742f
Transaction Hash (LEVUSDT): 0x800a5b3178f680feebb81af69bd3dff791b886d4ce31615e601f2bb1f543bb2e