PoolTogether — disclosed vulnerability reports and payouts

Every publicly disclosed and closed bug bounty report we hold for PoolTogether, with our own summary of each finding and a link to the original disclosure.

Reports indexed
34
Total paid
$0
Critical
0
Largest payout
$0

This page collects the 34 closed, publicly disclosed PoolTogether reports indexed on CoinBuggie. Nothing here is active or unpatched — every entry was published by the programme or the researcher after remediation.

The findings concentrate in Reentrancy, Logic error, Access control, Flash loan attack, Front-running / MEV, across EVM-Solidity, Move. Reading a single protocol end to end is the fastest way to see which assumptions its codebase repeatedly gets wrong, which is usually a better predictor of where the next finding lives than the category alone.

Use the vulnerability class links below to compare these findings against the same bug class in other protocols.

What reviewers look for

  • Reentrancy findings disclosed against PoolTogether
  • Logic error findings disclosed against PoolTogether
  • Access control findings disclosed against PoolTogether
  • Flash loan attack findings disclosed against PoolTogether
  • Front-running / MEV findings disclosed against PoolTogether

Curated highlights

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

mediumReentrancyEVM-Solidity$0

PoolTogether: Unintended or malicious use of prize winners' hooks

In PoolTogether v5, the Vault contract allows prize winners to configure arbitrary hooks via the setHooks function. During the prize claiming process, the contract executes these user-defined hooks prior to and after prize distribution. Because the hook calls lack gas consumption caps and state-change restrictions, a user can configure a malicious hook that conducts unconstrained external operations, griefs claimers paying for transaction gas, or causes claiming transactions to revert. This results in potential gas exhaustion and denial of service for third-party prize claimers.

PoolTogethercode4renaAug 7, 2026Open
mediumLogic errorEVM-Solidity$0

PoolTogether: The tier odds in `TieredLiquidityDistributor` are incorrect

The TieredLiquidityDistributor contract uses incorrect precomputed probability constants, causing the prize distribution system to deviate from its intended logic. Specifically, the highest standard prize tier should have odds of 1, mirroring the canary tier, but the generation script fails to assign this value. This configuration error means the protocol distributes prizes with incorrect frequencies, directly contradicting the project's documentation.

PoolTogethercode4renaAug 7, 2026Open
mediumLogic errorEVM-Solidity$0

PoolTogether: If the underlying asset is a fee on transfer token, it could break the internal accounting of the vault

The PoolTogether vault incorrectly calculates the number of shares to mint when receiving fee-on-transfer tokens. Because the vault trusts the input amount rather than measuring the actual change in its asset balance, it mints shares based on an inflated value that does not match the actual assets received. This accounting error leads to a systemic deficit in the vault's holdings, eventually causing subsequent withdrawal attempts to revert as the contract runs out of assets to distribute to users.

PoolTogethercode4renaAug 7, 2026Open
mediumLogic errorEVM-Solidity$0

PoolTogether: The threshold check for adding of new tiers is skipped when `_nextNumberOfTiers` is at the maximum amount

The PoolTogether PrizePool contract contained a logic error where tier expansion bypasses necessary validation checks. Specifically, when the protocol reached 14 tiers, a canary claim would trigger a calculation that reaches the maximum tier limit, causing the function to exit prematurely. This early return inadvertently skipped mandatory checks that ensure sufficient claim counts are met before adding a new tier, allowing the system to expand to 15 tiers regardless of actual prize pool activity levels.

PoolTogethercode4renaAug 7, 2026Open
mediumLogic errorEVM-Solidity$0

PoolTogether: `TwabLib::getTwabBetween` can return inaccurate balances if `_startTime` and `_endTime` aren't safely bound

A logic issue in PoolTogether's PrizePool contract allows TWAB balance queries to occur over unsafe time ranges. When PrizePool calculates user balances via _getVaultUserBalanceAndTotalSupplyTwab, it fails to execute the required isTimeRangeSafe check before invoking TwabLib::getTwabBetween. As a result, historical balance calculations can be extrapolated incorrectly, leading to inaccurate TWAB values and potentially enabling improper prize distributions.

PoolTogethercode4renaAug 7, 2026Open
mediumAccess controlEVM-Solidity$0

PoolTogether: `drawManager` can be set to a malicious address

The PoolTogether PrizePool contract is vulnerable to a front-running attack due to a missing access control modifier on the setDrawManager function. A malicious actor can intercept the initial setup to designate an attacker-controlled address as the draw manager. Because the contract prevents subsequent changes to the draw manager once assigned, this compromise is permanent, granting the attacker perpetual control over critical administrative functions, including the ability to withdraw from the reserve and manipulate prize draw operations.

PoolTogethercode4renaAug 7, 2026Open

All reports in this group

Vulnerability classes disclosed here

Related protocol pages