Security Researcher
Philosopher turned Blockchain Auditor | Web3 Vulnerability Researcher | DM for enquiries | Portfolio: https://t.co/THDLvZzEvw…
High
Total
Medium
Total
Total Earnings
#265 All Time
Payouts
1st Places
Top 10
Top 25
All
Sherlock
Code4rena
Jan '25
Dec '24
Aug '24
high
In Starknet already processed messages can be re-submitted and by anyone
medium
A cross-chain message can be initiated with invalid parameters
medium
Does not check if to_chain and to_handler is whitelisted in cross_chain_erc20_settlement
medium
Excessive Authority Granted to Managers in the `ckr_btc.cairo` Contract Presents Significant Management Risks
Jul '24
high
Wrong minting logic based on total token count across generations
medium
There is no slippage check in the `nuke()` function.
medium
Forger Entities can forge more times than intended
medium
Pause and unpause functions are inaccessible
medium
NFTs mature too slowly under default settings.
medium
`Golden God` Tokens can be minted twice per generation
May '24
Apr '24
high
Incorrect withdraw queue balance in TVL calculation
high
Withdrawals of rebasing tokens can lead to insolvency and unfair distribution of protocol reserves
high
Withdrawals logic allows MEV exploits of TVL changes and zero-slippage zero-fee swaps
medium
stETH/ETH Feed being used opens up to 2 way deposit<->withdrawal arbitrage
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
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
Can mint NFT with the desired attributes by reverting transaction
medium
DoS in `MergingPool::claimRewards` function and potential DoS in `RankedBattle::claimNRN` function if called after a significant amount of rounds passed.
Jan '24
high
Due to missing checks on minimum gas passed through LayerZero, executions can fail on the destination chain
high
Anyone can update the address of the Router in the DcntEth contract to any address they would like to set.
medium
Potential loss of capital due to fixed fee calculations
medium
Missing access control on UTB:receiveFromBridge allows UTB swaps to be executed without spending bridge fees while bypassing fee/swap instruction signature verification
medium
Users can use the protocol freely without paying any fees by calling the `DecentEthRouter::bridgeWithPayload()` function directly.
high
First depositor can break staking-rewards accounting
medium
changeWallets() can be confirmed immediately after proposalWallets() by manipulating activeTimelock beforehand
medium
Chainlink price feed uses BTC, not WBTC. In case of depegging, oracles will become easier to manipulate.
medium
Reusing a SALT that has already been used for voting can allow a malicious proposal to pass and compromise the protocol.
Dec '23
Nov '23
5.45 USDC • 1 total finding • Code4rena • peanuts
#29
Oct '23
Sep '23
Aug '23
Jul '23
Jun '23
May '23
high
getOwnValuation() calculation may overflow
high
Using slot(0) to derive price is susceptible to price manipulations
high
No slippage check when swapping through Uniswap
high
StableOracleWBTC.sol does not use the WBTC/USD pricefeed
high
getPriceUSD() in StableOracleDAI.sol does not calculate DAI price in terms of USD properly
medium
Chainlink's latestRoundData Might Return Stale Results
Apr '23
Mar '23
Feb '23
Jan '23
high
Anyone can call PerpDepository.rebalance()
medium
PerpDepository._rebalanceNegativePnlWithSwap uses wrong parameter in quoteAmount.fromDemicalToDecmial()
medium
PerpDepository.getDebtValue() is not used or checked when redeeming collateral for UXD
medium
Clearing house fees are stored in PerpDepository() but not paid
Dec '22
Nov '22
Oct '22
high
Bidder's payment is not refunded if Auction is cancelled prematurely via cancelAuction()
medium
AuctionHouse firstBidTime is set to block.timestamp which breaks the calculation of the Auction's total duration
medium
The calculation of extended Auction timing when a bidder calls createBid() is incorrect
Sep '22