Banner
https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/20525035-db99-44bc-b5ff-9f6dc755a078.jpg

0x52

Security Researcher

I find bugs | Blackthorn Founding Security Researcher | 35x Lead Senior Watson

Contact Me

High

21

Solo

170

Total

Medium

41

Solo

204

Total

$1.22M

Total Earnings

#3 All Time

130x

Payouts

gold

33x

1st Places

silver

13x

2nd Places

bronze

8x

3rd Places

All

Sherlock

Blackthorn

Code4rena

May '25

LayerZero - OneSig EVM Update

LayerZero - OneSig EVM Update

Collaborative Audit • Sherlock • 0x52

Apr '25

Seamless Protocol - Leverage Tokens

Seamless Protocol - Leverage Tokens

Collaborative Audit • Sherlock • 0x52

Pareto USP, a credit-backed synthetic dollar

Pareto USP, a credit-backed synthetic dollar

6,666.66 USDC • 1 total finding • Sherlock • 0x52

gold

medium

Defaulted Idle CV with pending withdrawals will permanently break stablecoin accounting

LayerZero - OneSig EVM

LayerZero - OneSig EVM

Collaborative Audit • Sherlock • 0x52

Mar '25

Sentiment - MetaOracle

Sentiment - MetaOracle

Collaborative Audit • Sherlock • 0x52

Sentiment V2: Hyperliquid Oracle Update

Sentiment V2: Hyperliquid Oracle Update

Collaborative Audit • Sherlock • 0x52

Jan '25

Plaza Finance

Plaza Finance

14,600.63 USDC • 13 total findings • Sherlock • 0x52

gold

high

BondOracleAdapter will cause massive loss of funds for a large number of bond tokens

high

Pool fee collection methodology will incorrect penalize depositors

high

Pool#transferReserveToAuction is completely broken

high

Leverage user can avoid paying fees to bond holders by withdrawing before auction ends

high

Malicious user can sandwich Pool#startAuction with flashloan to completely drain pool

medium

BondOracleAdapter#getPool methodology can be abused to cause oracle to reference low liquidity pool

medium

Precision loss in leverage redeemRate calculation will cause loss to leverage tokens

medium

Auction date will drift irreversibly forward over time leading to loss of yield for bond holders

medium

Rounding loss in Auction#slotSize allows malicious user to force auction to be undersold

medium

Payments from failed auctions can be claimed leading to indefinite DOS on other legitimate claims

medium

Incorrect dp scaling for marketRate will cause lose to other users if bond market price is low

medium

Blacklisted bidders can force auction to pay them a very high price

medium

BalancerRouter is implemented incorrectly and will cause loss of funds when depositing to predeposits

Dec '24

Idle Finance Credit Vaults

Idle Finance Credit Vaults

18,354.36 USDC • Sherlock • 0x52

gold

Findings not publicly available for private contests.

Oct '24

Ethereum Foundation

Ethereum Foundation

Collaborative Audit • Blackthorn • 0x52

Index x Morpho Leverage Integration

Index x Morpho Leverage Integration

19,500 USDC • 1 total finding • Sherlock • 0x52

gold

medium

_calculateMaxBorrowCollateral calculates repay incorrectly and can lead to set token liquidation

Jul '24

Reserve Core

Reserve Core

0 USDC • Code4rena • 0x52

#7

MakerDAO Endgame

MakerDAO Endgame

40,627.02 USDC • Sherlock • 0x52

#8

Jan '24

Arcadia

Arcadia

42,400.60 USDC • 2 total findings • Sherlock • 0x52

gold

high

`AccountV1#flashActionByCreditor` can be used to drain assets from account without withdrawing

medium

`LendingPool#flashAction` is broken when trying to refinance position across `LendingPools` due to improper access control

Avail

Avail

7,503.34 USDC • Sherlock • 0x52

silver
JOJO Exchange Update

JOJO Exchange Update

9,515.09 USDC • 3 total findings • Sherlock • 0x52

silver

high

Arbitrary call in Funding#_withdraw can be used to drain all contract balances

medium

Funding#requestWithdraw uses incorrect withdraw address

medium

FundRateArbitrage is vulnerable to inflation attacks

Dec '23

Olympus RBS 2.0

Olympus RBS 2.0

30,032.55 USDC • 1 total finding • Sherlock • 0x52

#17

medium

Balancer LP valuation methodologies use the incorrect supply metric

Nov '23

Nouns Builder

Nouns Builder

16,603.91 USDC • 3 total findings • Sherlock • 0x52

silver

high

Token#updateFounders fails to properly clear tokenRecipient mapping causing improper token distribution

high

Adversary can permanently brick auctions due to precision error in Auction#_computeTotalRewards

medium

MerkleReserveMinter minting methodology is incompatible with current governance structure and can lead to migrated DAOs being hijacked immediately

Convergence

Convergence

18,226.57 USDC • 3 total findings • Sherlock • 0x52

#5

high

Tokens that are both bribes and StakeDao gauge rewards will cause loss of funds

medium

cvgControlTower and veCVG lock timing will be different and lead to yield loss scenarios

medium

SdtRewardReceiver#_withdrawRewards has incorrect slippage protection and withdraws can be sandwiched

Majora

Majora

Collaborative Audit • Sherlock • 0x52

Oct '23

Real Wagmi #2

Real Wagmi #2

23,553.52 USDC • 6 total findings • Sherlock • 0x52

gold

high

Adversary can reenter takeOverDebt() during liquidation to steal vault funds

high

Creditor can maliciously burn UniV3 position to permanently lock funds

high

Slippage controls inside _restoreLiqudity are ineffective allowing repay() calls to be sandwiched and all profits stolen

medium

Adversary can overwrite function selector in _patchAmountAndCall due to inline assembly lack of overflow protection

medium

Blacklisted creditor can block all repayment besides emergency closure

medium

Protocol is incompatible with ZkSync Era due to differences in address deviation

Aug '23

KyberSwap

KyberSwap

60,684.21 USDC • 2 total findings • Sherlock • 0x52

gold

medium

PoolOracle utilizes vulnerable OZ 4.3.1 UUPS implementation

medium

Router.sol is vulnerable to address collission

Blueberry Update #3

Blueberry Update #3

14,861.05 USDC • 11 total findings • Sherlock • 0x52

gold

high

CurveTricryptoOracle#getPrice contains math error that causes LP to be priced completely wrong

high

CVX/AURA distribution calculation is incorrect and will lead to loss of rewards at the end of each cliff

high

Stable BPT valuation is incorrect and can be exploited to cause protocol insolvency

high

CurveTricryptoOracle incorrectly assumes that WETH is always the last token in the pool which leads to bad LP pricing

medium

AuraSpell#closePositionFarm exits pool with single token and without any slippage protection

medium

AuraSpell#closePositionFarm will take reward fees on underlying tokens when borrow token is also a reward

medium

Adversary can abuse hanging approvals left by PSwapLib.swap to bypass reward fees

medium

ConvexSpell is completely broken for any curve LP that utilizes native ETH

medium

Issue #47 from Update #1 is still present in ConvexSpell

medium

WAuraPools doesn't correctly account for AuraStash causing all deposits to be permanently lost

medium

Mainnet oracles are incompatible with wstETH causing many popular yields strategies to be broken

Jul '23

Index Update

Index Update

24,394.50 USDC • 6 total findings • Sherlock • 0x52

gold

medium

No check for sequencer uptime can lead to dutch auctions executing at bad prices

medium

Full inventory asset purchases can be DOS'd via frontrunning

medium

Exponential and logarithmic price adapters will return incorrect pricing when moving from higher dp token to lower dp token

medium

BoundedStepwiseExponentialPriceAdapter#getPrice uses incorrect order of operation when calculating priceChange

medium

Target raises can be highly damaging for dutch auctions with multiple components

medium

Manger has no way to disable target raises after enabling them

Jun '23

Hubble Exchange

Hubble Exchange

32,401.61 USDC • 7 total findings • Sherlock • 0x52

gold

high

Malicious user can permanently break VUSD#processWithdrawals by returning huge amounts of data

high

Failed withdrawals from VUSD#processWithdrawals will be lost forever

high

Rogue validators can manipulate funding rates and profit unfairly from liquidations

medium

Malicious user can grief withdrawing users via VUSD reentrancy

medium

Malicious users can donate/leave dust amounts of collateral in contract during auctions to buy other collateral at very low prices

medium

MarginAccountHelper will be bricked if registry.marginAccount or insuranceFund ever change

medium

Funding settlement will be DOS'd for a time after the phaseID change of an underlying chainlink aggregator

DODO V3

DODO V3

17,118.11 USDC • 3 total findings • Sherlock • 0x52

#4

medium

D3VaultFunding#checkBadDebtAfterAccrue is inaccurate and can lead to further damage to both LP's and MM

medium

D3UserQuote#getUserQuote queries incorrect token for exchangeRate leading to inaccurate quota calculations

medium

Protocol is completely incompatible with USDT due to lack of 0 approval

Arrakis

Arrakis

22,825.67 USDC • 2 total findings • Sherlock • 0x52

#9

high

ArrakisV2Router#addLiquidityPermit2 will strand ETH

medium

ChainLinkOraclePivot uses the same heartbeat for both feeds which leads to stale price data

May '23

Iron Bank

Iron Bank

28,477.07 USDC • 4 total findings • Sherlock • 0x52

gold

high

supplyNativeToken will strand ETH in contract if called after ACTION_DEFER_LIQUIDITY_CHECK

medium

PriceOracle.sol will return the wrong price for asset if underlying aggregator hits minAnswer

medium

PriceOracle#getPriceFromChainlink may return stale data

medium

PriceOracle#getPriceFromChainlink fails to check Arbitrum/Optimism Sequencer uptime

Index

Index

78,464.89 USDC • 4 total findings • Sherlock • 0x52

gold

high

eMode implementation is completely broken

high

_calculateMaxBorrowCollateral calculates repay incorrectly and can lead to set token liquidation

medium

AaveLeverageStrategyExtension and underlying AaveV3 oracles may diverge

medium

Relying solely on oracle base slippage parameters can cause significant loss due to sandwich attacks

Blueberry Update #2

Blueberry Update #2

28,759.19 USDC • 5 total findings • Sherlock • 0x52

gold

high

AuraSpell#openPositionFarm fails to return all rewards to user

high

ShortLongSpell#openPosition uses the wrong balanceOf when determining how much collateral to put

medium

BalancerPairOracle will return highly incorrect price if one token isn't 18 dp

medium

ShortLongSpell#openPosition attempts to burn wrong token

medium

Updating the feeManger on config will cause desync between bank and vaults

Footium

Footium

5,510.50 USDC • 4 total findings • Sherlock • 0x52

gold

high

Escrow approvals are not cleared when club is transferred allowing for abuse after transfer

high

Malicious users can honeypot other users by transferring out ERC20 and ERC721 tokens right before sale

medium

Users can bypass Player royalties on EIP2981 compatible markets by selling clubs as a whole

medium

Merkle leaf values for _clubDivsMerkleRoot are 64 bytes before hashing which can lead to merkle tree collisions

Apr '23

Blueberry Update

Blueberry Update

11,990.20 USDC • 15 total findings • Sherlock • 0x52

gold

high

AuraSpell#openPositionFarm uses incorrect join type for balancer

high

Users are forced to swap all reward tokens with no slippage protection

high

ConvexSpell#closePositionFarm removes liquidity without any slippage protection

high

ShortLongSpell#_withdraw checks slippage limit but never applies it making it useless

high

WAuraPools will irreversibly break if reward tokens are added to pool after deposit

high

UserData for balancer pool exits is malformed and will permanently trap users

high

IchiSpell applies slippage to sqrtPrice which is wrong and leads to unpredictable slippage

high

Balance check for swapToken in ShortLongSpell#_deposit is incorrect and will result in nonfunctional contract

high

ShortLongSpell#openPosition can cause user unexpected liquidation when increasing position size

high

Pending CRV rewards are not accounted for and can cause unfair liquidations

medium

BlueBerryBank#getPositionValue causes DOS if reward token is added that doens't have an oracle

medium

Issue 290 from previous contest has not been fully addressed by fixes

medium

Issue 94 from previous contest has not been fixed

medium

AuraSpell#closePositionFarm requires users to swap all reward tokens through same router

medium

rewardTokens removed from WAuraPool/WConvexPools will be lost forever

JOJO Exchange

JOJO Exchange

29,160.97 USDC • 5 total findings • Sherlock • 0x52

gold

high

All allowances to DepositStableCoinToDealer and GeneralRepay can be stolen due to unsafe call

medium

JUSDBank users can bypass individual collateral borrow limits

medium

FlashLoanLiquidate#JOJOFlashLoan doesn't allow user to specify any slippage conditions

medium

chainlinkAdaptor uses the same heartbeat for both feeds which is highly dangerous

medium

GeneralRepay#repayJUSD returns excess USDC to `to` address rather than msg.sender

Teller

Teller

12,943.89 USDC • 6 total findings • Sherlock • 0x52

bronze

high

CollateralManager#commitCollateral can be called on an active loan

high

CollateralManager#commitCollateral can be called by anyone

high

CollateralManager#commitCollateral overwrites collateralInfo._amount if called with an existing collateral

high

CollateralManager#setCollateralEscrowBeacon lacks access control allowing anyone to set the beacon implementation and steal all escrowed funds

high

Malicious user can abuse UpdateCommitment to create commitments for other users

medium

LenderCommitmentForwarder#updateCommitment can be front-run by malicious borrower to cause lender to over-commit funds

Mar '23

Gitcoin

Gitcoin

6,972.16 USDC • Sherlock • 0x52

gold
Asymmetry contest

Asymmetry contest

1,337.39 USDC • 4 total findings • Code4rena • 0x52

#4

high

Staking, unstaking and rebalanceToWeight can be sandwiched (Mainly rETH deposit )

high

Reth.sol: Withdrawals are unreliable and depend on excess RocketDepositPool balance which can brick the whole protocol

high

Reth `poolPrice` calculation may overflow

medium

Non-ideal rETH/WETH pool used pays unnecessary fees

Olympus Update

Olympus Update

11,872.18 USDC • 5 total findings • Sherlock • 0x52

gold

high

Adversary can sandwich oracle updates to exploit vault

high

minTokenAmounts_ is useless in new configuration and doesn't provide any real slippage protection

high

Adversary can stake LP directly for the vault then withdraw to break lp accounting in BLVaultManagerLido

high

Users can abuse discrepancies between oracle and true asset price to mint more OHM than needed and profit from it

medium

stETH/ETH chainlink oracle has too long of heartbeat and deviation threshold which can cause loss of funds

Kairos Loan

Kairos Loan

16,700.76 USDC • 3 total findings • Sherlock • 0x52

gold

medium

minOfferCost can be bypassed in certain scenarios

medium

Adversary can utilize a large number of their own loans to cheat other lenders out of interest

medium

useLoan doesn't allow liqudator to specifiy maximum price

Sense Update #1

Sense Update #1

15,959.70 USDC • 4 total findings • Sherlock • 0x52

silver

medium

Multiple functions aren't payable so quotes that require protocol fees won't work correctly

medium

Multiple functions may leave excess funds in the contract that should be returned

medium

Periphery#_swapPTsForTarget won't work correctly if PT is mature but redeem is restricted

medium

fillQuote uses transfer instead of call which can break with future updates to gas costs

Polynomial Protocol contest

Polynomial Protocol contest

211.28 USDC • Code4rena • 0x52

#24

Y2K

Y2K

21,218.33 USDC • 5 total findings • Sherlock • 0x52

#13

high

Carousel#enlistInRollover incorrectly updates ownerToRollOverQueueIndex for existing positions

high

Adversary can break deposit queue and cause loss of funds

medium

VaultFactoryV2#changeTreasury misconfigures the vault

medium

Null epochs will freeze rollovers

medium

Emissions sent to vault with null epoch will be lost forever

Neo Tokyo contest

Neo Tokyo contest

154.74 USDC • 1 total finding • Code4rena • 0x52

#18

high

Underflow of `lpPosition.points` during withdrawLP causes huge reward minting

Taurus

Taurus

10,173.01 USDC • 1 total finding • Sherlock • 0x52

#11

high

TauMath#_computeCR breaks vault compatibility with tokens that don't have 18 decimals

Aragon Protocol contest

Aragon Protocol contest

7,985.81 USDC • 1 total finding • Code4rena • 0x52

bronze

medium

createProposal snapshot block can temporarily desync with minApproval / minVotingPower

Feb '23

Surge

Surge

5,544.28 USDC • 5 total findings • Sherlock • 0x52

silver

high

Precision differences when calculating userCollateralRatioMantissa causes major issues for some token pairs

high

First depositor can abuse exchange rate to steal funds from later depositors

medium

Fee share calculation is incorrect

medium

Operator can cause fee shares to be minted to address(0)

medium

transferFrom uses allowance even if spender == from

Syndr

Syndr

10,147.66 USDC • Sherlock • 0x52

gold

Findings not publicly available for private contests.

OlympusDAO

OlympusDAO

13,508.13 USDC • 7 total findings • Sherlock • 0x52

gold

high

Adversary can economically exploit wstETHLiquidityVault

high

User can drain entire reward balance due to accounting issue in _claimInternalRewards and _claimExternalRewards

medium

Removed reward tokens will no longer be claimable and will cause loss of funds to users who haven't claimed

medium

Internal reward tokens can and likely will over commit rewards

medium

Adding an internal reward token that begins accrual at a future time will DOS the entire vault

medium

Reward tokens can never be added again once they are removed without breaking rewards completely

medium

rescueToken doesn't update rewardToken.lastBalance for external reward tokens

Ethos Reserve contest

Ethos Reserve contest

61.26 USDC • Code4rena • 0x52

#33

Volta

Volta

12,832.73 USDC • Sherlock • 0x52

gold

Findings not publicly available for private contests.

Fair Funding by Alchemix & Unstoppable

Fair Funding by Alchemix & Unstoppable

2,566.81 USDC • 3 total findings • Sherlock • 0x52

gold

high

amount_claimable_per_share accounting is broken and will result in vault insolvency

high

Current method for distributing rewards has serious accounting errors

medium

Vault#migrate isn't able to do anything because it lacks any kind of approvals to migrator

Carapace

Carapace

2,352.61 USDC • 6 total findings • Sherlock • 0x52

#9

high

Adversary can DOS seller premium payments by creating a large number of tiny protections

high

User can double insure their LP token to game insurance in the event of a default

high

User can game protection via renewal to get free insurance

high

The renewal grace period gives users insurance for no premium

high

Protection sellers can easily game withdrawal requests to collect risk free yield

high

Users can share/borrow sTokens to bypass minimum deposit time

Blueberry

Blueberry

7,893.55 USDC • 10 total findings • Sherlock • 0x52

silver

high

Liquidation logic is incorrect when user has debt to more than one bank

high

WIchiFarm#burn sends too few IchiV2 tokens to users

high

IchiLpOracle is extemely easy to manipulate due to how IchiVault calculates underlying token balances

high

IchiVaultSpell#openPositionFarm can cause Ichi to be harvested but doesn't send it to the user

high

BlueBerryBank#withdrawLend will cause underlying token accounting error if soft/hard vault has withdraw fee

high

IchiVaultSpell#closePosition will leave LP tokens in the contract if amountLpWithdraw != 0

medium

WIchiFarm will break after second deposit of LP

medium

ChainlinkAdapterOracle will return the wrong price for asset if underlying aggregator hits minAnswer

medium

User has no slippage protection if they choose to not to repay the debt tokens obtained from the swap in IchiVaultSpell

medium

ChainlinkAdapterOracle use BTC/USD chainlink oracle to price WBTC which is problematic if WBTC depegs

OpenQ

OpenQ

28,945.05 USDC • 12 total findings • Sherlock • 0x52

gold

high

Adversary can break bounty payouts by adding malicious ERC20 token to bounty

high

Adversary can brick refunds by making a large number of small deposits

high

Adversary can break any bounty they wish by depositing an NFT then refunding it

high

Adversary can permanently break reward distribution for percentage tier bounties by funding bounty then refunding after competition closes

high

Adversary can permanently break percentage tier bounties by funding certain ERC20 tokens then refunding

high

Tier winner can steal excess funds from tiered percentage bounty if any deposits are expired

high

Adversary can brick bounty payouts by calling fundBountyToken but funding it with an ERC721 token instead

high

Adversary can lock every deposit forever by making a deposit with _expiration = type(uint256).max

medium

Refunding logic with multiple deposits is first mover take all

medium

TieredFixedBountyV1#setPayoutScheduleFixed is intended to be able to resize to fewer tiers but can't

medium

Adversary can break NFT distribution by depositing up to max then refunding all of them

medium

Adversary can block NFT distribution on tiered bounties by assigning the NFTs to unused tiers

Jan '23

Popcorn contest

Popcorn contest

92.58 USDC • 1 total finding • Code4rena • 0x52

#67

medium

Faulty Escrow config will lock up reward tokens in Staking contract

Cooler

Cooler

463.82 USDC • 4 total findings • Sherlock • 0x52

bronze

high

Fully repaying a loan will result in debt payment being lost

high

Lender can purposefully get themselves blacklisted on debt token to force borrower default

high

Use safeTransfer and safeTransferFrom for ERC20 tokens

high

Loans can be rolled an unlimited number of times which could result in longer loans than expected

Ondo Finance contest

Ondo Finance contest

36.24 USDC • Code4rena • 0x52

#19

Reserve contest

Reserve contest

14,727.23 USDC • 1 total finding • Code4rena • 0x52

bronze

high

Adversary can abuse a quirk of compound redemption to manipulate the underlying exchange rate and maliciously disable cToken collaterals

Biconomy - Smart Contract Wallet contest

Biconomy - Smart Contract Wallet contest

94.77 USDC • 1 total finding • Code4rena • 0x52

#46

medium

SmartAccount.sol is intended to be upgradable but inherits from contracts that contain storage and no gaps

UXD Protocol

UXD Protocol

42,720.12 USDC • 10 total findings • Sherlock • 0x52

gold

high

PerpDepository#getPositionValue uses incorrect value for TWAP interval allowing more than intended funds to be extracted

high

USDC deposited to PerpDepository.sol are irretrievable and effectively causes UDX to become undercollateralized

high

PerpDepository has no way to withdraw profits depriving stakers of profits owed

high

RageTrade senior vault USDC deposits are subject to utilization caps which can lock deposits for long periods of time leading to UXD instability

high

Malicious user can use an excessively large _toAddress in OFTCore#sendFrom to break layerZero communication

high

PerpDespository#reblance and rebalanceLite can be called to drain funds from anyone who has approved PerpDepository

medium

PerpDepository#_placePerpOrder miscalculates fees paid when shorting

medium

Price disparities between spot and perpetual pricing can heavily destabilize UXD

medium

PerpDepository#_rebalanceNegativePnlWithSwap will not work because it never approves spotSwapper to transfer baseAsset

medium

PerpDepository#_rebalanceNegativePnlWithSwap fails to approve vault for quote deposit

Dec '22

Papr contest

Papr contest

476.06 USDC • 2 total findings • Code4rena • 0x52

#14

medium

PaprController.buyAndReduceDebt: msg.sender can lose paper by paying the debt twice

medium

`PaprController` pays swap fee in `buyAndReduceDebt`, not user

Caviar contest

Caviar contest

6.99 USDC • 1 total finding • Code4rena • 0x52

#46

high

First depositor can break minting of shares

Tigris Trade contest

Tigris Trade contest

4,080.61 USDC • 6 total findings • Code4rena • 0x52

#5

high

Users can bypass the `maxWinPercent` limit using a partially closing

high

User can abuse tight stop losses and high leverage to make risk free trades

medium

Bypass the delay security check to win risk free funds

medium

Trading will not work on ethereum if USDT is used

medium

_checkDelay will not work properly for Arbitrum or Optimism due to block.number

medium

Chainlink price feed is not sufficiently validated and can return stale price

prePO contest

prePO contest

28.12 USDC • Code4rena • 0x52

#31

Escher contest

Escher contest

50.95 USDC • 2 total findings • Code4rena • 0x52

#50

high

`saleReceiver` and `feeReceiver` can steal refunds after sale has ended

medium

ETH will get stuck if all NFTs do not get sold.

PoolTogether contest

PoolTogether contest

3,233.62 USDC • 1 total finding • Code4rena • 0x52

silver

medium

An attacker can make users unable to cancel their L1 calls on Ethereum To Arbitrum

Nov '22

ParaSpace contest

ParaSpace contest

4,903.26 USDC • 4 total findings • Code4rena • 0x52

#7

high

Anyone can steal CryptoPunk during the deposit flow to WPunkGateway

medium

Adversary can force user to pay large gas fees by transfering them collateral

medium

During oracle outages or feeder outages/disagreement, the `ParaSpaceFallbackOracle` is not used

medium

Rewards are not accounted for properly in NTokenApeStaking contracts, limiting user's collateral.

Opyn Crab Netting

Opyn Crab Netting

339.24 USDC • 1 total finding • Sherlock • 0x52

#14

high

CrabNetting can be DOS'd by partially dequeuing withdraws/deposits

Isomorph

Isomorph

46,856.99 USDC • 11 total findings • Sherlock • 0x52

gold

high

User is unable to partially payback loan if they aren't able to post enough isoUSD to bring them back to minOpeningMargin

high

Swapping 100 tokens in DepositReceipt_ETH and DepositReciept_USDC breaks usage of WBTC LP and other high value tokens

high

Anyone can withdraw user's Velo Deposit NFT after approval is given to depositor

high

User can steal rewards from other users by withdrawing their Velo Deposit NFTs from other users' depositors

high

Outstanding loans cannot be closed or liquidated if collateral is paused

high

Users are unable close or add to their Lyra vault positions when price is stale or circuit breaker is tripped

high

Malicious user can DOS pool and avoid liquidation by creating secondary liquidity pool for Velodrome token pair

high

Users who deposit Lyra LP as collateral will lose OP vault rewards

medium

Vault_Base_ERC20#_updateVirtualPrice calculates interest incorrectly if updated frequently

medium

Bad debt may persist even after complete liquidation in Velo Vault due to truncation

medium

All collateral in Velodrome vault will be permantly locked if either asset in liquidity pair stays outside of min/max price

Redacted Cartel contest

Redacted Cartel contest

4,209.73 USDC • 5 total findings • Code4rena • 0x52

#6

high

The 'redeem' related functions are likely to be blocked

high

fee loss in AutoPxGmx and AutoPxGlp and reward loss in AutoPxGlp by calling PirexRewards.claim(pxGmx/pxGpl, AutoPx*) directly which transfers rewards to AutoPx* pool without compound logic get executed and fee calculation logic and pxGmx wouldn't be exe

medium

Assets may be lost when calling unprotected `AutoPxGlp::compound` function

medium

Deposit Feature Of The Vault Will Break If Update To A New Platform

medium

PirexGmx.initiateMigration can be blocked

Buffer Finance

Buffer Finance

16,352.80 USDC • 3 total findings • Sherlock • 0x52

gold

high

Design of BufferBinaryPool allows LPs to game option expiry

high

When private keeper mode is off users can queue orders with the wrong asset

medium

resolveQueuedTrades is intended to be non atomic but invalid signature can still cause entire transaction to revert

Bull v Bear

Bull v Bear

400.01 USDC • 2 total findings • Sherlock • 0x52

#8

high

Bull can repeatedly match an order by transfering their position to address(0)

high

Fake order can be used to burn tokens from contract via BvbProtocol::reclaimContract

FrankenDAO

FrankenDAO

4,225.22 USDC • 7 total findings • Sherlock • 0x52

gold

high

Staking#setBaseVotes and setMonsterMulitiplier are dangerous and will likely cause huge damage to voting

high

Staking#_unstake removes votes from wrong person if msg.sender != owner

medium

Delegate can keep can keep delegatee trapped indefinitely

medium

Adversary can abuse delegating to lower quorum

medium

castVote can be called by anyone even those without votes

medium

Governance#queue increments the wrong counter when proposal is passed

medium

Staking#changeStakeTime and changeStakeAmount are problematic given current staking design

LooksRare Aggregator contest

LooksRare Aggregator contest

3,938.27 USDC • 2 total findings • Code4rena • 0x52

#4

medium

Users can avoid paying any fees when using ERC20EnabledLooksRareAggregator for Seaport

medium

call opcode's return value not checked.

SIZE contest

SIZE contest

8.54 USDC • 1 total finding • Code4rena • 0x52

#41

medium

Incompatibility with fee-on-transfer/inflationary/deflationary/rebasing tokens, on both base tokens and quote tokens, with varying impacts

Debt DAO contest

Debt DAO contest

107.09 USDC • 1 total finding • Code4rena • 0x52

#44

medium

Lender can trade claimToken in a malicious way to steal the borrower's money via claimAndRepay() in SpigotedLine by using malicious zeroExTradeData

Sense

Sense

14,477.06 USDC • 4 total findings • Sherlock • 0x52

gold

high

Adversary can brick AutoRoller by creating another AutoRoller on the same adapter

high

AutoRoller#eject can be used to steal all the yield from vault's YTs

medium

Hardcoded divider address in RollerUtils is incorrect and will brick autoroller

medium

RollerPeriphery#approve is public allowing anyone to approve themselves tokens

Float Capital

Float Capital

1,771.65 USDC • 1 total finding • Sherlock • 0x52

bronze

medium

Creating a pool for USDC requires a very large amount of seed capital to be burned

Oct '22

Rage Trade

Rage Trade

40,006.06 USDC • 6 total findings • Sherlock • 0x52

gold

high

DnGmxJuniorVaultManager#_rebalanceBorrow logic is flawed and could result in vault liquidation

medium

DnGmxJuniorVaultManager#_totalAssets current implementation doesn't properly maximize or minimize

medium

Early depositors to DnGmxSeniorVault can manipulate exchange rates to steal funds from later depositors

medium

WithdrawPeriphery uses incorrect value for MAX_BPS which will allow much higher slippage than intended

medium

WithdrawPeriphery#_convertToToken slippage control is broken for any token other than USDC

medium

DnGmxJuniorVaultManager#harvestFees can push junior vault borrowedUSDC above borrow cap and DOS vault

Paladin - Warden Pledges contest

Paladin - Warden Pledges contest

5,767.74 USDC • 4 total findings • Code4rena • 0x52

gold

medium

Pledges that contain delisted tokens can be extended to continue using delisted reward tokens

medium

WardenPledge accidentally inherits Ownable instead of Owner which removes an important safeguard without sponsor knowledge

medium

Fees charged from entire theoretical pledge amount instead of actual pledge amount

medium

Owner can transfer all ERC20 reward token out using function recoverERC20

Illuminate

Illuminate

6,288.97 USDC • 5 total findings • Sherlock • 0x52

silver

high

Lender#lend for APWine doesn't validate that pool is swapping same underlying as market underlying

high

Lender#lend for Sense has mismatched decimals

high

Redeemer#redeem for Sense slippage check is not adequete due to token decimal mismatch

high

Redeemer#redeem for Sense can never redeem because it never approves cTokens to be transferred by Converter

high

Lender allows users to mint PT backed by PT which artificially inflates the supply of PT and damages the exchange rate for all users

NFTPort

NFTPort

2,943.90 USDC • 1 total finding • Sherlock • 0x52

#4

medium

Freezing roles in ERC721NFTProduct and ERC1155NFTProduct is moot

Holograph contest

Holograph contest

4,660.4 USDC • 3 total findings • Code4rena • 0x52

#4

high

Failed job can't be recovered. NFT may be lost.

high

An attacker can lock operator out of the pod by setting gas limit that's higher than the block gas limit of dest chain

medium

PA1D#bidSharesForToken returns incorrect bidShares.creator.value

3xcalibur contest

3xcalibur contest

24,368.73 USDC • Code4rena • 0x52

gold
Juicebox contest

Juicebox contest

9,741.41 USDC • 2 total findings • Code4rena • 0x52

silver

high

Minting and redeeming will break for fully minted tiers with reserveRate != 0 and reserveRate/MaxReserveRate tokens burned

high

Redemption weight of tiered NFTs miscalculates, making users redeem incorrect amounts - Bug #1

Mover

Mover

2,594.88 USDC • 1 total finding • Sherlock • 0x52

silver

high

Adversary can steal contract fees when topup token is USDC by spoofing _bridgeType and _bridgeTxData

Trader Joe v2 contest

Trader Joe v2 contest

70.47 USDC • 1 total finding • Code4rena • 0x52

#22

medium

Flashloan fee collection mechanism can be easily manipulated

Blur Exchange contest

Blur Exchange contest

114.82 USDC • 1 total finding • Code4rena • 0x52

#20

high

StandardPolicyERC1155.sol returns amount == 1 instead of amount == order.amount

Mycelium

Mycelium

305.87 USDC • 2 total findings • Sherlock • 0x52

#6

high

First depositor can manipulate the exchange rate to steal funds from later depositors

medium

Adding an incompatible plugin will brick the entire contract

Sep '22

Knox Finance

Knox Finance

3,345.72 USDC • 2 total findings • Sherlock • 0x52

#6

high

AuctionInternal#_previewWithdraw can cease to function if user has multiple partially filled/unfilled orders

medium

Users can avoid performance fees by withdrawing before the end of the epoch forcing other users to pay their fees

QuickSwap and StellaSwap contest

QuickSwap and StellaSwap contest

11,445.66 USDC • 3 total findings • Code4rena • 0x52

gold

high

Malicious users can provide liquidity on behalf of others to keep others in the liquidity cooldown

medium

Flashloan users can be forced to pay higher fees than expected

medium

AlgebraPool#swapSupportingFeeOnInputTokens loses exact output functionality

Frax Ether Liquid Staking contest

Frax Ether Liquid Staking contest

39.16 USDC • 1 total finding • Code4rena • 0x52

#66

medium

frxETHMinter.depositEther may run out of gas, leading to lost ETH

VTVL contest

VTVL contest

218.09 USDC • 1 total finding • Code4rena • 0x52

#32

high

Loss of vested amounts

Art Gobblers contest

Art Gobblers contest

2,830.23 USDC • 1 total finding • Code4rena • 0x52

#10

medium

Wrong balanceOf user after minting legendary gobbler

Y2k Finance contest

Y2k Finance contest

4,255.29 USDC • 6 total findings • Code4rena • 0x52

#4

high

Incorrect handling of pricefeed.decimals()

high

Users who deposit in one vault can lose all deposits and receive nothing when counterparty vault has no deposits

high

Risk users are required to payout if the price of the pegged asset goes higher than underlying

high

Vault.sol is not EIP-4626 compliant

medium

StakingRewards.sol#stake is intended to be pausable but isn't

medium

Fees are taken on risk collateral

PartyDAO contest

PartyDAO contest

13,012.21 USDC • 2 total findings • Code4rena • 0x52

bronze

high

ArbitraryCallsProposal.sol and ListOnOpenseaProposal.sol safeguards can be bypassed by cancelling in-progress proposal allowing the majority to steal NFT

high

Attacker can DOS private party by donating ETH then calling buy

Notional

Notional

23,122.29 USDC • 7 total findings • Sherlock • 0x52

silver

high

TradingUtils#_executeTrade contains logical error that can cause loss of funds if trade.buyToken is ETH or WETH

high

StrategyUtils#_executeDynamicTradeExactIn returns incorrect amountBought if buyToken is wstETH and tradeUnwrapped is true

high

Settlement slippage is not implemented correctly which may lead to some vaults being impossible to settle

medium

TradingUtils#_approve is problematic for tokens like USDT that requires allowance to be zero before calling approve

medium

Deployments.sol uses the wrong address for UNIV2 router which causes all Uniswap V2 calls to fail

medium

UniV2Adapter#getExecutionData doesn't properly handle native ETH swaps

medium

TwoTokenPoolMixin allows secondary token to have decimals >18 due to incorrect require statement

FEI and TRIBE Redemption contest

FEI and TRIBE Redemption contest

33.58 USDC • Code4rena • 0x52

#14

Canto Dex Oracle contest

Canto Dex Oracle contest

39.22 CANTO • Code4rena • 0x52

#12

Nouns Builder contest

Nouns Builder contest

431.99 USDC • 3 total findings • Code4rena • 0x52

#41

high

Multiple vote checkpoints per block will lead to incorrect vote accounting

medium

The quorum votes calculations don't take into account burned tokens

medium

Index out of bounds error when properties length is more than attributes length breaks minting

Aug '22

Sentiment

Sentiment

14,694.13 USDC • 5 total findings • Sherlock • 0x52

silver

high

ERC4626Oracle.sol returns incorrect price if ERC4626.decimals != ERC4626.asset.decimals

high

UniV2LPOracle.sol incorrectly values LP when either token in a pair does not have 18 decimals

high

CTokenOracle.sol#getCErc20Price contains critical math error

medium

Chainlink's latestRoundData may return stale or incorrect results

medium

Delisted assets can still be deposited and borrowed against by accounts that already have them

Olympus DAO contest

Olympus DAO contest

3,865.13 USDC • 2 total findings • Code4rena • 0x52

silver

medium

RBS may redeploy funds automatically if price stays above or below wall for longer than _config.regenWait

medium

Cushion bond markets are opened at wall price rather than current price

FIAT DAO veFDT contest

FIAT DAO veFDT contest

32.12 USDC • Code4rena • 0x52

#63

Fraxlend (Frax Finance) contest

Fraxlend (Frax Finance) contest

1,192.6 USDC • 2 total findings • Code4rena • 0x52

#11

medium

Penalty rate is used for pre-maturity date as well

medium

FraxlendPair.sol is not fully EIP-4626 compliant

Foundation Drop contest

Foundation Drop contest

1,239.89 USDC • 2 total findings • Code4rena • 0x52

#8

medium

User may get all of the creator fees by specifying high number for himself

medium

Possible to bypass saleConfig.limitPerAccount

Mimo August 2022 contest

Mimo August 2022 contest

3,307.69 USDC • 2 total findings • Code4rena • 0x52

#6

medium

MIMOManagedRebalance.sol#rebalance calculates managerFee incorrectly

medium

Vault rebalancing can be exploited if two vaults rebalance into the same vault

Rigor Protocol contest

Rigor Protocol contest

2,623.57 USDC • 5 total findings • Code4rena • 0x52

#4

high

Builder can halve the interest paid to a community owner due to arithmetic rounding

high

Untyped data signing

medium

Builders must pay more interest when the system is paused.

medium

Missing upper limit definition in replaceLenderFee() of HomeFi.sol

medium

Project.sol and Community.sol have no way to revoke a hash in approvedHashes

Jul '22

Axelar Network v2 contest

Axelar Network v2 contest

2,148.87 USDC • 1 total finding • Code4rena • 0x52

#7

medium

removeWrapping can be called when there are still wrapped tokens

Golom contest

Golom contest

7,861.33 USDC • Code4rena • 0x52

bronze
Yield Witch v2 contest

Yield Witch v2 contest

5,073.7 USDC • 1 total finding • Code4rena • 0x52

bronze

high

Someone can create non-liquidatable auction if the collateral asset fails on transferring to address(0)

Swivel v3 contest

Swivel v3 contest

2,386.06 USDC • 2 total findings • Code4rena • 0x52

#5

medium

Interface definition error

medium

Loss of funds in an underlying protocol would cause catostrophic loss of funds for swivel

ENS contest

ENS contest

3,471.22 USDC • 1 total finding • Code4rena • 0x52

#5

medium

wrapETH2LD permissioning is over-extended

Fractional v2 contest

Fractional v2 contest

4,661.54 USDC • 10 total findings • Code4rena • 0x52

#4

high

Failed proposal can be committed again

high

Users can lose fractions to precision loss during migraction if _newFractionSupply is set very low

high

Any fractions deposited into any proposal can be stolen at any time until it is commited

high

Fund will be stuck if a buyout is started while there are pending migration proposals

high

Division rounding can make fraction-price lower than intended (down to zero)

high

Migration::withdrawContribution falsely assumes that user should get exactly his original contribution back

high

Malicious User Could Burn The Assets After A Successful Migration

high

```migrateFractions``` may be called more than once by the same user which may lead to loss of tokens for other users

medium

An attacker can DoS vault's buyout with as little as 1 wei per 4 days

medium

Migration.join() and Migration.leave() can still work after unsucessful migration.

Juicebox V2 contest

Juicebox V2 contest

3,510.91 USDC • 5 total findings • Code4rena • 0x52

#7

high

ORACLE DATA FEED CAN BE OUTDATED YET USED ANYWAYS WHICH WILL IMPACT ON PAYMENT LOGIC

medium

Use a safe transfer helper library for ERC20 transfers

medium

Discounted fee calculation is imprecise and calculates less fees than anticipated

medium

addFeedFor should check if inverse feed already exists

medium

processFees() may fail due to exceed gas limit

Jun '22

Putty contest

Putty contest

631.05 USDC • 1 total finding • Code4rena • 0x52

#25

high

Fee is being deducted when Put is expired and not when it is exercised.

Canto v2 contest

Canto v2 contest

313.19 USDC • 1 total finding • Code4rena • 0x52

#12

high

Oracle periodSize is very low allowing the TWAP price to be easily manipulated

Nibbl contest

Nibbl contest

28.28 USDC • Code4rena • 0x52

#62

Yieldy contest

Yieldy contest

2,900.65 USDC • 4 total findings • Code4rena • 0x52

#4

medium

User can initiate withdraw for previous epoch if rebase hasn't been called since end of epoch

medium

Withdrawals initiated after cycle withdrawal request won't be withdrawn in the correct cycle

medium

Rebases can be frontrun with very little token downtime even when warmUpPeriod > 0

medium

Users of Migration.sol may forfeit rebase rewards

Illuminate contest

Illuminate contest

3,202.35 USDC • 7 total findings • Code4rena • 0x52

#5

high

Redeemer.redeem() for Element withdraws PT to wrong address.

high

The lend function for tempus uses the wrong return value of depositAndFix

high

[H-05] Not minting iPTs for lenders in several lend functions

high

Pendle Uses Wrong Return Value For `swapExactTokensForTokens()`

medium

Swivel lend method doesn't pull protocol fee from user

medium

sellPrincipalToken, buyPrincipalToken, sellUnderlying, buyUnderlying uses pool funds but pays msg.sender

medium

Marketplace calls unimplemented function

Badger-Vested-Aura contest

Badger-Vested-Aura contest

50.71 USDC • 1 total finding • Code4rena • 0x52

#37

medium

`_harvest` has no slippage protection when swapping `auraBAL` for `AURA`

Infinity NFT Marketplace contest

Infinity NFT Marketplace contest

48.98 USDC • Code4rena • 0x52

#70

Canto contest

Canto contest

2,211.17 USDC • 4 total findings • Code4rena • 0x52

#12

high

Stealing Wrapped Manifest in WETH.sol

high

Anyone can set the `baseRatePerYear` after the `updateFrequency` has passed

high

Transferring any amount of the underlying token to the CNote contract will make the contract functions unusable

medium

In Cnote.sol, anyone can initially become both accountant and admin

Connext Amarok contest

Connext Amarok contest

1,311.43 USDC • 1 total finding • Code4rena • 0x52

#15

medium

Malicious relayer could exploit sponsor vaults

Notional x Index Coop

Notional x Index Coop

1,486.62 USDC • 1 total finding • Code4rena • 0x52

#11

medium

fCash of the wrong maturity and asset can be sent to wrapper address before wrapper is deployed

May '22

Backd Tokenomics contest

Backd Tokenomics contest

6,831.33 USDC • 2 total findings • Code4rena • 0x52

#4

high

`Minter.sol#startInflation()` can be bypassed

medium

Fees from delisted pool still in reward handler will become stuck after delisting

veToken Finance contest

veToken Finance contest

2,082.64 USDT • 1 total finding • Code4rena • 0x52

#13

medium

VE3DRewardPool.sol is incompatible with Bal/veBal

Velodrome Finance contest

Velodrome Finance contest

848.64 USDC • 3 total findings • Code4rena • 0x52

#15

medium

temporary DOS by calling notifyRewardAmount() in Bribe/Gauge with malicious tokens

medium

Malicious user can populate `rewards` array with tokens of their interest reaching limits of `MAX_REWARD_TOKENS`

medium

Bribe.sol is not meant to handle fee-on-transfer tokens

Rubicon contest

Rubicon contest

458.12 USDC • 2 total findings • Code4rena • 0x52

#24

high

Attacker Could Steal Almost All The Bonus Token In BathBuddy Vesting Wallet

medium

Missing checks allow strategists to steal all fund via `tailOff`

Sturdy contest

Sturdy contest

382.41 USDC • 2 total findings • Code4rena • 0x52

#14

high

The check for value transfer success is made after the return statement in _withdrawFromYieldPool of LidoVault

medium

Title: Yield can be unfairly divided because of MEV/Just-in-time stablecoin deposits

Aura Finance contest

Aura Finance contest

5,188.76 USDC • 1 total finding • Code4rena • 0x52

#12

medium

CrvDepositorWrapper.sol relies on oracle that isn't frequently updated

Cally contest

Cally contest

19.06 USDC • 2 total findings • Code4rena • 0x52

#78

medium

Owner can modify the feeRate on existing vaults and steal the strike value on exercise

medium

Vault is Not Compatible with Fee Tokens and Vaults with Such Tokens Could Be Exploited

Enso Finance contest

Enso Finance contest

5,838.51 USDT • Code4rena • 0x52

#6

Alchemix contest

Alchemix contest

6,389.44 DAI • 1 total finding • Code4rena • 0x52

#7

medium

TransmuterBuffer.sol calls depositUnderlying with no slippage bounds

FactoryDAO contest

FactoryDAO contest

387.78 DAI • 3 total findings • Code4rena • 0x52

#20

high

SpeedBumpPriceGate: Excess ether did not return to the user

medium

amount requires to be updated to contract balance increase (1)

medium

DoS: Attacker may significantly increase the cost of `withdrawExcessRewards()` by creating a significant number of excess receipts

Forgotten Runes Warrior Guild contest

Forgotten Runes Warrior Guild contest

30.28 USDC • Code4rena • 0x52

#55

Apr '22

PoolTogether Aave v3 contest

PoolTogether Aave v3 contest

68.29 USDC • Code4rena • 0x52

#23

Mimo DeFi contest

Mimo DeFi contest

104.94 USDC • Code4rena • 0x52

#23

Backd contest

Backd contest

4,019.43 USDC • 1 total finding • Code4rena • 0x52

#7

medium

Position owner should set allowed slippage

xTRIBE contest

xTRIBE contest

4,218.75 USDC • 1 total finding • Code4rena • 0x52

#7

medium

ERC20Gauges: The _incrementGaugeWeight function does not check the gauge parameter enough, so the user may lose rewards.