https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/dc222e8c-b619-4039-b545-0965b6868196.jpg

carrotsmuggler

Security Researcher

Aerospace engineer 🚀🚀 turned security researcher 👨‍💻 Full portfolio: https://bit.ly/carrotsmuggler-profile 📋

Contact Me

High

87

Total

Medium

1

Solo

69

Total

$97.88K

Total Earnings

#86 All Time

53x

Payouts

gold

3x

1st Places

silver

3x

2nd Places

bronze

2x

3rd Places

All

Sherlock

Code4rena

Cantina

CodeHawks

Jan '25

daao-contracts

daao-contracts

339.25 USDC • 7 total findings • Cantina • carrotsmuggler

#5

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

high

Finding not yet public.

Dec '24

Chainlink Payment Abstraction

Chainlink Payment Abstraction

1,987.07 USDC • Code4rena • carrotsmuggler

bronze

Nov '24

MANTRA DEX

MANTRA DEX

15,876.19 USDC • 13 total findings • Code4rena • carrotsmuggler

gold

high

Stable swap pools don't properly handle assets with different decimals, forcing LPs to receive wrong shares

high

Logical error in `validate_fees_are_paid` can cause a DoS or allow users to bypass fees if `denom_creation_fee` includes multiple coins including `pool_creation_fee` and the user attempts to pay all fees using only `pool_creation_fee`

high

Protocol allows creating broken tricrypto CPMM pools

high

Multi-token stableswap pools allow 0 liquidity for tokens, creating bricked pools

high

Stableswap pool can be skewed free of fees

high

Block gas limit can be hit due to loop depth

high

Attackers can force the rewards to be stuck in the contract with malicious `x/tokenfactory` denoms

high

Incorrect `slippage_tolerance` handling in stableswap `provide_liquidty` function

high

Farms can be created to start in past epochs

high

Stableswap does disjoint swaps, breaking the underlying invariant

medium

Single sided liquidity can't be used to lock LP tokens in the farm manager

medium

`withdraw_liquidity` lacks slippage protection

medium

User is unable to claim their reward for the expanded epochs if farm is expanded

Oct '24

Dria

Dria

1.20 USDC • 2 total findings • CodeHawks • carrotsmuggler

#69

high

Subtraction in `variance()` will revert due to underflow

medium

Users can list assets with price < 1 ERC20 (ETH, WETH), leading to potential DoS vulnerability.

AXION

AXION

854.50 USDC • 3 total findings • Sherlock • carrotsmuggler

#5

high

Boost buyback burns incorrect amount of liquidity

high

Incorrect router function called during initialization

medium

Incorrect `swap` usage in `V3AMO.sol`

Jul '24

MakerDAO Endgame

MakerDAO Endgame

6,563.10 USDC • Sherlock • carrotsmuggler

#17

Jun '24

Allora

Allora

1,281.22 USDC • 2 total findings • Sherlock • carrotsmuggler

#13

high

Anyone can overwrite reputer `p2pkey` values

medium

Topics wont activate even with a sufficient stake

Pegasus

Pegasus

1,785.6 USDC • 1 total finding • Cantina • carrotsmuggler

silver

medium

Finding not yet public.

dHEDGE

dHEDGE

7,516.77 USDC • Sherlock • carrotsmuggler

#4

Findings not publicly available for private contests.

May '24

Canto

Canto

0 USDC • Code4rena • carrotsmuggler

#6

Munchables

Munchables

0.03 USDC • 3 total findings • Code4rena • carrotsmuggler

#14

high

Malicious User can call `lockOnBehalf` repeatedly extend a users `unlockTime`, removing their ability to withdraw previously locked tokens

high

Invalid validation allows users to unlock early

medium

Missing disapproval check in `LockManager.sol::approveUSDPrice` allows simultaneous approval and disapproval of a price proposal

Apr '24

Renzo

Renzo

0.04 USDC • 2 total findings • Code4rena • carrotsmuggler

#57

high

Incorrect withdraw queue balance in TVL calculation

medium

Deposits will always revert if the amount being deposited is less than the bufferToFill value

Beanstalk: Dive Into Basin

Beanstalk: Dive Into Basin

333.33 USDC • 1 total finding • CodeHawks • carrotsmuggler

silver

low

Missing overflow protection in `_capRates` function can lead to broken wells and pumps after a few blocks of unuse

DYAD

DYAD

1,566.96 USDC • 10 total findings • Code4rena • carrotsmuggler

gold

high

Attacker can make 0 value deposit() calls to deny user from redeeming or withdrawing collateral

high

Users can get their Kerosene stuck until TVL becomes greater than Dyad's supply

high

Flash loan protection mechanism can be bypassed via self-liquidations

high

Unable to withdraw Kerosene from `vaultmanagerv2::withdraw` as it expects a `vault.oracle()` method which is missing in Kerosene vaults

medium

`VaultManagerV2.sol::burnDyad` function is missing an `isDNftOwner` modifier, allowing a user to burn another user's minted DYAD

medium

Attacker can frontrun to prevent vaults from being removed from the dNFT owner's position

medium

Value of kerosene can be manipulated to force liquidate users

medium

Incorrect deployment / missing contract will break functionality

medium

setUnboundedKerosineVault not called during deployment, causing reverts when querying for Kerosene value after adding it as a Kerosene vault

medium

Liquidation bonus logic is wrong

Mar '24

Ondo Finance

Ondo Finance

646.09 USDC • 1 total finding • Code4rena • carrotsmuggler

#8

medium

Users can lose access to funds due to minimum withdrawal limits.

Acala

Acala

8,470.73 USDC • 4 total findings • Code4rena • carrotsmuggler

gold

high

`transfer_share_and_rewards` can be used to transfer out shares without transferring reward debt due to rounding.

high

Early user can break pool via inflation attack due to no minimum liquidity check in the incentive contract

medium

Storage can be bloated with low liquidtiy positions

medium

Incentive accumulation can be sandwiched with additional shares to gain advantage over long-term depositors

PoolTogether

PoolTogether

802.01 USDC • 1 total finding • Code4rena • carrotsmuggler

#7

medium

Permit doesnt work with DAI

Feb '24

HydraDX

HydraDX

7,510.88 USDC • 4 total findings • Code4rena • carrotsmuggler

#5

medium

Malicious liquidity provider can put pool into highly manipulatable state

medium

[H02] No `safe_withdrawal` option in `withdraw_protocol_liquidity` function in omnipool can be abused by frontrunners to cause losses to the admin when removing liquidity

medium

[M02] Complete liquidity removals fail from stableswap pools

medium

[M09] No slippage check in `remove_liquidity` function in omnipool can lead to slippage losses during liquidity withdrawal.

100x

100x

856.37 USDC • Sherlock • carrotsmuggler

#5

Findings not publicly available for private contests.

Jan '24

Truflation

Truflation

90.28 USDC • 1 total finding • Sherlock • carrotsmuggler

#9

high

Incorrect `claimable` implementation allows users to withdraw locked tokens

Dec '23

The Standard

The Standard

124.06 USDC • 6 total findings • CodeHawks • carrotsmuggler

#21

high

Looping over unbounded `pendingStakes` array can lead to permanent DoS and frozen funds

medium

Missing deadline check allow pending transactions to be maliciously executed

medium

Fees are hardcoded to 3000 in ExactInputSingleParams

medium

Divergence in the pricing method for collateral within the `calculateMinimumAmountOut()` may result in vaults transitioning into an uncollateralized state after executing swaps.

low

Anyone with TST tokens can monitor the mempool and frontrun mint/burn functions to get EUROs rewards without even staking.

low

Attackers can mint vaults to a victim to gas grief them

Ethereum Credit Guild

Ethereum Credit Guild

1,272.67 USDC • 7 total findings • Code4rena • carrotsmuggler

#14

high

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

medium

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

medium

PnL system can be broken by large users intentionally or unintentionally.

medium

`totalBorrowedCredit` can revert, breaking gauges.

medium

LendingTerm.sol#_partialRepay() A user cannot partial repay a loan with 0 interest

medium

LendingTerm debtCeiling function uses creditMinterBuffer incorrectly

medium

Malicious borrower can decrease Guild holders reward

Sep '23

Allo V2

Allo V2

139.92 USDC • 2 total findings • Sherlock • carrotsmuggler

#41

high

QVSimpleStrategy.sol: `allocator.voiceCredits` is never updated

medium

Incorrect CREATE3 implementation for zksync era

Aug '23

Chainlink Staking v0.2

Chainlink Staking v0.2

5,525.31 USDC • Code4rena • carrotsmuggler

#10

Cooler Update

Cooler Update

0.70 USDC • 1 total finding • Sherlock • carrotsmuggler

#20

medium

Lenders can jack up interest rates to force borrowers to pay more.

Dopex

Dopex

445.89 USDC • 6 total findings • Code4rena • carrotsmuggler

#42

high

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

high

The peg stability module can be compromised by forcing lowerDepeg to revert.

high

Users can get immediate profit when deposit and redeem in `PerpetualAtlanticVaultLP`

medium

_curveSwap: getDpxEthPrice and getEthPrice is in wrong order

medium

reLP() mintokenAAmount the calculations are wrong.

medium

User can avoid paying high premium price by correctly timing his bond call

Shell Protocol

Shell Protocol

31.37 USDC • Code4rena • carrotsmuggler

#17

Sparkn

Sparkn

199.04 USDC • 3 total findings • CodeHawks • carrotsmuggler

#25

high

The same signature can be used in different `distribution` implementation causing that the caller who owns the signature, can distribute on unauthorized implementations

low

If a winner is blacklisted on any of the tokens they can't receive their funds

low

DAI Tokens at Risk Due to Lack of address(0) Check in distribute

veRWA

veRWA

43.21 USDC • 1 total finding • Code4rena • carrotsmuggler

#40

high

Delegated votes are locked when owner lock is expired

Tangible Caviar

Tangible Caviar

2,159.29 USDC • Code4rena • carrotsmuggler

#7

Jul '23

Foundry DeFi Stablecoin CodeHawks Audit Contest

Foundry DeFi Stablecoin CodeHawks Audit Contest

63.27 USDC • 1 total finding • CodeHawks • carrotsmuggler

#35

high

Liquidation Is Prevented Due To Strict Implementation of Liqudation Bonus

CodeHawks Escrow Contract - Competition Details

CodeHawks Escrow Contract - Competition Details

286.68 USDC • 2 total findings • CodeHawks • carrotsmuggler

#22

medium

Fee-on-transfer tokens aren't supported

medium

High - Funds can be lost if any participant is blacklisted

Tokemak

Tokemak

2,099.08 USDC • 5 total findings • Sherlock • carrotsmuggler

#14

high

Incorrect idle value accounting in `LMPVault.sol` leads to lost tokens.

high

Users can steal reward tokens due to bad update of rewardDebt in `LMPVault.sol`.

medium

`LMPVaultRegistry` removed vaults cannot be added again since `_vaultsByType` mapping is not cleared

medium

OOG / unexpected reverts due to incorrect usage of staticcall.

medium

Slashing during `LSTCalculatorBase.sol` deployment can show bad apr for months

Tapioca DAO

Tapioca DAO

15,494.89 USDC • 26 total findings • Code4rena • carrotsmuggler

#5

high

[HD05] Magnetar contract has no approval checking

high

[HE02] `twTAP.sol`: Reward tokens stored in index 0 can be stolen

high

[HF05] `BaseTOFT.sol`: `removeCollateral` can be used to manipulate other user's positions and steal tokens due to absent approval check.

high

[HF06] `BaseTOFT.sol`: `retrieveFromStrategy` can be used to manipulate other user's positions due to absent approval check.

high

[HF08] `BaseTOFTLeverageModule.sol`: `leverageDownInternal` tries to burn tokens from wrong address

high

Collateral can be locked in BigBang contract when `debtStartPoint` is nonzero

high

TOFT and USDO Modules Can Be Selfdestructed

high

Incorrect formula used in function `Market.computeClosingFactor()`

high

Refund mechanism for failed cross-chain transactions does not work

high

Incorrect liquidation reward computation causes excess liquidator rewards to be given

high

`_liquidateUser()` should not re-use the same minimum swap amount out for multiple liquidation

high

`LidoEthStrategy._currentBalance` is subject to price manipulation, allows overborrowing and liquidations

high

Usage of `BalancerStrategy.updateCache` will cause single sided Loss, discount to Depositor and to OverBorrow from Singularity

high

A user with a TapiocaOFT allowance >0 could steal all the underlying ERC20 tokens of the owner

high

Potential 99.5% loss in `emergencyWithdraw()` of two Yieldbox strategies

high

Attacker can prevent rewards from being issued to gauges for a given epoch in TapiocaOptionBroker

high

[HB02] `BalancerStrategy.sol`: `_withdraw` withdraws insufficient tokens

high

[HB10] `AaveStrategy.sol`: Changing swapper breaks the contract

medium

[HC07] `SGLLiquidation`: Liquidations will fail if `liquidationAddress` is set

medium

[MC01] Market liquidations can revert due to arithmetic underflow

medium

[HF07] `BaseTOFTMarketModule.sol`: `removeCollateral` removes collateral from the wrong account

medium

a4185aaf2a0a953dd8ea2e7f62a58087c4cd5680bfbe8c3a749efef847af3c3b - Sent Privately

medium

all deposit and withdraw function in Convex and Curve nativeLP Strategy, apply slippage on internal pricing; which call real-time on chain price from Curve directly and subject to MEV

medium

Swapper contract isn't validated for cross-chain leverage operations

medium

[HB09] `emergencyWithdraw` on all strategy contracts useless without a pause mechanism

medium

[MB01] Inadvised hardcoding of pool address in `AaveStrategy.sol`

Jun '23

GLIF

GLIF

1,653.97 USDC • Sherlock • carrotsmuggler

#5

Findings not publicly available for private contests.

Hubble Exchange

Hubble Exchange

562.08 USDC • 3 total findings • Sherlock • carrotsmuggler

#16

high

Withdrawals can be DDosed by draining gas

medium

Insufficient checks on chainlink prices

medium

Incorrect accounting in Insurance fund

Unitas Protocol

Unitas Protocol

1,764.30 USDC • 2 total findings • Sherlock • carrotsmuggler

bronze

medium

Insufficient checks on oracle price

medium

Incorrect pricing of tokens

May '23

USSD - Autonomous Secure Dollar

USSD - Autonomous Secure Dollar

116.72 USDC • 6 total findings • Sherlock • carrotsmuggler

#19

high

Missing access control in mint/burn

high

Missing slippage check in uniswap swaps

high

Price calculation susceptible to flashloan exploits

high

Price calculation susceptible to overflows

high

Incorrect decimals when selling collateral

high

Incorrect check for selling DAI

DODO Margin Trading

DODO Margin Trading

116.10 USDC • 1 total finding • Sherlock • carrotsmuggler

silver

high

All funds at risk due to insufficient checks in flashloan callback

Apr '23

JOJO Exchange

JOJO Exchange

2,455.46 USDC • 3 total findings • Sherlock • carrotsmuggler

#5

medium

Users can deposited delisted assets

medium

Token borrow limits can be violated with withdrawals

medium

Interest rate drifts over time, upto 5% in the first year

Teller

Teller

1,145.19 USDC • 2 total findings • Sherlock • carrotsmuggler

#9

high

Locked tokens for repeat collateral addresses

high

Collateral can be locked by sending loan NFT to blacklisted address

Frankencoin

Frankencoin

414.8 USDC • 3 total findings • Code4rena • carrotsmuggler

#21

high

Challenges can be frontrun with de-leveraging to cause lossses for challengers

medium

Owner of Denied Position is not able to withdraw collateral until expiry.

medium

function `restructureCapTable()` in Equity.sol not functioning as expected

Rubicon v2

Rubicon v2

129.85 USDC • 6 total findings • Code4rena • carrotsmuggler

#50

high

RubiconMarket batchOffer and batchRequote make offers as self; complete loss of funds for some types of tokens, for example WETH

high

Reward accounting is incorrect in BathBuddy contract

high

DOS of market operations with malicious offers

high

Some offers can't be cancelled

medium

Incorrect fee handling in Position.sol's Market Buy/Sell functions

medium

Calling `ExpiringMarket.stop` and `ExpiringMarket.isClosed` functions cannot pause any functionlities of the market

Mar '23

Asymmetry contest

Asymmetry contest

262.21 USDC • 5 total findings • Code4rena • carrotsmuggler

#25

high

An attacker can manipulate the preDepositvePrice to steal from other users.

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

`WstEth` derivative assumes a ~1=1 peg of stETH to ETH

high

Users can fail to unstake and lose their deserved ETH because malfunctioning or untrusted derivative cannot be removed

Jan '23

RabbitHole Quest Protocol contest

RabbitHole Quest Protocol contest

199.39 USDC • 3 total findings • Code4rena • carrotsmuggler

#22

high

Protocol fees can be withdrawn multiple times in `Erc20Quest`

medium

Funds can be stuck due to wrong order of operations

medium

User may loose rewards if the receipt is minted after quest end time

Dec '22

Forgeries contest

Forgeries contest

19.22 USDC • 1 total finding • Code4rena • carrotsmuggler

#25

high

Admin does not have to wait to call `lastResortTimelockOwnerClaimNFT()`

Caviar contest

Caviar contest

6.99 USDC • 1 total finding • Code4rena • carrotsmuggler

#46

high

First depositor can break minting of shares

Escher contest

Escher contest

118.6 USDC • 4 total findings • Code4rena • carrotsmuggler

#28

high

`LPDA` price can underflow the price due to bad settings and potentially brick the contract

medium

Editions should be checked if they are actually deployed from the legitimate Escher721Factory

medium

Sale contracts can be bricked if any other minter mints a token with an id that overlaps the sale

medium

Use of `payable.transfer()` Might Render ETH Impossible to Withdraw

Nov '22

Redacted Cartel contest

Redacted Cartel contest

78.81 USDC • 1 total finding • Code4rena • carrotsmuggler

#42

high

Underlying assets stealing in `AutoPxGmx` and `AutoPxGlp` via share price manipulation

LooksRare Aggregator contest

LooksRare Aggregator contest

3,864.16 USDC • 2 total findings • Code4rena • carrotsmuggler

#5

medium

It is clearly stated that timelock is used, but this does not happen in the codes

medium

Public to all funds escape

Sep '22

QuickSwap and StellaSwap contest

QuickSwap and StellaSwap contest

52.04 USDC • Code4rena • carrotsmuggler

#51

VTVL contest

VTVL contest

27.95 USDC • Code4rena • carrotsmuggler

#71

Y2k Finance contest

Y2k Finance contest

529.56 USDC • 3 total findings • Code4rena • carrotsmuggler

#22

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

medium

User fund lost because they can't withdraw() their funds before epoch startTime and they have to stuck in positions that become unprofitable even when epoch is not started