https://sherlock-files.ams3.digitaloceanspaces.com/profile_images/defaults/default_avatar_0.png

lemonmon

Security Researcher

Contact Me

High

2

Solo

36

Total

Medium

1

Solo

25

Total

$95.33K

Total Earnings

#89 All Time

23x

Payouts

bronze

1x

3rd Places

regular

12x

Top 10

regular

21x

Top 25

All

Sherlock

Sep '24

MorphL2

MorphL2

1,500 USDC • Sherlock • lemonmon

#14

Aug '24

ZeroLend One

ZeroLend One

1,481.56 USDC • 5 total findings • Sherlock • lemonmon

#22

high

`BorrowLogic::executeRepay` incorrect order of update may cause incorrect interest rates

high

The function `LiquidationLogic::_repayDebtTokens()` may undervalue the total supply of debt shares

high

Incorrect supply balance and debt balance calculation will cause multiple issues

high

Function `executeMintToTreasury` will incorrectly reduce the `supplyShares`, therefore prevent the last users from withdrawing

high

Liquidated User will not be charged for the liquidation

Jul '24

MakerDAO Endgame

MakerDAO Endgame

2,659.02 USDC • Sherlock • lemonmon

#35

Jun '24

Allora

Allora

6,825.43 USDC • 4 total findings • Sherlock • lemonmon

#5

high

`msg_server_registerations::Register` will overwrite reputerInfo, which can be used to sabotage other reputers

high

The worker and reputer's payload may be tampered due to lack of check for the pubkey's ownership

medium

`msg_server_stake::AddStake` calculates the weight incorrectly resulting in incorrect activation of a topic

medium

`msg_server_demand::FundTopic` passes incorrect additional fee, potentially activate a topic incorrectly

Notional Leveraged Vaults: Pendle PT and Vault Incentives

Notional Leveraged Vaults: Pendle PT and Vault Incentives

1,982.91 USDC • 4 total findings • Sherlock • lemonmon

#5

high

The `PendlePTOracle` contract may return a wrong price when calculating the price with `getPtToAssetRate()`

high

`Kelp:_finalizeCooldown` cannot claim the withdrawal if adversary would requestWithdrawals with dust amount for the holder

high

Missing slippage protection in `Ethena:_sellStakedUSDe`

high

Missing slippage protection in `PendlePrincipalToken:redeemPT`

Apr '24

Zivoe

Zivoe

1,881.92 USDC • 8 total findings • Sherlock • lemonmon

#15

high

An issue with calculating total supplies inside the function `ZivoeRewardsVesting.revokeVestingSchedule()` may lead to DOS condition or to account a wrong total number of votes in the system

high

`ZivoeRewards.depositReward()` and `ZivoeRewardsVesting.depositReward()` may be subject of a griefing attack to manipulate reward emissions

high

`ZivoeRewardsVesting.revokeVestingSchedule()` may set a user's votes from their $ZVE vesting to a wrong value

high

The usage of `totalSupply()` of tokens may introduce some issues with calculating the amount to vest when `ZivoeITO.claimAirdrop()` is called

medium

If the `OCL_ZVE:forwardYield` is called before `OCL_ZVE:pushToLockerMulti`, the yield distribution interval cannot be enforced

medium

`OCL_ZVE:fetchBasis` the amount can be skewed by make the pool imbalanced, resulting in yield distribution when there is no real gain

medium

`OCL_ZVE:pushToLockerMulti` will very likely to fail due to the assertion on the allowance

medium

The `ZivoeYDL` ema calculation is incorrect due to uninitialized `distributionCounter`

Mar '24

Optimism Fault Proofs

Optimism Fault Proofs

13,666.46 USDC • 1 total finding • Sherlock • lemonmon

#5

medium

`LibGameType:raw` will unsafely cast resulting in incorrect comparison between GameTypes

Axis Finance

Axis Finance

270.52 USDC • 2 total findings • Sherlock • lemonmon

#19

high

Auction data from previous auctions may be overwritten when a new auction is created with `Auctioneer.auction()`

high

Wrong comparison operator used inside `AuctionModule._revertIfLotConcluded()` may cause multiple issues

Feb '24

Rio Network

Rio Network

965.56 USDC • 3 total findings • Sherlock • lemonmon

#14

high

If `RioLRTOperatorRegistry:setOperatorStrategyShareCaps` is used to set the cap to zero, fund may be locked

high

`RioLRTWithdrawalQueue:queueCurrentEpochSettlement` does not update the epoch, resulting in disabled `rebalance`

medium

`RioLRTDepositPool:depositBalanceIntoEigenLayer` reverts when asset to share calculation rounds down

Dec '23

Footium Update

Footium Update

367.22 USDC • Sherlock • lemonmon

#8

Olympus RBS 2.0

Olympus RBS 2.0

544.27 USDC • 1 total finding • Sherlock • lemonmon

#13

medium

OlympusSupply.getReservesByCategory will revert if the optional submoduleReservesSelector is set to be zero

Nov '23

Notional Update #4

Notional Update #4

718.51 USDC • 2 total findings • Sherlock • lemonmon

#4

high

Spot prices calculated inside `BalancerComposableAuraVault` may not be in line with spot prices from Balancer pools due to rounding differences.

medium

Due to multiple issues the reinvestor may be able to steal funds from the vault.

Convergence

Convergence

2,974.56 USDC • 3 total findings • Sherlock • lemonmon

#4

high

Rewards may be lost when `SdtStakingPositionService.processSdtRewards()` is processing multiple rewards that contain the same reward token

high

`LockingPositionService`'s voting power can be inflated by putting duplicated entries to `LockingPositionDelegate.tokenOwnedAndDelegated`

medium

Users who withdraw and exchange their rewards into CvgSDT may become target of sandwich attacks due to an insufficient slippage protection in `SdtRewardReceiver._withdrawRewards()`

Sep '23

Allo V2

Allo V2

509.34 USDC • 9 total findings • Sherlock • lemonmon

#13

high

`QVSimpleStrategy::_allocate`

high

Missing access modifier for `RFPSimpleStrategy.setPoolActive()` may lead to multiple issues

medium

`QVSimpleStrategy`: part of the distribution may be locked when allocation and registration overlap

medium

`QVSimpleStrategy`: If someone fund a pool when the fund is partially/fully distributed, part of the fund may be locked

medium

`DonationVotingMerkleDistributionVaultStrategy::_afterAllocate` is not capable of dealing with fee-on-transfer tokens

medium

Set milestones in `RFPSimpleStrategy` can exceed 100% `totalAmountPercentage` which may lead to multiple issues

medium

An allocator's `voiceCreditsCastToRecipient` may get calculated in a wrong way inside `QVBaseStrategy._qv_allocate()`

medium

Potential occurance of a DOS condition inside the `RFPSimpleStrategy._distribute()` function

medium

Issues with accounting logic and distribution when using "Fee on Transfer" tokens with `QVSimpleStrategy`

Jul '23

Tokemak

Tokemak

5,261.70 USDC • 7 total findings • Sherlock • lemonmon

#6

high

`LMPVault.updateDebtReporting()` may be abused to only update certain destination vaults in order to gain a profit and/or steal funds from other users

high

Users can potentially get an unlimited amount of reward tokens from `LMPVault` and from `DestinationVaults`

high

Too many assets may be pulled from the user when they deposit or mint into the `LMPVault` via `LMPVaultRouterBase.mint()` or `LMPVaultRouterBase.deposit()`

high

`AbstractRewarder::queueNewRewards` may transfer too much from the msg.sender and the surplus will be trapped

high

In `LMPVault::_withdraw`, rewards will be locked, if more assets than needed are received

high

`MavEthOracle::getPriceInEth` can be manipulated by making swaps in the pool, due to incorrect LP token evaluation

high

`LMPVault`'s cached `totalDebt` can be abused to drain `LMPVault`

Jun '23

Hubble Exchange

Hubble Exchange

2,166.55 USDC • 2 total findings • Sherlock • lemonmon

#4

medium

Potential accounting problems due to issue in `ClearingHouse.updatePositions()`

medium

`Oracle.getUnderlyingPrice` not checking Oracle answer for staleness

DODO V3

DODO V3

1,492.37 USDC • 1 total finding • Sherlock • lemonmon

#10

high

A user can get more dTokens than they should get via `D3VaultFunding.userDeposit()`, due to accounting issues in `D3VaultLiquidation.liquidate()`

Apr '23

GMX Update

GMX Update

749.84 USDC • 1 total finding • Sherlock • lemonmon

#12

medium

Stop-loss orders are broken for certain use cases.

Mar '23

Notional V3

Notional V3

3,079.12 USDC • 1 total finding • Sherlock • lemonmon

#6

high

COMP tokens can get lost in Treasury

Y2K

Y2K

41.79 USDC • 1 total finding • Sherlock • lemonmon

#57

medium

ControllerPeggedAssetV2 token price can be influenced by stale oracle price

Jan '23

Optimism

Optimism

26,887.94 USDC • 1 total finding • Sherlock • lemonmon

#9

medium

contract with only `IOptimismMintableERC20` interface is not compatible with `StandardBridge`

Oct '22

Union Finance

Union Finance

368.90 USDC • 2 total findings • Sherlock • lemonmon

#15

medium

`Comptroller::withdrawRewards` accounting error results in incorrect inflation index

medium

`AssetManager::withdraw` will not return false, when fail to send the withdraw amount

Sep '22

Notional

Notional

18,934.20 USDC • 3 total findings • Sherlock • lemonmon

bronze

high

`TradingUtils::_executeTrade` will withdraw/deposit the whole balance

high

`TradingUtils::_executeTrade` will leak ETH to WETH

high

`StrategyUtils::_executeDynamicTradeExactIn` does not wrap steth