Business logic vulnerabilities in disclosed bug bounty reports

The code does exactly what it was written to do, and what it was written to do is wrong.

Reports indexed
242
Total paid
$131k
Critical
0
Largest payout
$120k

Logic errors are the residual category and the hardest to find with tooling, because there is no unsafe pattern to grep for. The contract compiles, the tests pass, and the specification itself has a hole in it: an off-by-one in a reward epoch, a state machine that permits a transition nobody considered, an accounting path that credits twice under a specific ordering.

The reports gathered here are the strongest argument for reading disclosures rather than checklists. Each one is a case where a reviewer reconstructed the intended invariant, then found the input that violated it — and the write-ups usually show that reasoning explicitly.

Common shapes include edge cases at zero and at maximum, first and last participant conditions, and paths that behave differently when a step is skipped or repeated.

What reviewers look for

  • State machines with unreachable-looking transitions that are in fact reachable
  • Zero-value, single-participant and final-participant edge cases
  • Accounting that differs depending on the order of two independent calls
  • Emergency or pause paths that bypass invariant checks
  • Loops whose bounds depend on user-controlled length

Curated highlights

The largest disclosed payouts in this group, with our own summary of each. Every report links back to the original disclosure.

highLogic errorEVM-Solidity$120k

Rounding direction lets attacker mint shares for free on first deposit

A classic ERC-4626 share inflation vulnerability enabled an attacker to steal deposits from initial vault users. By depositing a single wei of assets to receive one share and then transferring a large amount of assets directly to the vault contract, the exchange rate ratio was severely skewed. Subsequent deposits from victims rounded down to zero minted shares while forfeiting their underlying tokens, allowing the attacker to redeem their single share for the entire vault balance.

ERC-4626 VaultcantinaJan 15, 2024Open
lowLogic errorEVM-Solidity$9k

Oracle-free AMM invariant rounding allows slow drain

A directional rounding flaw in the Newton-Raphson solver for a StableSwap invariant enabled subtle value extraction during token exchanges. When computing invariant values and target balances, both routines rounded down, yielding an extra wei of token output to the user on specific balance ratios. On low-fee Layer 2 blockchains, an automated script could execute high-frequency minimal swaps to steadily extract pool reserves over time.

Stableswap PoolhatsApr 9, 2024Open
highLogic errorOther$2k

Docker Secret Disclosure via GitHub Actions Cache Poisoning

A GitHub Actions cache poisoning vulnerability was identified in the Hyperledger repository infrastructure. The flaw allowed unauthorized actors to modify shared build cache keys and execute arbitrary code within CI/CD pipeline steps. When downstream workflows restored the manipulated cache, sensitive Docker credentials stored in environment variables were exposed. This allowed attackers to extract critical pipeline secrets without requiring write permissions to the underlying repository.

hyperledgerhackeroneApr 20, 2024Open
mediumLogic errorOther$100

Window.opener bug at www.coinbase.com

A web application link on www.coinbase.com opened external URLs using target="_blank" without setting the rel="noopener" or rel="noreferrer" security attributes. This allowed the newly opened destination window to access and manipulate the parent tab through the JavaScript window.opener reference. An attacker controlling the external target site could leverage this access to redirect the user's active Coinbase tab to a malicious external URL or phishing page. Coinbase rewarded the finding with a $100 bounty.

coinbasehackeroneNov 28, 2016Open
mediumLogic errorEVM-Solidity$0

Good Entry: V3 Proxy does not send funds to the recipient, instead it sends to the msg.sender

Good Entry's V3 proxy wrapper exposes swap functions intended to be compatible with the Uniswap V2 interface, but these functions ignore the caller-supplied destination address and instead route output tokens to msg.sender. Any caller who passes a different `to` address loses the economic value of the swap — for instance a user blacklisted on the output token, or one whose allowance/signature was compromised and who tries to divert proceeds to a safe address, ends up with funds sent back to the caller. The issue was confirmed by the protocol and the judge rated it Medium; the final fix added an explicit `require(msg.sender == to)` to enforce that swaps only ever go to the caller, which is safe for the OPM-only usage the module was designed for.

Good Entrycode4renaAug 7, 2026Open
mediumLogic errorEVM-Solidity$0

Putty: An attacker can create a short put option order on an NFT that does not support ERC721 (like cryptopunk), and the user can fulfill the order, but cannot exercise the option

The Putty protocol incorrectly assumes that all NFT assets used as underlying collateral in options contracts support the full ERC-721 standard. By using a safeTransferFrom implementation that requires the onERC721Received callback, the protocol unintentionally renders certain legacy NFTs, like CryptoPunks, unexercisable. Attackers can exploit this by offering options on these incompatible assets, collecting premiums from users who are then unable to exercise their options or receive the underlying asset.

Puttycode4renaAug 7, 2026Open

All reports in this group

Chains where this class shows up

Related vulnerability category pages