Payouts
1st Places
2nd Places
3rd Places
All
Code4rena
Apr '25
Mar '25
Jan '25
Jul '24
May '24
Apr '24
medium
`totalAssets()`, and thus `convertToShares()` and `convertToAssets()`, may revert, in violation of ERC-4626
medium
AccountingManager has no correct implementations of the core ERC-4626 functions `deposit`, `mint`, `withdraw` and `redeem`
medium
First depositor can make subsequent depositor lose all of her or his deposit
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
high
Inability to perform partial liquidations allows huge positions to accrue bad debt in the system
high
Unable to withdraw Kerosene from `vaultmanagerv2::withdraw` as it expects a `vault.oracle()` method which is missing in Kerosene vaults
medium
Value of kerosene can be manipulated to force liquidate users
medium
Incorrect deployment / missing contract will break functionality
medium
Liquidation bonus logic is wrong
Mar '24
high
Any fee claim lesser than the total `yieldFeeBalance` as unit of shares is lost and locked in the `PrizeVault` contract
medium
Funds locked due to missing transfer check
medium
`maxDeposit()` uses `yieldVault.maxDeposit()` but `_depositAndMint()` uses `yieldVault.mint()`
medium
`_maxYieldVaultWithdraw()` uses `yieldVault.convertToAssets()`
Feb '24
high
Holders array can be manipulated by transferring or burning with amount 0, stealing rewards or bricking certain functions
medium
Withdrawal from NFTs can be temporarily blocked
medium
Distribution can be bricked, and double claims by a few holders are possible when owner calls `LiquidInfrastructureERC20::setDistributableERC20s`
high
Malicious user can stake an amount which causes zero curStakeAtRisk on a loss but equal rewardPoints to a fair user on a win
high
A locked fighter can be transferred; leads to game server unable to commit transactions, and unstoppable fighters
high
Since you can reroll with a different fighterType than the NFT you own, you can reroll bypassing maxRerollsAllowed and reroll attributes based on a different fighterType
high
Players have complete freedom to customize the fighter NFT when calling `redeemMintPass` and can redeem fighters of types Dendroid and with rare attributes
high
Fighters cannot be minted after the initial generation due to uninitialized `numElements` mapping
medium
Almost all rarity rank combinations cannot be, and are not uniformly, generated
medium
Can mint NFT with the desired attributes by reverting transaction
medium
Fighter created by mintFromMergingPool can have arbitrary weight and element
Jan '24
high
Whitelised accounts can be forcefully DoSed from buying curveTokens during the presale
high
Unrestricted claiming of fees due to missing balance updates in `FeeSplitter`
medium
Selling will be bricked if all other tokens are withdrawn to ERC20 token
medium
onBalanceChange causes previously unclaimed rewards to be cleared
Nov '23
212.56 USDC • 2 total findings • Code4rena • d3e4
#14
Oct '23
Sep '23
Aug '23
May '23
Apr '23
Mar '23
high
An attacker can manipulate the preDepositvePrice to steal from other users.
high
Reth.sol: Withdrawals are unreliable and depend on excess RocketDepositPool balance which can brick the whole protocol
medium
sFrxEth may revert on redeeming non-zero amount
medium
No slippage protection on `stake()` in SafEth.sol
medium
Residual ETH unreachable and unuitilized in SafEth.sol
medium
Stuck ether when use function `stake` with empty `derivatives`(`derivativeCount` = 0)
medium
DoS due to external call failure
medium
Missing derivative limit and deposit availability checks will revert the whole `stake()` function
Feb '23
Jan '23
Nov '22
Oct '22
high
An attacker can manipulate each pod and gain an advantage over the remainder Operators
medium
Bad source of randomness
medium
`_payoutToken[s]()` is not compatible with tokens with missing return value
medium
`_payoutEth()` calculates `balance` with an offset, always leaving dust `ETH` in the contract
Sep '22
Aug '22