https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/a09434c6-fe38-44c9-8774-b48d520a9dfc.jpg

infect3d

Security Researcher

Web3 Security

Contact Me

High

20

Total

Medium

43

Total

$15.99K

Total Earnings

#401 All Time

24x

Payouts

silver

1x

2nd Places

regular

11x

Top 10

regular

13x

Top 25

All

Sherlock

Code4rena

CodeHawks

Feb '25

Liquidity Management

Liquidity Management

53.03 usdc • 1 total finding • CodeHawks • infect3d

#41

low

`_withdraw` function uses `shortTokenPrice.max` instead of `shortTokenPrice.min` when computing negative PnL adjustment, leading to underestimation of losses and excessive collateral withdrawal

Jan '25

Next Generation

Next Generation

6.32 USDC • 2 total findings • Code4rena • Infect3d

#11

high

Cross-Chain Signature Replay Attack Due to User-Supplied `domainSeparator` and Missing Deadline Check

medium

Lack of deadline check in forwarded request

Dec '24

Lambo.win

Lambo.win

327.13 USDC • 6 total findings • Code4rena • Infect3d

#10

high

LamboFactory can be permanently DoS-ed due to createPair call reversal

high

Minting zero tokens when underlyingToken is not Ether in cashIn()

high

Calculation for `directionMask` is incorrect

medium

Since the cost of launching a new pool is minimal, an attacker can maliciously consume VirtualTokens.

medium

`LamboRebalanceOnUniswap::_getTokenInOut` formula used to compute rebalancing amount is wrong for a UniV3 pool

medium

`sellQuote` and `buyQuote` are missing deadline check in `LamboVEthRouter`

Oct '24

Orderly Solana Vault Contract

Orderly Solana Vault Contract

1,173.90 USDC • 1 total finding • Sherlock • infect3d

#4

high

Attacker can copy valid message and call `solana-vault::oapp_lz_receive` with arbitrary accounts allowing him to steal tokens from `vault_deposit_wallet`

predict.fun lending market

predict.fun lending market

421.53 USDC • 1 total finding • Sherlock • infect3d

#5

medium

Wrong type used for `questionId` in proposal EIP-712 typeHash, making it non-compliant with EIP712

Aug '24

The Wildcat Protocol

The Wildcat Protocol

4,628.3 USDC • 6 total findings • Code4rena • Infect3d

silver

high

Lenders can escape the blacklisting of their accounts because they can move their MarketTokens to different accounts and gain the WithdrawOnly Role on any account they want

medium

Blocked accounts keep earning interest contrary to the WhitePaper

medium

AccessControlHooks onQueueWithdrawal() does not check if market is hooked which could lead to unexpected errors such as temporary DoS

medium

Role providers cannot be EOAs as stated in the documentation.

medium

Inconsistency across multiple repaying functions causing lender to pay extra fees.

medium

`FixedTermLoanHooks` allow Borrower to update Annual Interest before end of the "Fixed Term Period"

Jul '24

LoopFi

LoopFi

132.42 USDC • 5 total findings • Code4rena • Infect3d

#37

high

`Flashlender.sol#flashLoan()` should use `mintProfit()` to mint fees. The current implemetation may lead to locked up WETH in PoolV3.

medium

Because of the Asset:Share 1:1 Conversion, if Vault Incur a Loss, the Last User to Withdraw Will Take The Entire Loss

medium

DOS attack to SwapAction.transferAndSwap() when using an ERC20 permit transferFrom.

medium

Malicious actor can abuse the minimum shares check in `StakingLPEth` and cause DoS or locked funds for the last user that withdraws

medium

`PendleLPOracle::_fetchAndValidate` uses Chainlink's deprecated `answeredInRound`

Zaros Part 1

Zaros Part 1

155.58 USDC • 6 total findings • CodeHawks • infect3d

#37

high

Market Disruption and Financial Loss Post-Liquidation

high

`LiquidationBranch::checkLiquidatableAccounts()` executes `for` loop with wrong values, causing array out of bounds to be recovered, the program will not work as expected

medium

Insufficient checks to confirm the correct status of the sequencerUptimeFeed

low

Functions calling `verifyReport` to verify offchain prices from chainlink will fail

low

Deleting CollateralTypes from the CollateralLiquidationPriority allows traders to be liquidated for free and getting back their full collateral as if they were not liquidated.

low

Fees are not sent to their respective recipients when dealing with low decimals tokens

Jun '24

Mellow Modular LRTs

Mellow Modular LRTs

768.70 USDC • 1 total finding • Sherlock • infect3d

#5

medium

Mellow assume 1 stETH == 1 WETH which open-up opportunities for arbitrage

Size

Size

19.93 USDC • 3 total findings • Code4rena • Infect3d

#50

high

Users won't liquidate positions because the logic used to calculate the liquidator's profit is incorrect

medium

Fragmentation fee is not taken if user compensates with newly created position

medium

Users can not to buy/sell minimum credit allowed due to exactAmountIn condition

May '24

PoolTogether: The Prize Layer for DeFi

PoolTogether: The Prize Layer for DeFi

1,645.65 USDC • 3 total findings • Sherlock • infect3d

#9

high

`DrawManager::finishDraw` can revert when the sum of rewards to distribute is more than available reserve

medium

ClaimPrize hooks gas limit can be violated using a gas bomb, making `claimPrizes` revert

medium

`Claimers` can receive less `feePerClaim` than they should if some prizes are already claimed or if reverts because of a reverting hook

Apr '24

DYAD

DYAD

395.74 USDC • 7 total findings • Code4rena • Infect3d

#29

high

Design flaw and mismanagement in vault licensing leads to double counting in collateral ratios and positions collateralized entirely with kerosine

high

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

high

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

high

Attacker Can Frontruns User's Withdrawals To Make Them Reverts Without Costs

medium

Value of kerosene can be manipulated to force liquidate users

medium

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

medium

No incentive to liquidate when CR <= 1 as asset received < dyad burned

Mar '24

DittoETH

DittoETH

1,975.19 USDC • 3 total findings • Code4rena • Infect3d

#8

medium

If a redemption has N disputable shorts, it is possible to dispute N-1 times the redemption to maximize the penalty

medium

Using cached price to create a proposal reduce the efficacity of redemptions for asset peg

medium

oracleCircuitBreaker: Not checking if price information of asset is stale

WOOFi Swap

WOOFi Swap

262.30 USDC • 1 total finding • Sherlock • infect3d

#8

medium

Chainlink oracle fallback protection is ineffective if cloPrice returns 0

PoolTogether

PoolTogether

685.48 USDC • 2 total findings • Code4rena • Infect3d

#8

medium

`TwabLib::getTwabBetween` can return innacurate balances if `_startTime` and `_endTime` aren't safely bounded

medium

The winner can steal claimer fees, and force him to pay for the gas

Jan '24

Arcadia

Arcadia

36.24 USDC • 1 total finding • Sherlock • infect3d

#8

medium

Underflow in `AbstractStakingAM._getRewardBalances` will cause a DoS of all operations during a period of time

Salty.IO

Salty.IO

91.94 USDC • 3 total findings • Code4rena • Infect3d

#70

high

User can evade `liquidation` by depositing the minimum of tokens and gain time to not be liquidated

medium

Attacker Can Inflate LP Position Value To Create a Bad Debt Loan

medium

SALT staker can get extra voting power by simply unstaking their xSALT

Ubiquity

Ubiquity

371.99 USDC • 1 total finding • Sherlock • infect3d

#7

medium

TWAP oracle is manipulable as the only time-window requirement is `blockTimestamp

Dec '23

Ethereum Credit Guild

Ethereum Credit Guild

92.5 USDC • 4 total findings • Code4rena • Infect3d

#66

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

Anyone can prolong the time for the rewards to get distributed

medium

Malicious borrower can decrease Guild holders reward

Oct '23

The Wildcat Protocol

The Wildcat Protocol

104.36 USDC • 6 total findings • Code4rena • Infect3d

#47

high

Lenders can escape the blacklisting of their accounts because they can move their MarketTokens to different accounts and gain the WithdrawOnly Role on any account they want

medium

Blocked accounts keep earning interest contrary to the WhitePaper

medium

AccessControlHooks onQueueWithdrawal() does not check if market is hooked which could lead to unexpected errors such as temporary DoS

medium

Role providers cannot be EOAs as stated in the documentation.

medium

Inconsistency across multiple repaying functions causing lender to pay extra fees.

medium

`FixedTermLoanHooks` allow Borrower to update Annual Interest before end of the "Fixed Term Period"

Sep '23

DittoETH

DittoETH

1,333.10 USDC • 3 total findings • CodeHawks • infect3d

#11

high

Owner of a bad ShortRecord can front-run flagShort calls AND liquidateSecondary and prevent liquidation

medium

Possible DOS on deposit(), withdraw() and unstake() for BridgeReth, leading to user loss of funds

low

BridgeRouterFacet::withdraw() and unstake() can revert when amount * TVL > uint88 because of PRBMathHelper::mulU88

Jul '23

PoolTogether

PoolTogether

739.79 USDC • 2 total findings • Code4rena • Infect3d

#26

medium

`TwabLib::getTwabBetween` can return innacurate balances if `_startTime` and `_endTime` aren't safely bounded

medium

The winner can steal claimer fees, and force him to pay for the gas

May '23

Venus Protocol Isolated Pools

Venus Protocol Isolated Pools

556.77 USDC • Code4rena • Infect3d

#29

Mar '23

Asymmetry contest

Asymmetry contest

13.13 USDC • Code4rena • Infect3d

#110