EVM Contract Vulnerability Incidents.

This database uses the BWC to classify Contract Vulnerability Incidents. Note off-chain issues have been excluded they're the most prevalent and resulted in more values lost. Humans remains to be the weakest point human stupidity is infinite.


2025-07-28 - {Count}

Date: Project: Value Lost: Chain: BWC:

  • Broader Classification:
  • Primary Classification: Description: References: Tx Postmortem

2025-07-28 - 7

Date: 2025-07-28 Project: SuperRare Value Lost: $ 730,000 Chain: Mainnet BWC:

  • Broader Classification: BWC 2.0 Access Control Vulnerabilities.
  • Primary Classification: BWC 2.1.1: Missing Access Control

Description:

  • The core of the vulnerability is that the require statement, which is intended to enforce permissions, is logically flawed.
  // Flawed Code
  require((msg.sender != owner() || msg.sender != address(0xc2...)), "Not authorized...");
  • This condition evaluates to true for any caller because an address cannot be two different values at the same time.
  • This logical error means the authorization check fails to perform its function, rendering it ineffective.
  • Therefore, even though an access control check appears to be present in the code, it is functionally missing.

References:


2025-07-16 - 6

Date: 2025-07-16 Project: VDS Value Lost: $ 13,000 Chain: BSC BWC:

  • Broader Classification: BWC: 3.2 Flawed State Management
  • Primary Classification: Unknown Unerified Contract Description: The deposit function in the 0x6ce69d7146dbaae18c11c36d8D94428623B29D5A contract somehow mints more tokens than has been deposited flawed accounting of some sort. References: Address Tx 1

2025-07-15 - 5

Date: 2025-07-15 Project: Arcadia Value Lost: $ 3,600,000 Chain: Base BWC:

  • Broader Classification: BWC 2.1 Missing or Improper Authorization
  • Primary Classification: BWC 2.2.4 Cross Contract Untrusted Arbitrary Calls Description:
  • The attacker exploited a missing validation vulnerability in the Asset Manager contracts. By supplying malicious calldata to a rebalancing function, the attacker tricked the Asset Manager into making an arbitrary call to a victim's Arcadia Account. Since the victim had authorized the Asset Manager, this call was successful, allowing the attacker to impersonate the Asset Manager and drain the victim's funds. A flash loan was used to temporarily clear the victim's debt, ensuring the account remained healthy and the malicious transaction would not revert. References: Tx 1 Tx 2 Tx 3 Tx 4 Postmortem

2025-07-10 - 4

Date: 2025-07-10 Project: Kinto Value Lost: $ 1,550,000 Chain: Arbitrum. BWC:

  • Broader Classification: BWC 3.0 Smart Contract Logic & State Manipulation
  • Primary Classification: BWC 3.2.1.1 Proxy/Contract Initialization Front-running Description: Attacker front ran initialization of Proxy upgraded the proxy installing a backdoor proxy. References: Tx 1 Tx 2 Postmortem

2025-07-09 - 3

Date: 2025-07-09 Project: GMX Value Lost: $ 42,000,000 Chain: Arbitrum BWC:

  • Broader Classification: BWC 3.0: Smart Contract Logic & State Manipulation
  • Primary Classification: BWC 3.1.4: Cross-Contract Reentrancy
  • Secondary Classification: BWC 5.2.1: Price Manipulation

Description:

  • The GMX protocol was exploited via a sophisticated cross-contract reentrancy attack.
  • The vulnerability was in the PositionManager.executeDecreaseOrder() function, which made an external call (an ETH refund) to the attacker's contract.
  • The attacker's contract then re-entered the GMX protocol, opening a large leveraged position before the initial transaction was complete.
  • This manipulation artificially inflated the Assets Under Management (AUM) of the GLP pool, allowing the attacker to redeem their own GLP tokens at a much higher price, draining the vault.

Tx 1 Postmortem 1 Postmortem 2


2025-07-09 - 2

Date: 2025-07-09 Project: ZKSwap Value Lost: $5,000,000 Chain: BWC:

  • Broader Category: BWC 4.0: Input & Data Validation Vulnerabilities.
  • Primary Classification: BWC 4.3.1 Missing Signature Validation. Description:
  • The verifyExitProof() function contained a hardcoded return true; statement, which effectively disabled the cryptographic verification of withdrawal proofs.
  • An attacker activated the emergency "Exodus Mode" and repeatedly called the exit() function with fabricated proofs.
  • Since the proof verification was skipped, the contract accepted the fake proofs, allowing the attacker to drain funds. References: Postmortem

2025-07-02 - 1

Date: 2025-07-02 Project: Quickswap Value Lost: Unknown Chain: Polygon BWC:

  • Broader Classification: BWC 10.0: Network & Consensus Evolution Attacks
  • Primary Classification: BWC 10.4: Protocol Upgrade-Induced Vulnerabilities eip 7702 Description: The contract implemented an onlyEOA() modifier, likely checking address(msg.sender).code.length == 0, to prevent contract-based calls, specifically to mitigate flash loan exploits. An attacker leveraged a type 4 transaction (EIP-7702) to bypass this check. EIP-7702 allows a contract to execute a call while setting the msg.sender to the Externally Owned Account (EOA) that signed the transaction. This makes the onlyEOA() check return true, as it sees the caller as a codeless EOA, while still allowing the attacker to use contract logic (and potentially flash-loaned funds) to execute the restricted function. This is a vulnerability induced by a protocol upgrade that broke the security assumptions of a previously standard check. References: Tx 1 Vulnerable Address

2025-06-23 - 2

Date: Project: Unverified Contract Value Lost: $ 610,000 Chain: Mainnet BWC:

  • Broader Classification:
  • Primary Classification: Description: It appears that the 0xf8c03cc4() function of the contract 0x16d7 lacks proper access control and swaps specified tokens on unverified pairs from the users who have granted approvals to this contract.

(0x16d7c6f43df19778e382b7a84bcb8c763971a551) on the Binance Smart Chain (BSC), with losses exceeding $600K. Since the contract is not open-source, our investigation indicates the root cause lies in a lack of slippage protection. This vulnerability allowed attackers to exploit the contract by using a fake liquidity pool to harvest #TA tokens (0x539ae81a166e5e80aed211731563e549c411b140), which were then sold in the legitimate pool to make profits.

Its 0xf8c03cc4() method seems to let anyone buy tokens that have been approved to it, through an intermediary DEX. The attacker created a new skewed TA-BSCUSD pair with fee=500 as intermediary and drained victims of TA tokens before dumping them on the fee=100 pair and profited ~$600K at 0x9c9a853f9245e88b09346268f3466372dfc3b638.

References: Tx 1 Tx 2 Tx 3


2025-06-08 - 1

Date: Project: PeapodsFinance Value Lost: $ 230,000 Chain: Mainnet BWC:

  • Broader Classification:
  • Primary Classification: Description: Likely Price Manipulation or sth References: Tx 1 Tx 2

2025-06-10 - 1

Date: Project: @BankRoll_Status Value Lost: $ 113,000 Chain: Mainnet BWC:

  • Broader Classification:
  • Primary Classification: Description: References: Tx 1

2025-06-10 - 1

Date: Project: Unverified Value Lost: $ 88,000 Chain: Mainnet BWC:

  • Broader Classification:
  • Primary Classification:
  • Classification: Description: It appears that the registerProtocol() and setMasterContractApproval() in the vicitm contract 0xcfe0 lack proper access control, allowing anyone to withdraw the #RICE token from the contract. References: Tx 1

2025-05-26 - 1

Date: 2025-05-26 Project: @DexodusFinance Value Lost: $ 291,000 Chain: Base BWC:

  • Broader Classification:
  • Primary Classification: Description: References: Tx 1

2025-05-26 - 1

Date: 2025-06-02 Project: #FPC Value Lost: $ 4,700,000 Chain: Base BWC:

  • Broader Classification:
  • Primary Classification: Description:

It appears that the token employs a flawed burn mechanism, which burns tokens from the pool when a user sells. The attacker simply used a flash loan to buy tokens from the pool, pushing the price extremely high, and then sold the tokens back to the pool—effectively sandwiching the burn to make a huge profit.

References: Tx 1


2025-05-26 - 1

Date: 2025-06-02 Project: Old Contract Value Lost: 32,000 Chain: BWC:

  • Broader Classification:
  • Primary Classification: Description:

References: Tx 1


2025-05-26 - 1

Date: 2025-06-02 Project: UsualMoney Value Lost: 43,000 Chain: BWC:

  • Broader Classification:
  • Primary Classification: Description: The VaultRouter contract executes a swap from USD0++ to sUSDS by calling arbitrary calldata via ParaSwap, allowing the attacker to arbitrage between unwrapped USD0++ and the USD0++ liquidity pool.

References: Tx 1

2025-05-26 - 1

Date: Project: Value Lost: Chain: BWC:

  • Broader Classification:
  • Primary Classification: Description:

A complex exploit involving flash loans and repeated skim() calls was detected! 🧠 Full tx: https://bscscan.com/tx/0x78f242dee5b8e15a43d23d76bce827f39eb3ac54b44edcd327c5d63de3848daf

Attacker drained tokens from a liquidity pool by abusing skim and transfer.

⚡ Exploit Method:

1️⃣ Flash loan taken (zero collateral) 2️⃣ Tokens swapped via PancakeSwap 3️⃣ Unlimited allowance set 4️⃣ Repeated skim() calls abuse Token logic 5️⃣ Token reserves manipulated via sync() 6️⃣ Liquidity pool drained for profit 📊 Root Cause:

Missing checks in skim/reserve logic enabled attacker to extract residual tokens repeatedly. 💥 Impact:

Token balance and reserve manipulation led to massive fund extraction. No external collateral or prior holdings needed.

🛡️ Recommendations: Add validation, monitor for abnormal reserve changes Improve reserve accounting

References: Tx 1