Payouts
1st Places
2nd Places
3rd Places
All
Code4rena
CodeHawks
Aug '24
high
Unrestricted Changes to Token Settings Allow Artists to Alter Critical Features
high
Reentrancy Vulnerability Allows Bypass of Cooldown, Leading to Unfair Reward Extraction Through Flash Loan
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
medium
Attacker can DOS user from selling shares of a credId
medium
PhiNFT1155 contracts continue sending fees/royalties to old protocol destination address
Jul '24
high
Single plot can be occupied by multiple renters
high
Failure to Update Dirty Flag in transferToUnoccupiedPlot Prevents Reward Accumulation On Valid Plot
high
in `farmPlots()` an underflow in edge case leading to freeze of funds (NFT)
high
Invalid validation in _farmPlots function allowing a malicious user repeated farming without locked funds
medium
Users can farm on zero-tax land if the landlord locked tokens before the LandManager deployment
medium
Not upadting `_totalAuctionTokenAllocation` when removing last auction config at cooldown leads to wrong accounting of `_totalAuctionTokenAllocation` and permanent lock of auction tokens
medium
Changes to vesting period is not handled inside `_getVestingRate`
low
TempleGold tokens cannot be recovered when a `DaiGoldAuction` ends with 0 bids
Apr '24
high
The amount of `xezETH` in circulation will not represent the amount of `ezETH` tokens 1:1
high
Incorrect withdraw queue balance in TVL calculation
high
Withdrawals logic allows MEV exploits of TVL changes and zero-slippage zero-fee swaps
high
Incorrect calculation of queued withdrawals can deflate TVL and increase ezETH mint rate
medium
Potential Arbitrage Opportunity in the xRenzoDeposit L2 contract
medium
Deposits will always revert if the amount being deposited is less than the bufferToFill value
medium
Not handling the failure of cross chain messaging
medium
Lack of slippage and deadline during withdraw and deposit
medium
Withdrawals and Claims are meant to be pausable, but it is not possible in practice
Mar '24
Feb '24
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
Player can mint more fighter NFTs during claim of rewards by leveraging reentrancy on the `claimRewards() function `
high
Fighters cannot be minted after the initial generation due to uninitialized `numElements` mapping
high
Non-transferable `GameItems` can be transferred with `GameItems::safeBatchTransferFrom(...)`
medium
NFTs can be transferred even if StakeAtRisk remains, so the user's win cannot be recorded on the chain due to underflow, and can recover past losses that can't be recovered(steal protocol's token)
medium
Constraints of dailyAllowanceReplenishTime and allowanceRemaining during mint() can be bypassed by using alias accounts & safeTransferFrom()
medium
Fighter created by mintFromMergingPool can have arbitrary weight and element
Jan '24
high
User can evade `liquidation` by depositing the minimum of tokens and gain time to not be liquidated
high
First Liquidity provider can claim all initial pool rewards
medium
changeWallets() can be confirmed immediately after proposalWallets() by manipulating activeTimelock beforehand
medium
DOS of proposals by abusing ballot names without important parameters
medium
Unwhitelisting does not clear _arbitrageProfits, so re-whitelisting may result in an unfair distribution of liquidity rewards.
medium
If there is only one USDS borrower, he can never be liquidated
Dec '23
high
Looping over unbounded `pendingStakes` array can lead to permanent DoS and frozen funds
high
swap fees going to the liquidation pool manager contract will be accounted for as part of the liquidation amount
medium
Divergence in the pricing method for collateral within the `calculateMinimumAmountOut()` may result in vaults transitioning into an uncollateralized state after executing swaps.
medium
Incorrect calculation of amount of EURO to burn during liquidation
medium
Removing assets in the `TokenManager` leads to major issues
low
Removal of approved token from token manager can lead to unintended liquidation of vaults
low
Incorrect value returned by position() function
high
Incorrect amounts of ETH are transferred to the DAO treasury in `ERC20TokenEmitter::buyToken()`, causing a value leak in every transaction
medium
Once EntropyRateBps is set too high, can lead to denial-of-service (DoS) due to an invalid ETH amount
medium
CultureIndex.sol#dropTopVotedPiece() - Malicious user can manipulate topVotedPiece to DoS the whole CultureIndex and AuctionHouse
medium
Bidder can use donations to get VerbsToken from auction that already ended.
medium
`encodedData` argument of `hashStruct` is not calculated perfectly for EIP712 singed messages in `CultureIndex.sol`
Nov '23
Oct '23
high
`GMXVault` can be blocked by a malicious actor
high
Incorrect Execution Fee Refund address on Failed Deposits or withdrawals in Strategy Vaults
medium
`emergencyPause` does not check the state before running && can cause loss of funds for users
medium
Setter functions for core GMX contracts
medium
Missing minimum token amounts in the emergency contract functions allows MEV bots to take advantage of the protocols emergency situation
medium
Inaccurate Fee Due to missing lastFeeCollected Update Before feePerSecond Modification
medium
emergencyResume does not handle the afterDepositCancellation case correctly
high
Lenders can escape the blacklisting of their accounts because they can move their MarketTokens to different accounts and gain the WithdrawOnly Role on any account they want
high
When withdrawalBatchDuration is set to zero lenders can withdraw more then allocated to a batch
high
Borrower has no way to update `maxTotalSupply` of `market` or close market.
high
Borrowers can escape from paying half of the penalty fees by closing the market, and those remaining penalty fees will be covered by the lender who withdraws last
high
Borrower can drain all funds of a sanctioned lender
medium
Function WildcatMarketController.setAnnualInterestBips allows for values outside the factory range
medium
`create2WithStoredInitCode()` does not revert if contract deployment failed
medium
Blocked accounts keep earning interest contrary to the WhitePaper
Sep '23
high
Users can avoid liquidation while being under the primary liquidation ratio if on the last short record
high
Flag can be overriden by another user
medium
Combining shorts can incorrectly reset the shorts flag
low
Incorrect check for cRation_MAX
low
Lack of Duplicate ID Check in combineShorts Function
low
Partial filled short does not reset liquidation flag after user gets fully liquidated, meaning healthy position will still be flagged if the rest of the order gets filled.
low
Missing minimum and maximum deposit checks for bridge contract interactions
low
Event in secondaryLiquidation could be misused to show false liquidations
Aug '23
high
The settle feature will be broken if attacker arbitrarily transfer collateral tokens to the PerpetualAtlanticVaultLP
high
The peg stability module can be compromised by forcing lowerDepeg to revert.
high
Users can get immediate profit when deposit and redeem in `PerpetualAtlanticVaultLP`
high
`UniV3LiquidityAMO::recoverERC721` will cause `ERC721` tokens to be permanently locked in `rdpxV2Core`
medium
`sync` function in `RdpxV2Core.sol` should be called in multiple scenarios to account for the balance changes that occurs
Jul '23
high
Tokens with less than 18 decimals allow for draining of funds
high
Sandwich attack to steal all ERC-20 tokens in the Fees contract
high
During refinance() new Pool balance debt is subtracted twice
high
[H-04] Lender#buyLoan - Malicious user could take over a loan for free without having a pool because of wrong access control
high
Fee on transfer tokens will cause users to lose funds
high
Token spending by Uniswap router doesn't get approved
medium
No expiration deadline leads to losing a lot of funds
medium
Lender contract can be drained by re-entrancy in `seizeLoan`
low
Rounding error risk in borrow() function in Lender.sol
329.35 USDC • 4 total findings • CodeHawks • 0xCiphky
#16
May '23