Security Researcher
Independent Security Researcher | Lead Security Researcher @SpearbitDAO | Fellow @paradigm | Warden & Judge @code4rena
High
Total
Medium
Total
Total Earnings
#15 All Time
Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Mar '23
Sep '22
May '22
high
SpeedBumpPriceGate: Excess ether did not return to the user
medium
Malicious token reward could disable withdrawals
medium
safeTransferFrom is recommended instead of transfer (1)
medium
amount requires to be updated to contract balance increase (1)
medium
ERC20 tokens with different decimals than 18 leads to loss of funds
medium
Centralisation Risk: Owner may abuse the tax rate to claim 99.9% of pools
Apr '22
Mar '22
high
Duplicate NFTs Can Be Minted if `payableToken` Has a Callback Attached to it
high
Splitter: Anyone can call incrementWindow to steal the tokens in the contract
high
CoreCollection can be reinitialized
high
ERC20 transferFrom return values not checked
high
Centralisation RIsk: Owner Of `RoyaltyVault` Can Take All Funds
medium
`RoyaltyVault.sol` is Not Equipped to Handle On-Chain Royalties From Secondary Sales
medium
Ineffective Handling of FoT or Rebasing Tokens
Feb '22
high
NFT owner can create multiple auctions
high
An offer made after auction end can be stolen by an auction winner
medium
Primary seller can avoid paying the primary fee
medium
Fees Are Incorrectly Charged on Unfinalized NFT Sales
medium
There is no Support For The Trading of Cryptopunks
medium
`buyFromPrivateSaleFor()` Will Fail if The Buyer Has Insufficient Balance Due to an Open Offer on The Same NFT
medium
`_getCreatorPaymentInfo()` is Not Equipped to Handle Reverts on an Unbounded `_recipients` Array
medium
`adminAccountMigration()` Does Not Update `buyPrice.seller`
high
Shelter `claimed` mapping is set with `_to` address and not `msg.sender`
high
Masterchef: Improper handling of deposit fee
high
`ConvexStakingWrapper.exitShelter()` Will Lock LP Tokens, Preventing Users From Withdrawing
high
`ConvexStakingWrapper._calcRewardIntegral()` Can Be Manipulated To Steal Tokens From Other Pools
high
[WP-H8] `ConvexStakingWrapper.sol#_calcRewardIntegral` Wrong implementation can disrupt rewards calculation and distribution
high
[WP-H13] `MasterChef.sol` Users won't be able to receive the `concur` rewards
high
[WP-H14] `ConvexStakingWrapper`, `StakingRewards` Wrong implementation will send `concur` rewards to the wrong receiver
high
Wrong reward token calculation in MasterChef contract
high
Repeated Calls to Shelter.withdraw Can Drain All Funds in Shelter
high
USDMPegRecovery Risk of fund locked, due to discrepancy between curveLP token value against internal contract math
medium
`MasterChef.updatePool()` Fails To Update Reward Variables If `block.number >= endBlock`
medium
`ConvexStakingWrapper.enterShelter()` May Erroneously Overwrite `amountInShelter` Leading To Locked Tokens
medium
Users Will Lose Rewards If The Shelter Mechanism Is Enacted Before A Recent Checkpoint
medium
Users Will Lose Concur Rewards If The Shelter Mechanism Is Enacted On A Pool
medium
If The Staking Token Exists In Both `StakingRewards.sol` And `ConvexStakingWrapper.sol` Then It Will Be Possible To Continue Claiming Concur Rewards After The Shelter Has Been Activated
medium
Donated Tokens Cannot Be Recovered If A Shelter Is Deactivated
medium
[ConcurRewardPool] Possible reentrancy when claiming rewards
medium
`USDMPegRecovery.provide()` Will Fail If There Is An Excess Of `usdm` Tokens
Jan '22
high
DAO proposals can be executed by anyone due to vulnerable TimelockController
high
DOS by Frontrunning NoteERC20 `initialize()` Function
high
Potential DOS in Contracts Inheriting `UUPSUpgradeable.sol`
high
Treasury cannot claim COMP tokens & COMP tokens are stuck
high
A Malicious Treasury Manager Can Burn Treasury Tokens By Setting `makerFee` To The Amount The Maker Receives
medium
`_validateOrder` Does Not Allow Anyone To Be A Taker Of An Off-Chain Order
medium
`getVotingPower` Is Not Equipped To Handle On-Chain Voting
medium
Usage of deprecated ChainLink API in `EIP1271Wallet`
medium
`sNOTE` Holders Are Not Incetivized To Vote On Proposals To Call `extractTokensForCollateralShortfall`
high
Malicious Market Creators Can Steal Tokens From Unsuspecting Approved Reference Accounts
high
[WP-H33] `IndexTemplate.sol` Wrong implementation allows lp of the index pool to resume a locked `PayingOut` pool and escape the responsibility for the compensation
medium
System Debt Is Not Handled When Insurance Pools Become Insolvent
high
deposit() function is open to reentrancy attacks
high
Vaults with non-UST underlying asset vulnerable to flash loan attack on curve pool
medium
A Single Malicious Trusted Account Can Takeover Parent Contract
medium
`investedAssets()` Does Not Take Into Consideration The Performance Fee Charged On Strategy Withdrawals
medium
unsponsor, claimYield and withdraw might fail unexpectadly
Dec '21
high
Anyone Can Arbitrarily Mint Synthetic Assets In `VaderPoolV2.mintSynth()`
high
Anyone Can Arbitrarily Mint Fungible Tokens In `VaderPoolV2.mintFungible()`
high
Incorrect Price Consultation Results
high
Newly Registered Assets Skew Consultation Results
high
Incorrect Accrual Of `sumNative` and `sumUSD` In Producing Consultation Results
high
`previousPrices` Is Never Updated Upon Syncing Token Price
high
`totalLiquidityWeight` Is Updated When Adding New Token Pairs Which Skews Price Data For `getVaderPrice` and `getUSDVPrice`
high
`VaderPoolV2` minting synths & fungibles can be frontrun
high
`USDV.sol` Mint and Burn Amounts Are Incorrect
high
Oracle doesn't calculate USDV/VADER price correctly
medium
`BasePool.mint()` Is Callable By Anyone
medium
`BasePool.swap()` Is Callable By Anyone
medium
Lacking Validation Of Chainlink' Oracle Queries
medium
Users Can Reset Bond Depositor's Vesting Period
high
A vault can be locked from MarketplaceZap and StakingZap
medium
transfer return value is ignored
medium
`buyAndSwap1155WETH` Does Not Work As Intended
medium
Dishonest Stakers Can Siphon Rewards From `xToken` Holders Through The `deposit` Function In `NFTXInventoryStaking`
medium
`xToken` Approvals Allow Spenders To Spend More Tokens
high
Malicious tickets can lead to the loss of all tokens
high
Continue claiming reqrds after numberOfEpochs are over
high
Backdated _startTimestamp can lead to loss of funds
medium
Missing Check When Transferring Tokens Out For A Given Promotion
medium
Dust Token Balances Cannot Be Claimed By An `admin` Account
Nov '21
medium
Users Can Contribute To An Auction Without Directly Committing Collateral Tokens
medium
`StabilizerNode` Will Mint An Incentive For Triggering An Auction Even If An Auction Exists Already
medium
_notSameBlock() can be circumvented in bondToAccount()
medium
`_calculateMaltRequiredForExit` Uses Spot Price To Calculate Malt Quantity In `exitEarly`
medium
Frontrunning in UniswapHandler calls to UniswapV2Router
medium
`addLiquidity` Does Not Reset Approval If Not All Tokens Were Added To Liquidity Pool
medium
`_distributeRewards` Does Not Reset Approval If Not All Tokens Were Allocated
medium
Malt Protocol Uses Stale Results From `MaltDataLab` Which Can Be Abused By Users
medium
theft of system profit
high
Anyone Can Arbitrarily Mint Synthetic Assets In `VaderPoolV2.mintSynth()`
high
Anyone Can Arbitrarily Mint Fungible Tokens In `VaderPoolV2.mintFungible()`
high
Incorrect Price Consultation Results
high
Newly Registered Assets Skew Consultation Results
high
Incorrect Accrual Of `sumNative` and `sumUSD` In Producing Consultation Results
high
`previousPrices` Is Never Updated Upon Syncing Token Price
high
`totalLiquidityWeight` Is Updated When Adding New Token Pairs Which Skews Price Data For `getVaderPrice` and `getUSDVPrice`
high
`VaderPoolV2` minting synths & fungibles can be frontrun
high
`USDV.sol` Mint and Burn Amounts Are Incorrect
high
Oracle doesn't calculate USDV/VADER price correctly
medium
`BasePool.mint()` Is Callable By Anyone
medium
`BasePool.swap()` Is Callable By Anyone
medium
Lacking Validation Of Chainlink' Oracle Queries
medium
Users Can Reset Bond Depositor's Vesting Period
Oct '21
high
registerAsset() can overwrite _assetClass value
high
`treasuryShare` is Overwritten in `FeePoolV0._shareMochi()`
high
Tokens Can Be Stolen By Frontrunning `VestedRewardPool.vest()` and `VestedRewardPool.lock()`
medium
Improper Validation Of `create2` Return Value
medium
`MochiTreasuryV0.withdrawLock()` Is Callable When Locking Has Been Toggled
medium
`MochiTreasuryV0.sol` Is Unusable In Its Current State
medium
Unchecked ERC20 transfer calls
medium
Chainlink's `latestRoundData` might return stale or incorrect results
Sep '21
Aug '21
high
DAO proposals can be executed by anyone due to vulnerable TimelockController
high
DOS by Frontrunning NoteERC20 `initialize()` Function
high
Potential DOS in Contracts Inheriting `UUPSUpgradeable.sol`
high
Treasury cannot claim COMP tokens & COMP tokens are stuck
high
A Malicious Treasury Manager Can Burn Treasury Tokens By Setting `makerFee` To The Amount The Maker Receives
medium
`_validateOrder` Does Not Allow Anyone To Be A Taker Of An Off-Chain Order
medium
`getVotingPower` Is Not Equipped To Handle On-Chain Voting
medium
Usage of deprecated ChainLink API in `EIP1271Wallet`
medium
`sNOTE` Holders Are Not Incetivized To Vote On Proposals To Call `extractTokensForCollateralShortfall`