Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Jan '25
Oct '24
Aug '24
high
There is no refund mechanism in `ChakraSettlement.processCrossChainCallback` or `ChakraSettlementHandler.receive_cross_chain_callback` function
high
`ChakraSettlement.receive_cross_chain_msg` and `ChakraSettlement.receive_cross_chain_callback` functions do not ensure that receiving `ChakraSettlement` contract's `contract_chain_name` must match `to_chain` corresponding to respective `txid` input though
high
Invalid token address used in `ChakraSettlementHandler::cross_chain_erc20_settlement(...)` leading to invalid transaction creation and event emission
medium
Settlement contract is mistakenly used for the handler contract when assigning ReceivedCrossChainTx struct
medium
Does not check if to_chain and to_handler is whitelisted in cross_chain_erc20_settlement
medium
SettlementSignatureVerifier's required_validators is not updated, resulting in a low or high number of signatures being required
high
Unrestricted Changes to Token Settings Allow Artists to Alter Critical Features
high
Signature replay in `signatureClaim` results in unauthorized claiming of rewards
high
Signature replay in `createArt` allows to impersonate artist and steal royalties
medium
`PhiFactory:claim` Potentially Causing Loss of Funds If `mintFee` Changed Beforehand
medium
Refunds sent to incorrect addresses in certain cases
medium
Incorrect Fee Handling Prevents Protocol from Updating Fees
Jul '24
high
The maximum number of generations is infinite
high
Number of entities in generation can surpass the 10k number
high
Wrong minting logic based on total token count across generations
medium
Forger Entities can forge more times than intended
medium
NFTs mature too slowly under default settings.
medium
Discrepancy between nfts minted, price of nft when a generation changes & position of `_incrementGeneration()` inside `_mintInternal()` & `_mintNewEntity()`
medium
Incorrect check against golden entropy value in the first two batches
Jun '24
May '24
Apr '24
high
`executeWithdraw` may be blocked if any of the users are blacklisted from the `baseToken`
high
Value of asset token can be incorrect when usage of ETH/USD Chainlink oracle is needed
medium
`AccountingManager#totalWithdrawnAmount` should reflect tokens actually transferred to users, instead of expected transfers
medium
Withdrawals in AccountManager are prone to DOS attacks.
medium
Attacker can increase the length of `withdrawQueue` by withdrawing 0 amount of tokens frequently
medium
First depositor can make subsequent depositor lose all of her or his deposit
medium
Stale price can be used in `getValueFromChainlinkFeed` function
medium
`maxDeposit`, `maxMint`, `maxWithdraw`, and `maxRedeem` functions do not return 0 when they should
medium
`AccountingManager` contract's `previewDeposit`, `previewMint`, `previewWithdraw`, and `previewRedeem` functions are not compliant with EIP-4626 standard
medium
`performanceFeeReceiver` cannot mint any performance fee shares even if TVL is dropped by only a very tiny amount
medium
Noya is not compatible with tokens whose balance changes outside of transfers causing funds to get stuck in the contract
high
`revokeVestingSchedule` function, when called after staking token withdrawal of the user whose vesting schedule is to be revoked, incorrectly reduces `_totalSupply` and `_totalSupplyCheckpoints` at `block.number` to values that are lower than what they should be
high
`ZivoeRewards.depositReward` and `ZivoeRewardsVesting.depositReward` functions can be called with 0 as `reward` input
high
Calling `revokeVestingSchedule` function does not reduce `_checkpoints[account]` at `block.number` to 0
medium
Calling `ZivoeITO.migrateDeposits`, `ZivoeRewards.getRewards`, and `ZivoeRewardsVesting.getRewards` functions can revert if `transfer` function of one of relevant tokens fails due to contract pausing or sender/receiver blocking
medium
Unclaimable portion of deposited reward token amount can be locked in corresponding `ZivoeRewards` or `ZivoeRewardsVesting` contract
Jan '24
Dec '23
medium
Re-triggering the `canOffboard[term]` flag to bypass the DAO vote of the lending term offboarding mechanism
medium
Incorrect calculations in debtCeiling
medium
LendingTerm::debtCeiling() can return wrong debt as the min() is evaluated incorrectly
medium
LendingTerm.sol#_partialRepay() A user cannot partial repay a loan with 0 interest
medium
Malicious borrower can decrease Guild holders reward
May '23
medium
Slippage controls for calling `bHermes` contract's `ERC4626DepositOnly.deposit` and `ERC4626DepositOnly.mint` functions are missing
medium
Although `ERC20Boost.decrementGaugesBoostIndexed` function would require user to remove all of her or his boost from a deprecated gauge at once, such user can instead call `ERC20Boost.decrementGaugeBoost` function for multiple times to utilize such deprec
high
Delegation rewards are not counted toward granting fund
medium
Calling `StandardFunding.screeningVote` function and `ExtraordinaryFunding.voteExtraordinary` function when `block.number` equals respective start block and when `block.number` is bigger than respective start block can result in different available votes
Apr '23
high
Reward accounting is incorrect in BathBuddy contract
medium
Incorrect fee handling in Position.sol's Market Buy/Sell functions
medium
Calling `Position._marketSell` function compares `fill_amt` that includes fee to `min_fill_amount` that does not include fee
medium
Incorrect calculations can occur when calling `Position._marketBuy` and `Position._marketSell` functions that do not include maker fee in `_fee`
medium
Calling `Position._marketBuy` and `Position._marketSell` functions that calculate `_fee` by dividing by `10000` can cause incorrect calculations
medium
User can possess less value than before when `V2Migrator.migrate` function is called to give up bathTokenV1 tokens and hold bathTokenV2 tokens
medium
Calling `ExpiringMarket.stop` and `ExpiringMarket.isClosed` functions cannot pause any functionlities of the market
Mar '23
high
A temporary issue shows in the staking functionality which leads to the users receiving less minted tokens.
high
`WstEth` derivative assumes a ~1=1 peg of stETH to ETH
high
Price of sfrxEth derivative is calculated incorrectly
high
Users can fail to unstake and lose their deserved ETH because malfunctioning or untrusted derivative cannot be removed
medium
No slippage protection on `stake()` in SafEth.sol
medium
Missing derivative limit and deposit availability checks will revert the whole `stake()` function
medium
Lack of deadline for uniswap AMM
Feb '23
high
When calling `BlueBerryBank.withdrawLend` function, it is possible that extra amount, which is the difference between withdrawn amount from soft vault and position's `underlyingAmount`, remains in `BlueBerryBank` contract without belonging to anyone
high
User is able to reduce a position by withdrawing more collateral than she or he should be allowed to
medium
`BlueBerryBank.withdrawLend` function cannot be paused
medium
Chainlink's reported `answer` can be being carried over and stale
medium
Making a deposit to an ICHI vault that would cause the position size to exceed the vault's maximum position size can be incorrectly allowed
Jan '23
high
First vault depositor can steal other's assets
medium
syncFeeCheckpoint() does not modify the highWaterMark correctly, sometimes it might even decrease its value, resulting charging more performance fees than it should
medium
Vault fees can be set to anything when initilizing
medium
Fee on transfer token not supported
medium
`Vault.redeem` function does not use `syncFeeCheckpoint` modifier
medium
cool down time period is not properly respected for the `harvest` method
medium
Users can fail to withdraw deposited assets from a vault that uses `YearnAdapter` contract as its adapter because `maxLoss` input for calling corresponding Yearn vault's `withdraw` function cannot be specified
medium
Total assets of yearn vault are not correct
medium
`Vault::takeFees` can be front run to minimize `accruedPerformanceFee`
high
Protocol fees can be withdrawn multiple times in `Erc20Quest`
high
Bad implementation in minter access control for `RabbitHoleReceipt` and `RabbitHoleTickets` contracts
medium
Possible scenario for Signature Replay Attack
medium
Buyer on secondary NFT market can lose fund if they buy a NFT that is already used to claim the reward
medium
Users may not claim Erc1155 rewards when the Quest has ended
high
Strategist can fail to withdraw asset token from a private vault
high
ERC4626Cloned deposit and mint logic differ on first deposit
medium
For a public vault, minimum deposit requirement that is enforced by `ERC4626Cloned.deposit` function can be bypassed by `ERC4626Cloned.mint` function or vice versa when share price does not equal one
medium
Users are unable to mint shares from a public vault using `AstariaRouter` contract when share price is bigger than one
Dec '22
medium
Trading will not work on ethereum if USDT is used
medium
Centralization risks: owner can freeze withdraws and use timelock to steal all funds
medium
`_handleDeposit` and `_handleWithdraw` do not account for tokens with decimals higher than 18
medium
Governance NFT holder, whose NFT was minted before `Trading._handleOpenFees` function is called, can lose deserved rewards after `Trading._handleOpenFees` function is called
medium
Chainlink price feed is not sufficiently validated and can return stale price
Nov '22
high
Old stakers can steal deposits of new stakers in `StakingFundsVault`
medium
EIP1559 rewards received by syndicate during the period when it has no registered knots can be lost
medium
ETH sent when calling `executeAsSmartWallet` function can be lost
medium
Calling `updateNodeRunnerWhitelistStatus` function always reverts
medium
Node runner who is already known to be malicious cannot be banned before corresponding smart wallet is created
medium
Compromised or malicious DAO can restrict actions of node runners who are not malicious
Oct '22
medium
Calling `repay` function sends less DOLA to `Market` contract when `forceReplenish` function is not called while it could be called
medium
Chainlink oracle data feed is not sufficiently validated and can return stale `price`
medium
Protocol's usability becomes very limited when access to Chainlink oracle data feed is blocked
high
First depositor can manipulate share price and steal next depositor's deposited LINK amount
medium
After `initialize` function is called and before `deposit` or `onTokenTransfer` function is called for the first time for a deployed vault, an attacker can directly transfer `1 wei` of LINK to the vault to force subsequent depositors to receive `0` myLINK shares and lose all deposited LINK amounts
Sep '22
medium
Incompatibility With Rebasing/Deflationary/Inflationary tokens
medium
It is possible that, after swapping, extra input token amount is transferred from user to pool but pool does not give user output token amount that corresponds to the extra input token amount
medium
A "FrontRunning attack" can be made to the `initialize` function
medium
`safeTransfer` function does not check for existence of ERC20 token contract
high
Users who deposit in one vault can lose all deposits and receive nothing when counterparty vault has no deposits
high
Depeg event can happen at incorrect price
medium
It is possible that receiver and treasury can receive nothing when calling `withdraw` function due to division being performed before multiplication
medium
`timewindow` can be changed unexpectedly that blocks users from calling `deposit` function
medium
A proposal can be cancelled by anyone if the proposal has exactly proposalThreshold votes
medium
Truncation in casting can lead to a founder receiving all the base tokens
medium
A proposal can pass with 0 votes in favor at early DAO stages
medium
Auction parameters can be changed during ongoing auction
medium
Quorum votes have no effect for determining whether proposal is defeated or succeeded when token supply is low
medium
Compromised or malicious vetoer can veto any proposals with unrestricted power
medium
State function does not require majority of votes for supporting and passing a proposal
Aug '22
medium
Chainlink oracle data feeds are not sufficiently validated and can lead to incorrect account actions
medium
User cannot liquidate account when calling `sweepTo` function reverts
medium
Lenders could lose native ETH amounts that they lent out because borrowers cannot successfully repay these given that there is an `LToken` contract for native ETH
medium
After endorsing a proposal, user can transfer votes to another user for endorsing the same proposal again
medium
Endorsed votes by a user do not decrease after the user's votes are revoked
medium
Voted votes cannot change after the user are issued with new votes or the user's old votes are revoked during voting
medium
No Cap on Amount of VOTES means the `voter_admin` can get any proposal to pass
medium
[NAZ-M1] Chainlink's `latestRoundData` Might Return Stale Results
medium
Moving average precision is lost
high
Builder can halve the interest paid to a community owner due to arithmetic rounding
high
Wrong APR can be used when project is unpublished and published again
medium
Builders must pay more interest when the system is paused.
medium
It should not submit a project with no total budget. Requires at least one task with cost > 0
medium
Owner of project NFT has no purpose
Jul '22