Security Researcher
19π§βπ» | Web3 dev βοΈ | Solo Auditor π | Writerπ | Cohort#4 @DappCamp_ DM for a private audit π π
High
Total
Medium
Total
Total Earnings
#154 All Time
Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Immunefi
Dec '24
Oct '24
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
Exposed `_removeCredIdPerAddress` & `_addCredIdPerAddress` allows anyone to cause issues to current holders as well as upcoming ones
high
Forced endTime extension in updateArtSettings() allows attacker to mint more tokens
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
Contract `PhiNFT1155` can't be paused
medium
Attacker can DOS user from selling shares of a credId
medium
PhiNFT1155 contracts continue sending fees/royalties to old protocol destination address
medium
Lack of data validation when users are claiming their art allows malicious user to bypass signature/merkle hash to provide unapproved `ref_`, `artId_` and `imageURI`
Jul '24
high
Malicious User can call `lockOnBehalf` repeatedly extend a users `unlockTime`, removing their ability to withdraw previously locked tokens
high
Invalid validation allows users to unlock early
high
Single plot can be occupied by multiple renters
high
in `farmPlots()` an underflow in edge case leading to freeze of funds (NFT)
high
[H-01] Miscalculation in `_farmPlots` function could lead to a user unable to unstake all NFTs
high
Invalid validation in _farmPlots function allowing a malicious user repeated farming without locked funds
medium
When `LockManager.lockOnBehalf` is called from `MigrationManager`, the user's `reminder` will be set to 0, resulting in fewer received `MunchableNFTs`
medium
Missing disapproval check in `LockManager.sol::approveUSDPrice` allows simultaneous approval and disapproval of a price proposal
medium
Users can farm on zero-tax land if the landlord locked tokens before the LandManager deployment
Jun '24
May '24
high
Malicious User can call `lockOnBehalf` repeatedly extend a users `unlockTime`, removing their ability to withdraw previously locked tokens
high
Invalid validation allows users to unlock early
high
Single plot can be occupied by multiple renters
high
in `farmPlots()` an underflow in edge case leading to freeze of funds (NFT)
high
[H-01] Miscalculation in `_farmPlots` function could lead to a user unable to unstake all NFTs
high
Invalid validation in _farmPlots function allowing a malicious user repeated farming without locked funds
medium
When `LockManager.lockOnBehalf` is called from `MigrationManager`, the user's `reminder` will be set to 0, resulting in fewer received `MunchableNFTs`
medium
Missing disapproval check in `LockManager.sol::approveUSDPrice` allows simultaneous approval and disapproval of a price proposal
medium
Users can farm on zero-tax land if the landlord locked tokens before the LandManager deployment
Apr '24
high
`executeWithdraw` may be blocked if any of the users are blacklisted from the `baseToken`
high
`NoyaValueOracle.getValue` returns an incorrect price when a multi-token route is used
high
Base tokens like USDT, USDC having different decimals on different chains can have their TVL updated incorrectly
medium
`AccountingManager#totalWithdrawnAmount` should reflect tokens actually transferred to users, instead of expected transfers
medium
The modifier `onlyExistingRoute` works incorrectly
medium
AccountingManager has no correct implementations of the core ERC-4626 functions `deposit`, `mint`, `withdraw` and `redeem`
medium
`Keepers` does not implement EIP712 correctly on multiple occasions
medium
Incorrect modifier condition
medium
Stale price can be used in `getValueFromChainlinkFeed` function
medium
Contract does not earn any boosted position rewards in Maverick Connector
high
Attacker can make 0 value deposit() calls to deny user from redeeming or withdrawing collateral
high
Inability to perform partial liquidations allows huge positions to accrue bad debt in the system
high
User can get their Kerosene stuck because of an invalid check on withdraw
medium
`VaultManagerV2.sol::burnDyad` function is missing an `isDNftOwner` modifier, allowing a user to burn another user's minted DYAD
medium
Attacker can frontrun to prevent vaults from being removed from the dNFT owner's position
medium
No incentive to liquidate small positions could result in protocol going underwater
Mar '24
high
Taiko L1 - Proposer can maliciously cause loss of funds by forcing someone else to pay prover's fee
high
Users will never be able to withdraw their claimed airdrop fully in ERC20Airdrop2.sol contract
medium
Incorrect __Essential_init() function is used in TaikoToken making snapshooter devoid of calling snapshot()
medium
retryMessage unable to handle edge cases.
Feb '24
medium
low
low
low
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(...)`
high
FighterFarm:: reroll won't work for nft id greator than 255 due to input limited to uint8
medium
Constraints of dailyAllowanceReplenishTime and allowanceRemaining during mint() can be bypassed by using alias accounts & safeTransferFrom()
medium
Burner role can not be revoked
medium
DoS in `MergingPool::claimRewards` function and potential DoS in `RankedBattle::claimNRN` function if called after a significant amount of rounds passed.
medium
Fighter created by mintFromMergingPool can have arbitrary weight and element
Jan '24
high
When `DecentBridgeExecutor.execute` fails, funds will be sent to a random address
high
Users will lose their cross-chain transaction if the destination router do not have enough WETH reserves.
high
Anyone can update the address of the Router in the DcntEth contract to any address they would like to set.
medium
DecentEthRouter.sol#_bridgeWithPayload() - Any refunded ETH (native token) will be refunded to the DecentBridgeAdapter, making them stuck
medium
Missing access control on UTB:receiveFromBridge allows UTB swaps to be executed without spending bridge fees while bypassing fee/swap instruction signature verification
high
Attack to make ````CurveSubject```` to be a ````HoneyPot````
high
Unauthorized Access to setCurves Function
medium
Protocol and referral fee would be permanently stuck in the Curves contract when selling a token
medium
Curves::_buyCurvesToken(), Excess of Eth received is not refunded back to the user.
medium
Withdrawing with amount = 0 will forcefully set name and symbol to default and disable some functions for token subject
Dec '23
high
Incorrect amounts of ETH are transferred to the DAO treasury in `ERC20TokenEmitter::buyToken()`, causing a value leak in every transaction
medium
MaxHeap.sol: Already extracted tokenId may be extracted again.
medium
positionMapping for last element in heap is not updated when extracting max element
medium
Bidder can use donations to get VerbsToken from auction that already ended.
Nov '23
278.33 USDC β’ Code4rena β’ MrPotatoMagic
#11
Oct '23
high
Attacker can drain all ETH from AuctionDemo when block.timestamp == auctionEndTime
high
Attacker can reenter to mint all the collection supply
high
Multiple mints can brick any form of `salesOption` 3 mintings
medium
Bidder Funds Can Become Unrecoverable Due to 1 second Overlap in `participateToAuction()` and `claimAuction()`
medium
Approved address can approve other addresses for an owner's safe
medium
SafeHandler contract doesn't have any method to call to `ODSafeManager.allowHandler()`, lead to DOS in some function
medium
Old permissions in handlerCan mapping are still attached to the safeHandler of a transferred safe
medium
`ODSafeManager#allowSAFE()` cannot be executed either by the proxy contract or any other address.
Sep '23
Aug '23
Jul '23
1,132.09 USDC β’ Code4rena β’ MrPotatoMagic
#4
Jun '23
May '23