Banner
https://sherlock-files.ams3.digitaloceanspaces.com/profile_images/4cf0e96b-6973-4723-bb10-c8889c249321.jpg

sl1

Security Researcher

web3 security researcher

Contact Me

High

44

Total

Medium

40

Total

$10.38K

Total Earnings

#567 All Time

22x

Payouts

bronze

1x

3rd Places

regular

5x

Top 10

regular

11x

Top 25

All

Sherlock

Code4rena

Cantina

CodeHawks

Feb '25

Core Contracts

Core Contracts

295.18 usdc • 17 total findings • CodeHawks • sl1

#75

high

Faulty Gauge Weight Update Formula: Voting Power Delta Not Considered Leading to Arithmetic Underflow and Vote Weight Inconsistency

high

`BaseGauge` users can claim rewards without staking

high

`GaugeController::_calculateReward` implementation will cause smaller shares to be allocated to every gauge

high

Reward manipulation vulnerability in StabilityPool

high

Incorrect Reward Claim Logic in FeeCollector::claimRewards Causes Denial of Service

high

Users can borrow more assets than they have deposited as collateral

high

NFTs Get Permanently Locked in Stability Pool After Liquidation

high

Double Usage Index Scaling in StabilityPool Liquidation Inflates Required CRVUSD Balance

high

Treasury Balance Tracking Bypass in FeeCollector

high

Gauge rewards are not transferred to gauge when distributeRewards() is called

medium

Incorrect DebtToken totalSupply Scaling Breaks Interest Rate Calculations

medium

LendingPool deposits do not work with CurveVault due to lack of funds

medium

LendingPool.getUserDebt returns outdated value and can lead to liquidation failure

medium

`GaugeController::distributeRewards` can be called multiple times by anyone, leading to excessive reward distribution

medium

Paused Protocol Prevents Critical Functions Including Debt Repayment and Liquidations

medium

Skewed Reward Distribution in GaugeController.sol

low

Borrow, withdraw, deposit revert due to curve vault not having available liquidity or being paused.

Jan '25

Liquid Ron

Liquid Ron

0.03 USDC • 2 total findings • Code4rena • sl1

#10

high

The calculation of `totalAssets()` could be wrong if `operatorFeeAmount` > 0, this can cause potential loss for the new depositors

medium

Incorrect Logic in onlyOperator Modifier Leading to Denial-of-Service for Authorized Operators Across Critical Functions

dahlia-protocol

dahlia-protocol

191.88 USDC • 1 total finding • Cantina • 0xsl1

#24

medium

Finding not yet public.

Plaza Finance

Plaza Finance

327.66 USDC • 8 total findings • Sherlock • sl1

#25

high

Incorrect period used to access an auction.

high

When redeeming levETH while collateral level is greater than the threshold the redeem rate is compared with bondETH's market rate.

high

Tokens are not refunded when using BalancerRouter.

high

Incorrect fee accounting.

medium

DoS of coupon claiming if one of the auction fails.

medium

Every auction can be DoS'ed.

medium

Some price feeds for tokens used in the protocol do not exist.

medium

Attacker can make Pool unusable by dropping totalSupply to 0.

Dec '24

SecondSwap

SecondSwap

2,653.64 USDC • 8 total findings • Code4rena • sl1

bronze

high

`SecondSwap_Marketplace` vesting listing order affects how much the vesting buyers can claim at a given step

high

Users can claim more that their actual allotment

medium

`buyFee` And `sellFee` Should Be Known Before Purchase

medium

Tokens that has already been vested can be transferred from a user.

medium

Incorrect referral fee calculations

medium

Rounding error in stepDuration calculations.

medium

Users can prevent being reallocated by listing to marketplace

medium

Creator of one vesting plan can affect vesting plans created by other users.

Nov '24

Concrete

Concrete

1,214.74 USDC • Code4rena • sl1

#13

Aug '24

Sentiment V2

Sentiment V2

1,076.65 USDC • 2 total findings • Sherlock • sl1

#12

high

Liquidator can bypass `_validateSeizedAssetValue()` check seizing all of the position's assets.

medium

Lack of slippage protection during withdrawal in SuperPool and Pool contracts.

Jul '24

TraitForge

TraitForge

219.69 USDC • 7 total findings • Code4rena • sl1

#21

high

Griefing attack on seller's airdrop benefits

high

Wrong minting logic based on total token count across generations

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

Each generation should have 1 "Golden God" NFT, but there could be 0

medium

TraitForgeNft: Generations without a golden god are possible

Karak Restaking

Karak Restaking

1,785.9 USDC • 3 total findings • Code4rena • sl1

#4

high

Slashing NativeVault will lead to locked ETH for the users

high

The operator can create a `NativeVault` that can be silently unslashable.

medium

Changing the slashingHandler for NativeVaults will DoS slashing

Apr '24

Zivoe

Zivoe

191.77 USDC • 5 total findings • Sherlock • sl1

#39

high

Airdrop rewards for ITO pariticipants will be diluted.

high

Staking rewards in ZivoeRewards/ZivoeRewardsVesting can be delayed.

high

ZVE tokens will get stuck in ZivoeRewardsVesting due to an underflow.

medium

A user can escape paying interest for some of the payment intervals.

medium

OCL_ZVE uses 0% slippage tolerance when adding liquidity.

Mar '24

Axis Finance

Axis Finance

1,565.91 USDC • 5 total findings • Sherlock • sl1

#9

high

`claimProceeds()` will be DoS'ed for a fully filled auction if a baseToken reverts on 0 amount transfers.

high

`BlastGas` does not set gas fees to claimable resulting in a loss of revenue for the protocol.

high

`Auctioneer.auction()` is incorrectly accesing the routing in storage.

high

`_revertIfLotConcluded()` incorrectly checks if the lot has concluded.

medium

Permanent DoS of `claimBids()` and `settle()` functions for an auction lot with an expired `LinearVesting` derivative.

Feb '24

Spectra

Spectra

272.07 USDC • 1 total finding • Code4rena • sl1

#8

medium

PrincipalToken is not ERC-5095 compliant

AI Arena

AI Arena

69.63 USDC • 8 total findings • Code4rena • sl1

#71

high

Since you can reroll with a different fighterType than the NFT you own, you can reroll bypassing maxRerollsAllowed and reroll attributes based on a different fighterType

high

Players have complete freedom to customize the fighter NFT when calling `redeemMintPass` and can redeem fighters of types Dendroid and with rare attributes

high

Player can mint more fighter NFTs during claim of rewards by leveraging reentrancy on the `claimRewards() function `

high

Fighters cannot be minted after the initial generation due to uninitialized `numElements` mapping

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.

medium

Fighter created by mintFromMergingPool can have arbitrary weight and element

Jan '24

Curves

Curves

6.7 USDC • 6 total findings • Code4rena • sl1

#88

high

Whitelised accounts can be forcefully DoSed from buying curveTokens during the presale

high

Attack to make ````CurveSubject```` to be a ````HoneyPot````

high

Unauthorized Access to setCurves Function

medium

Protocol and referral fee would be permanently stuck in the Curves contract when selling a token

medium

onBalanceChange causes previously unclaimed rewards to be cleared

medium

Curves::_buyCurvesToken(), Excess of Eth received is not refunded back to the user.

Dec '23

Ethereum Credit Guild

Ethereum Credit Guild

364.64 USDC • 4 total findings • Code4rena • sl1

#36

high

The userGaugeProfitIndex is not set correctly, allowing an attacker to receive rewards without waiting

high

Users staking via the `SurplusGuildMinter` can be immediately slashed when staking into a gauge that had previously incurred a loss

medium

Wrong ProfitManager in GuildToken, will always revert for other types of gauges leading to bad debt

medium

There is no way to liquidate a position if it breaches maxDebtPerCollateralToken value creating bad debt.

Nov '23

Canto Application Specific Dollars and Bonding Curves for 1155s

Canto Application Specific Dollars and Bonding Curves for 1155s

4.08 USDC • Code4rena • sl1

#30

Oct '23

NextGen

NextGen

0.15 USDC • 2 total findings • Code4rena • sl1

#112

high

Attacker can drain all ETH from AuctionDemo when block.timestamp == auctionEndTime

high

Attacker can reenter to mint all the collection supply

The Wildcat Protocol

The Wildcat Protocol

6.73 USDC • 2 total findings • Code4rena • sl1

#69

high

Borrower has no way to update `maxTotalSupply` of `market` or close market.

high

Borrower can drain all funds of a sanctioned lender

Sep '23

Venus Prime

Venus Prime

124.96 USDC • 1 total finding • Code4rena • sl1

#28

high

Prime.sol - User can claim Prime token without having any staked XVS, because his `stakedAt` isn't reset whenever he is issued an irrevocable token.

Aug '23

Dopex

Dopex

0.01 USDC • 1 total finding • Code4rena • sl1

#129

high

The settle feature will be broken if attacker arbitrarily transfer collateral tokens to the PerpetualAtlanticVaultLP

veRWA

veRWA

4.23 USDC • Code4rena • sl1

#53

May '23

Iron Bank

Iron Bank

0.03 USDC • 2 total findings • Sherlock • sl1

#23

medium

Medim severity - No check for stale price feeds

medium

getPriceFromChainlink function in PriceOracle.sol does not check if the L2 sequencer is down.