Security Researcher
Head of Trust Security, DM for booking | Master of hand-to-hand audit combat | C4/Immunefi/Sherlock VIP | Hacked Embedded, IoT, iOS in past life
High
Total
Medium
Total
Total Earnings
#16 All Time
Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Immunefi
Mar '24
high
Attacker can amplify a rounding error in MagicLP to break the I invariant and cause malicious pricing
high
Anyone making use of the MagicLP's TWAP to determine token prices will be exploitable.
medium
Permanent loss of yield for stakers in reward pools due to precision loss.
medium
MagicLpAggregator always returns lower than correct answer, leading to arbitrage loss
medium
A user's tokens could be locked for an extended duration beyond their intention and without their control
medium
Loss of assumed functionality of the Onboarding contract in a highly-sensitive area
medium
Miscalculation in addLiquidity of Router results in unauthorized spending of tokens
Feb '24
high
high
high
high
high
high
high
high
medium
Jul '23
high
Pumps are not updated in the shift() and sync() functions, allowing oracle manipulation
medium
Treating of BLOCK_TIME as permanent will cause serious economic flaws in the oracle when block times change
medium
Long term denial of service due to lack of fees in Well
medium
Due to bit-shifting errors, reserve amounts in the pump will be corrupted, resulting in wrong oracle values
medium
Due to slot confusion, reserve amounts in the pump will be corrupted, resulting in wrong oracle values
medium
Memory corruption in getBytes32FromBytes() can likely lead to loss of funds
May '23
Apr '23
Dec '22
high
A whale user is able to cause freeze of funds of other users by bypassing withdraw limit
medium
`PrePOMarket.setFinalLongPayout()` shouldn't be called twice.
medium
Manager can get around min reserves check, draining all funds from Collateral.sol
medium
Users do not receive owed tokens if `TokenSender` contract cannot cover their owed amount.
Nov '22
high
User can pass auction recovery health check easily with flashloan
high
UniswapV3 tokens of certain pairs will be wrongly valued, leading to liquidations.
high
Attacker can drain pool using executeBuyWithCredit with malicious marketplace payload.
high
Data corruption in NFTFloorOracle; Denial of Service
medium
Users can be locked out of providing Uniswap V3 NFTs as collateral
medium
During oracle outages or feeder outages/disagreement, the `ParaSpaceFallbackOracle` is not used
medium
Centralization risk: admin can with rug the project by removing asset and price manipulation on oracle.
medium
NFTFloorOracle's assets will use old prices if added back after removal
medium
When users sign a credit loan for bidding on an item, they are forever committed to the loan even if the NFT value drops massively.
medium
Attacker can abuse victim's signature for marketplace bid to buy worthless item
medium
Bad debt will likely incur when multiple NFTs are liquidated.
medium
Rewards are not accounted for properly in NTokenApeStaking contracts, limiting user's collateral.
medium
Oracle does not treat upward and downward price movement the same in validity checks, causing safety issues in oracle usage.
medium
Pausing assets only affects future price updates, not previous malicious updates.
medium
Price can deviate by much more than maxDeviationRate
medium
Oracle will become invalid much faster than intended on non-mainnet chains
medium
MintableIncentivizedERC721 and NToken do not comply with ERC721, breaking composability
high
Reentrancy in LiquidStakingManager.sol#withdrawETHForKnow leads to loss of fund from smart wallet.
high
GiantLP with a transferHookProcessor cant be burned, users' funds will be stuck in the Giant Pool
high
Incorrect accounting in SyndicateRewardsProcessor results in any LP token holder being able to steal other LP tokens holder's ETH from the fees and MEV vault.
high
Giant pools can be drained due to weak vault authenticity check
medium
Dao admin in LiquidStakingManager.sol can rug the registered node operator by stealing their fund in the smart wallet via arbitrary execution.
medium
GiantMevAndFeesPool.previewAccumulatedETH function: "accumulated" variable is not updated correctly in for loop leading to result that is too low
medium
dETH / ETH / LPTokenETH can become depegged due to ETH 2.0 reward slashing.
medium
Calling `updateNodeRunnerWhitelistStatus` function always reverts
medium
Incorrect checking in _assertUserHasEnoughGiantLPToClaimVaultLP
medium
MED: Funds are not claimed from syndicate for valid BLS keys of first key is invalid (no longer part of syndicate).
medium
Medium: User receives less rewards than they are eligible for if first passed BLS key is inactive
medium
Medium: Giant pools are prone to user griefing, preventing their holdings from being staked.
medium
Medium: Vaults can be griefed to not be able to be used for deposits
medium
Freezing of funds - Hacker can prevent users withdraws in giant pools
medium
GiantPool should not check ETH amount on withdrawal
high
StandardPolicyERC1155.sol returns amount == 1 instead of amount == order.amount
high
Direct theft of buyers ETH funds.
medium
Protocol can be easily rug-pulled by the owner
medium
Hacked owner or malicious owner can immediately steal all assets on the platform
medium
All orders which use expirationTime == 0 to support oracle cancellation are not executable.
medium
Pool designed to be upgradeable but does not set owner, making it unupgradeable
medium
Yul `call` return value not checked
high
addCredit / increaseCredit cannot be called by lender first when token is ETH
high
Borrower can craft a borrow that cannot be liquidated, even by arbiter.
high
Repaying a line of credit with a higher than necessary claimed revenue amount will force the borrower into liquidation
medium
Lender can trade claimToken in a malicious way to steal the borrower's money via claimAndRepay() in SpigotedLine by using malicious zeroExTradeData
medium
Borrower/Lender excessive ETH not refunded and permanently locked in protocol
Oct '22
medium
Reward can be over- or undercounted in `extendPledge` and `increasePledgeRewardPerVote`
medium
Fees charged from entire theoretical pledge amount instead of actual pledge amount
medium
Pausing `WardenPledge` contract, which takes effect immediately, by its owner can unexpectedly block pledge creator from calling `closePledge` or `retrievePledgeRewards` function
medium
Owner can transfer all ERC20 reward token out using function recoverERC20
high
Gas limit check is inaccurate, leading to an operator being able to fail a job intentionally
high
Gas price spikes cause the selected operator to be vulnerable to frontrunning and be slashed
high
LayerZeroModule miscalculates gas, risking loss of assets
high
MEV: Operator can bribe miner and steal honest operator's bond amount if gas price went high
medium
Attacker can force chaotic operator behavior
medium
HolographERC20 breaks composability by forcing usage of draft proposal EIP-4524
medium
`_payoutToken[s]()` is not compatible with tokens with missing return value
medium
MED: isOwner / onlyOwner checks can be bypassed by attacker in ERC721/ERC20 implementations
medium
MED: leak of value when interacting with an ERC721 enforcer contract
medium
MED - Incorrect implementation of ERC721 may have bad consequences for receiver
medium
`_payoutEth()` calculates `balance` with an offset, always leaving dust `ETH` in the contract
high
Outstanding reserved tokens are incorrectly counted in total redemption weight
high
Reserved token rounding can be abused to honeypot and steal user's funds
high
Redemption weight of tiered NFTs miscalculates, making users redeem incorrect amounts - Bug #1
medium
Deactivated tiers can still mint reserve tokens, even if no non-reserve tokens were minted.
high
Wrong implementation of function `LBPair.setFeeParameter` can break the funcionality of LBPair and make user's tokens locked
high
Attacker can steal entire reserves by abusing fee calculation
medium
Calling `swapAVAXForExactTokens` function while sending excess amount cannot refund such excess amount
high
StandardPolicyERC1155.sol returns amount == 1 instead of amount == order.amount
high
Direct theft of buyers ETH funds.
medium
Protocol can be easily rug-pulled by the owner
medium
Hacked owner or malicious owner can immediately steal all assets on the platform
medium
All orders which use expirationTime == 0 to support oracle cancellation are not executable.
medium
Pool designed to be upgradeable but does not set owner, making it unupgradeable
medium
Yul `call` return value not checked
Sep '22
high
PartyGovernance: Can vote multiple times by transferring NFT in same block as proposal
high
A majority attack can easily bypass Zora auction stage in OpenseaProposal and steal the NFT from the party.
high
A majority attack can steal precious NFT from the party by crafting and chaining two proposals
medium
Attacker can list an NFT they own and inflate to zero all users' contributions, keeping the NFT and all the money
medium
Attacker can force AuctionCrowdfunds to bid their entire contribution up to maxBid
medium
Early contributor can always become majority of crowdfund leading to rugging risks.
Aug '22
high
TRSRY: front-runnable `setApprovalFor`
medium
`activateProposal()` need time delay
medium
Inconsistency in staleness checks between OHM and reserve token oracles
medium
TRSRY susceptible to loan / withdraw confusion
medium
Heart::beat() could be called several times in one block if no one called it for a some time
medium
Protocol's Walls / cushion bonds remain active even if heart is not beating