Security Researcher
Web 3 Auditor - 10th rank Code4rena - Within top 50 rank Immunefi - Auditor at @SpearbitDAO/@code4rena/@auditone_team DM for Private Audit
High
Solo
Total
Medium
Total
Total Earnings
#34 All Time
Payouts
1st Places
2nd Places
3rd Places
All
Sherlock
Code4rena
Jan '25
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
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)
Jan '24
Nov '23
Oct '23
Mar '23
Feb '23
Jan '23
high
Attacker can take loan for Victim
medium
Pause checks are missing on deposit for Private Vault
medium
For a public vault, minimum deposit requirement that is enforced by `ERC4626Cloned.deposit` function can be bypassed by `ERC4626Cloned.mint` function or vice versa when share price does not equal one
Dec '22
Nov '22
high
Interest rates are incorrect on Liquidation
high
Anyone can prevent themselves from being liquidated as long as they hold one of the supported NFTs
high
Data corruption in NFTFloorOracle; Denial of Service
medium
safeTransfer is not implemented correctly
medium
New BAKC Owner Can Steal ApeCoin
medium
NTokenMoonBirds Reserve Pool Cannot Receive Airdrops
medium
Centralization risk: admin can with rug the project by removing asset and price manipulation on oracle.
medium
MintableIncentivizedERC721 and NToken do not comply with ERC721, breaking composability
Oct '22
Sep '22
high
Depeg event can happen at incorrect price
medium
Fee-on-Transfer tokens cause problems in multiple places
medium
StakingRewards: recoverERC20() can be used as a backdoor by the owner to retrieve rewardsToken
medium
StakingRewards.sol#notifyRewardAmount() Improper reward balance checks can make some users unable to withdraw their rewards
medium
Different Oracle issues can return outdated prices
medium
Rewards are not rolled over
Aug '22
high
In `Governance.sol`, it might be impossible to activate a new proposal forever after failed to execute the previous active proposal.
high
TRSRY: front-runnable `setApprovalFor`
medium
After endorsing a proposal, user can transfer votes to another user for endorsing the same proposal again
medium
Voted votes cannot change after the user are issued with new votes or the user's old votes are revoked during voting
medium
[NAZ-M1] Chainlink's `latestRoundData` Might Return Stale Results
Jul '22
Jun '22
high
Fee is being deducted when Put is expired and not when it is exercised.
high
`acceptCounterOffer()` May Result In Both Orders Being Filled
medium
Putty position tokens may be minted to non ERC721 receivers
medium
Zero strike call options will avoid paying system fee
medium
Malicious Token Contracts May Lead To Locking Orders
medium
Burn access control can be bypassed
medium
token transfers in LiquidityReserve and Staking contract don't support deflationary ERC20 tokens, and user funds can be lost if stacking token was deflationary
medium
Functions in the `BatchRequests` contract revert for removed contract addresses
medium
MINIMUM_LIQUIDITY checks missing - Bringing Liquidity below required min
medium
Incorrect withdrawal requested
high
ERC5095 redeem/withdraw does not update allowances
high
Lender: no check for paused market on mint
high
`Redeemer.sol#redeem()` can be called by anyone before maturity, which may lead to loss of user funds
high
Funds may be stuck when `redeeming` for Illuminate
high
Illuminate PT redeeming allows for burning from other accounts
high
Division Before Multiplication Can Lead To Zero Rounding Of Return Amount
high
Pendle Uses Wrong Return Value For `swapExactTokensForTokens()`
medium
Malicious Relayers Could Favor Their Routers
medium
Missing whenNotPaused modifier
medium
_handleExecuteTransaction may not working correctly on fee-on-transfer tokens. Moreover, if it is failed, fund may be locked forever.
medium
`LibDiamond.diamondCut()` should check `diamondStorage().acceptanceTimes[keccak256(abi.encode(_diamondCut))] != 0`
medium
Malicious relayer could exploit sponsor vaults
May '22
medium
Duplicate LP token could lead to incorrect deposits
medium
User can lose funds
medium
`VE3DRewardPool` and `VE3DLocker` adds to an unbounded array which may potentially lock all rewards in the contract
medium
User can lose extra rewards
medium
Unused rewards(because of totalSupply()==0 for some period) will be locked forever in VE3DRewardPool and BaseRewardPool
medium
No check for existing extraRewards during push
medium
Owner should be allowed to change feeManager
medium
RubiconRouter: Excess ether did not return to the user
medium
No cap on fees can result in a DOS in BathToken.withdraw()
medium
`RubiconMarket.sol#isClosed()` always returns false, making the market can not be stopped as designed
medium
```withdrawForETH``` could be used to drain the WETH in ```RubiconRouter.sol```
medium
User will loose funds
high
User can forfeit other user rewards
medium
Rewards distribution can be delayed/never distributed on AuraLocker.sol#L848
medium
User will lose funds
medium
Duplicate LP token could lead to incorrect reward distribution
medium
Reward can be vested even after endTime
medium
`AuraBalRewardPool` charges a penalty to all users in the pool if the `AuraLocker` has been shut down
Apr '22
Mar '22
Feb '22
high
[WP-H14] `ConvexStakingWrapper`, `StakingRewards` Wrong implementation will send `concur` rewards to the wrong receiver
high
Repeated Calls to Shelter.withdraw Can Drain All Funds in Shelter
medium
`MasterChef.updatePool()` Fails To Update Reward Variables If `block.number >= endBlock`
medium
Owner can lock tokens in `MasterChef`
medium
Deactivate function can be bypassed
Jan '22
Dec '21
Nov '21
Oct '21
Sep '21