Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Cantina
CodeHawks
Feb '25
high
Incorrect tick range in vesting position fee collection leads to transaction revert
high
Integer overflow in observation index calculation leads to denial of service
high
Incorrect max leverage calculation in liquidation check delays necessary position liquidations
high
Incorrect collateral value calculation allows bypassing leverage limits
medium
Incorrect modulo calculation in secondary position ticks leads to active position and division by zero
medium
Infinite loop in path parsing leads to broken core contract functionality for opening leveraged positions with multiple pool swaps
high
Faulty Gauge Weight Update Formula: Voting Power Delta Not Considered Leading to Arithmetic Underflow and Vote Weight Inconsistency
high
`BaseGauge` users can claim rewards without staking
high
Gauge period cannot be updated
high
Multiple issues from unnecessary balance increase calculation in DebtToken.mint
high
Reward manipulation vulnerability in StabilityPool
high
RToken's transfer function lead to loss of funds due to incorrect math
high
NFTs Get Permanently Locked in Stability Pool After Liquidation
high
Double Usage Index Scaling in StabilityPool Liquidation Inflates Required CRVUSD Balance
high
Ownership Parameter Mismatch in LendingPool’s Vault Withdrawal Logic
high
Multiple calls to `BaseGauge::notifyRewardAmount()` override existing reward rate, causing loss of rewards for stakers
medium
Gauge reward period can be extended indefinitely
medium
Incorrect utilization rate forces protocol to issue maximum rewards indefinitely
medium
LendingPool::getNormalizedIncome() returns stale liquidity index
medium
Using balanceOf Instead of Voting Power
medium
`RToken::calculateDustAmount` are incorrectly calculated, leading to not be able to transfer the accrued dust amount
medium
LendingPool.getUserDebt returns outdated value and can lead to liquidation failure
medium
Liquidations are enabled when repayments are disabled, causing borrowers to lose funds without a chance to repay
medium
Owner Can Change Vote Results After Voting Ends by Updating Quorum Numbers for New proposals
medium
Paused Protocol Prevents Critical Functions Including Debt Repayment and Liquidations
medium
Missing Debt Token Supply Sync Leads to Incorrect Interest Rate Calculations
low
Incorrect Initialization of minBoost in BaseGauge Constructor Breaks Core Contract Functionality
low
Insufficient ETH Forwarding in Governance Execution Mechanism Causes Proposal Failures
Jan '25
medium
Dec '24
high
high
high
medium
medium
medium
medium
medium
Nov '24
Oct '24
Sep '24
high
high
high
high
high
medium
medium
high
Wrong owner initialization in incentive contracts will cause owner functions to be unusable
medium
Unrestricted `referralFee` will cause the protocol can not receive `claimFee` as a boost creator will set `boost.referralFee` to `100%`
medium
Incentive contracts can not be initialized with Fee on Transfer tokens
medium
`incentiveId_` is not included in the hash that is signed by the validator will allow anyone to claim for a user
Aug '24
high
A NFT's `_balances` is not updated during liquidation will cause `_balances` and `_totalSupply` to report a stale value
high
Incorrect deduction of `accruedToTreasuryShares` from `totalSupply.supplyShares` in `executeMintToTreasury` will cause broken accounting, insolvency
high
`POOL_ADMIN_ROLE` can set a pool's `interestRateStrategyAddress` to a bad address to cause loss of funds to a vault
high
An attacker can hijack the `CuratedVault`'s matured yield
high
Incorrect conversion between debt shares and supply collateral shares will cause incorrect calculation of liquidation rewards or debt deduction
high
Wrong calculation in `PositionBalanceConfiguration#getSupplyBalance` when `liquidityIndex > ray` will cause broken accounting
medium
Different oracle's decimals will cause wrong calculation in `GenericLogic#calculateUserAccountData`
medium
Wrong implementation of `CuratedVault#reallocate` when `allocation.assets = 0` will cause unknown frontrunning donations can not be withdrawn
medium
`CuratedVault` is vulnerable to an inflation attack when 18 decimals token is used as an asset
medium
In `NFTPositionManager`, `_totalSupply` and `_balances` will be stale when `borrowIndex` and `liquidityIndex` are increased
medium
Missing a `updateInterestRates` step in `executeMintToTreasury`
medium
Hardcoded oracle's heartbeat in `Pool` will cause using stale price in case of short heartbeat oracle and DoS in case of long heartbeat oracle
medium
`borrowIndex` increases faster than `liquidityIndex` will cause the borrowers overpay their debt
high
`_lockedETH` is not decreased in `WinnablesTicketManager#refundPlayers` will cause loss of funds to the owner when withdrawing ticket sales
high
In `WinnablesTicketManager`, an attacker can prevent CCIP messages in `cancelRaffle` and `propagateRaffleWinner` from being sent to `prizeManager` in the destination chain
high
An attacker can prevent the raffle from being created by exploiting permissionless raffle cancellation
medium
Winnables admins can prevent a winner from withdrawing their prize
medium
Admin can not deny roles to other users
Jul '24
high
Incorrect ownership check in `BribeRewarder#_modify` will prevent `Voter` from calling `BribeRewarder#deposit`
high
Users can not claim from `BribeRewarder` when `Voter#getLatestFinishedPeriod()` is greater than `BribeRewarder#_lastVotingPeriod + 1`
high
Incorrect order when setting top pool's weight will cause the `LUM` rewards to mint more than expected
high
Missing `sweep` function will left residual bribe rewards stuck in `BribeRewarder`
high
Missing remaining lock time check for `lsNFT` in `Voter#vote` will allow users double voting at the end of locking period
medium
Permissionless `BribeRewarder` registration will cause the bribing mechanism unavailable as an attacker will register `BribeRewarder`s with `_amountPerPeriod = 1 wei`
medium
Incorrect ownership check in `MlumStaking#addToPosition` will cause locking user's funds more than a week as an attacker will call `MlumStaking#addToPosition` to user's position at the end of locking period
medium
Rounding down `avgDuration` in `MlumStaking#addToPosition` allows users add `MLUM` to a position without extending `lockDuration` at the end of a locking period
medium
Rounding to zero while calculating `debtPerShare` in `MasterChefRewarder`, `BribeRwarder` when the rewards is low decimals token will prevent the rewards from accruing as an attacker will update the rewards every block
medium
Unclaimed rewards when emergency withdrawing are not redistributed in `MasterChef` and `MlumStaking`
Jun '24
high
Users won't liquidate positions because the logic used to calculate the liquidator's profit is incorrect
high
When `sellCreditMarket()` is called to sell credit for a specific cash amount, the protocol might receive a lower swapping fee than expected.
medium
Multicall does not work as intended
medium
LiquidateWithReplacement does not charge swap fees on the borrower
medium
withdraw() users may can't withdraw underlyingBorrowToken properly
May '24
high
medium
medium