Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
CodeHawks
Mar '25
Collaborative Audit • Sherlock • eeyore
Collaborative Audit • Sherlock • eeyore
Feb '25
Collaborative Audit • Sherlock • eeyore
Collaborative Audit • Sherlock • eeyore
Jan '25
Dec '24
Nov '24
Findings not publicly available for private contests.
Oct '24
Findings not publicly available for private contests.
Aug '24
high
Lack of access control in the `MarketFactory.updateExtension()` function.
medium
Corrupted storage after upgrade in the `MarketFactory` contract.
medium
Anyone can cancel other accounts `nonces` and `groups`, leading to griefing their `Intents`.
medium
The `Market.migrate()` function has no effect and does not migrate `PositionStorageGlobal` to the new storage layout, breaking the migration assumption.
medium
The `RiskParameter.liquidationFee` variable is not treated and validated as a percentage value, leading to breaking protocol invariants.
medium
Corruptible upgradability pattern.
medium
Incorrect `BUILD` integration in the `RedemptionVaultWIthBUIDL` contract.
medium
Contradiction between the Specification and the Code in the `RedemptionVaultWIthBUIDL` contract.
medium
Incorrect validation of the daily redemption limit in the `MBasisRedemptionVaultWithSwapper` contract.
high
Incorrect set up and logic of `referralInfoMap` in `SystemConfig::updateReferrerInfo` function
high
TokenManager - Unlimited withdraw
high
Taker of bid offer will loss assets without any benefit if he calls the DeliveryPlace::settleAskMaker() for partial settlement.
high
Native token withdrawal fails until manually approved
high
`DeliveryPlace::settleAskTaker` Has Incorrect Access Control
high
Formulaic Error Rounds Down Causing Total Loss Of Funds For Bid Takers During Abort
high
Malicious user can drain protocol by bypassing `ASK` offer abortion validation in `Turbo` mode
high
The `DeliveryPlace::settleAskTaker()` function mistakenly uses `makerInfo.tokenAddress` to update the `TokenBalanceType.PointToken` in the `userTokenBalanceMap` mapping, leading to a critical error.
high
Token withdrawal fails until someone manually approves spending
high
[H-4] The function `PreMarkets::listOffer` charges an incorrect collateral amount, allowing users to manipulating collateral rates and drain the protocol's funds
high
listOffer maker can settle offer via settleAskMaker() in Turbo settle type.
high
Fund Withdrawal Flaw in preMarket Allows Users to Avoid Settlement Obligations
high
Missing abort status check allows bid taker to steal users funds
low
Rounding Discrepancies in Deposit Amount Calculations
low
[Low-01] Missing Access Control in `CapitalPool::approve()` Function Allows any User to call it to set Allowance Amount `TokenContract` to `type(uint256).max`.
low
`listOffer` Unsafely References Fungible Identifiers
low
Wrong parameter in event AbortBidTaker()
low
Missing validation in `PreMarkets.abortBidTaker()` leading to funds lock.
low
When the `DeliveryPlace::settleAskMaker()` function calls `tokenManager.addTokenBalance()` to update the user balance, the `TokenBalanceType` parameter uses an operation, resulting in a balance update error
Jul '24
high
Malicious users can extend other users' deposit locks in `GaugeV4` by calling `OptionTokenV4.exerciseLp()` on them with minimal oToken values and the maximum discount.
high
Token price can be manipulated in `OptionTokenV4` when adding liquidity during the `exerciseLp()` or `exerciseVe()` function calls.
high
Griefing/blocking when exercising oToken via `OptionTokenV4.exerciseVe()` call.
high
Rewards from the previous epoch are lost and locked in the Voter contract for Gauges that are paused or killed in the current epoch.
high
Off-by-One error in the `RewardsDistributorV2._checkpoint_total_supply()` leading to incorrect reward calculation.
medium
Rounding errors in the `_k()` calculation for stable pairs can allow an attacker to drain all tokens from the pair.
medium
Incorrect calculation of team emissions in the `Minter` contract.
medium
Incorrect calculation of TWAP in OptionTokenV4.getTimeWeightedAveragePrice() function.
medium
`Voter.replaceFactory()` and `Voter.addFactory()` functions are broken.
medium
Governor cannot `poke()` a tokenId if votes were passed on to a Gauge that was later paused or killed.
Jun '24
403.89 USDC • 2 total findings • Sherlock • eeyore
#10
May '24
high
Liquidators can bypass remaining negative margin check and leave the loss to the protocol
high
One pair can steal another pair's Uniswap liquidity during `reallocate()` call if both pairs operate on the same Uniswap pool and both have the same upper and lower tick during reallocation.
medium
Chainlink's `latestRoundData` might return stale or incorrect results
Jan '24
high
When `DecentBridgeExecutor.execute` fails, funds will be sent to a random address
high
Anyone can update the address of the Router in the DcntEth contract to any address they would like to set.
medium
Missing access control on UTB:receiveFromBridge allows UTB swaps to be executed without spending bridge fees while bypassing fee/swap instruction signature verification
Oct '23
Aug '23
Jul '23