https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/c192d50e-5b4d-4c1f-91d6-6732b8d238c5.jpg

Trust

Security Researcher

Head of Trust Security, DM for booking | Master of hand-to-hand audit combat | C4/Immunefi/Sherlock VIP | Hacked Embedded, IoT, iOS in past life

Contact Me

High

44

Total

Medium

86

Total

$405.31K

Total Earnings

#17 All Time

25x

Payouts

gold

13x

1st Places

silver

1x

2nd Places

bronze

3x

3rd Places

All

Sherlock

Code4rena

Immunefi

Mar '24

Optimism Fault Proofs

Optimism Fault Proofs

78,753.45 USDC • 3 total findings • Sherlock • Trust

gold

medium

Theft of initial bonds from proposers who are using smart wallets

medium

Loss of bond amounts on re-org attacks

medium

Anyone can freeze future withdrawals and any L2->L1 messaging due to mismatch between the VM-viewed block number and the user supplied block number.

Abracadabra Mimswap

Abracadabra Mimswap

14,067.26 USDC • 7 total findings • Code4rena • Trust

gold

high

Attacker can amplify a rounding error in MagicLP to break the I invariant and cause malicious pricing

high

Anyone making use of the MagicLP's TWAP to determine token prices will be exploitable.

medium

Permanent loss of yield for stakers in reward pools due to precision loss.

medium

MagicLpAggregator always returns lower than correct answer, leading to arbitrage loss

medium

A user's tokens could be locked for an extended duration beyond their intention and without their control

medium

Loss of assumed functionality of the Onboarding contract in a highly-sensitive area

medium

Miscalculation in addLiquidity of Router results in unauthorized spending of tokens

Feb '24

Audit Comp | ZeroLend

Audit Comp | ZeroLend

49,378 USDC • 9 total findings • Immunefi • Trust

gold

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.

high

Finding not yet public.

medium

Finding not yet public.

UniStaker Infrastructure

UniStaker Infrastructure

5,987.35 USDC • Code4rena • Trust

bronze

Jul '23

Basin

Basin

9,339.71 USDC • 6 total findings • Code4rena • Trust

gold

high

Pumps are not updated in the shift() and sync() functions, allowing oracle manipulation

medium

Treating of BLOCK_TIME as permanent will cause serious economic flaws in the oracle when block times change

medium

Long term denial of service due to lack of fees in Well

medium

Due to bit-shifting errors, reserve amounts in the pump will be corrupted, resulting in wrong oracle values

medium

Due to slot confusion, reserve amounts in the pump will be corrupted, resulting in wrong oracle values

medium

Memory corruption in getBytes32FromBytes() can likely lead to loss of funds

May '23

Chainlink Cross-Chain Services: CCIP and ARM Network

Chainlink Cross-Chain Services: CCIP and ARM Network

10,546 USDC • Code4rena • Trust

#4

Apr '23

ENS Contest

ENS Contest

23,845.89 USDC • 2 total findings • Code4rena • Trust

gold

medium

Offchain name resolution would fail despite the located DNS resolver being fully functional

medium

Invalid addresses will be accepted as resolvers, possibly bricking assets

Dec '22

Forgeries contest

Forgeries contest

18,435.06 USDC • 3 total findings • Code4rena • Trust

gold

high

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

high

Draw organizer can rig the draw to favor certain participants such as their own account.

medium

Protocol safeguards for time durations are skewed by a factor of 7. Protocol may potentially lock NFT for period of 7 years.

prePO contest

prePO contest

1,239.22 USDC • 4 total findings • Code4rena • Trust

#8

high

A whale user is able to cause freeze of funds of other users by bypassing withdraw limit

medium

`PrePOMarket.setFinalLongPayout()` shouldn't be called twice.

medium

Manager can get around min reserves check, draining all funds from Collateral.sol

medium

Users do not receive owed tokens if `TokenSender` contract cannot cover their owed amount.

Nov '22

ParaSpace contest

ParaSpace contest

61,283 USDC • 17 total findings • Code4rena • Trust

gold

high

User can pass auction recovery health check easily with flashloan

high

UniswapV3 tokens of certain pairs will be wrongly valued, leading to liquidations.

high

Attacker can drain pool using executeBuyWithCredit with malicious marketplace payload.

high

Data corruption in NFTFloorOracle; Denial of Service

medium

Users can be locked out of providing Uniswap V3 NFTs as collateral

medium

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

medium

Centralization risk: admin can with rug the project by removing asset and price manipulation on oracle.

medium

NFTFloorOracle's assets will use old prices if added back after removal

medium

When users sign a credit loan for bidding on an item, they are forever committed to the loan even if the NFT value drops massively.

medium

Attacker can abuse victim's signature for marketplace bid to buy worthless item

medium

Bad debt will likely incur when multiple NFTs are liquidated.

medium

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

medium

Oracle does not treat upward and downward price movement the same in validity checks, causing safety issues in oracle usage.

medium

Pausing assets only affects future price updates, not previous malicious updates.

medium

Price can deviate by much more than maxDeviationRate

medium

Oracle will become invalid much faster than intended on non-mainnet chains

medium

MintableIncentivizedERC721 and NToken do not comply with ERC721, breaking composability

LSD Network - Stakehouse contest

LSD Network - Stakehouse contest

4,226.99 USDC • 15 total findings • Code4rena • Trust

#4

high

Reentrancy in LiquidStakingManager.sol#withdrawETHForKnow leads to loss of fund from smart wallet.

high

GiantLP with a transferHookProcessor cant be burned, users' funds will be stuck in the Giant Pool

high

Incorrect accounting in SyndicateRewardsProcessor results in any LP token holder being able to steal other LP tokens holder's ETH from the fees and MEV vault.

high

Giant pools can be drained due to weak vault authenticity check

medium

Dao admin in LiquidStakingManager.sol can rug the registered node operator by stealing their fund in the smart wallet via arbitrary execution.

medium

GiantMevAndFeesPool.previewAccumulatedETH function: "accumulated" variable is not updated correctly in for loop leading to result that is too low

medium

dETH / ETH / LPTokenETH can become depegged due to ETH 2.0 reward slashing.

medium

Calling `updateNodeRunnerWhitelistStatus` function always reverts

medium

Incorrect checking in _assertUserHasEnoughGiantLPToClaimVaultLP

medium

MED: Funds are not claimed from syndicate for valid BLS keys of first key is invalid (no longer part of syndicate).

medium

Medium: User receives less rewards than they are eligible for if first passed BLS key is inactive

medium

Medium: Giant pools are prone to user griefing, preventing their holdings from being staked.

medium

Medium: Vaults can be griefed to not be able to be used for deposits

medium

Freezing of funds - Hacker can prevent users withdraws in giant pools

medium

GiantPool should not check ETH amount on withdrawal

Blur Exchange contest

Blur Exchange contest

6,809.63 USDC • 7 total findings • Code4rena • Trust

gold

high

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

high

Direct theft of buyers ETH funds.

medium

Protocol can be easily rug-pulled by the owner

medium

Hacked owner or malicious owner can immediately steal all assets on the platform

medium

All orders which use expirationTime == 0 to support oracle cancellation are not executable.

medium

Pool designed to be upgradeable but does not set owner, making it unupgradeable

medium

Yul `call` return value not checked

SIZE contest

SIZE contest

259.15 USDC • 3 total findings • Code4rena • Trust

#14

high

Attacker can steal any funds in the contract by state confusion (no preconditions)

medium

Attacker may DOS auctions using invalid bid parameters

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

11,613.69 USDC • 5 total findings • Code4rena • Trust

gold

high

addCredit / increaseCredit cannot be called by lender first when token is ETH

high

Borrower can craft a borrow that cannot be liquidated, even by arbiter. 

high

Repaying a line of credit with a higher than necessary claimed revenue amount will force the borrower into liquidation

medium

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

medium

Borrower/Lender excessive ETH not refunded and permanently locked in protocol

Oct '22

Paladin - Warden Pledges contest

Paladin - Warden Pledges contest

3,013.36 USDC • 4 total findings • Code4rena • Trust

bronze

medium

Reward can be over- or undercounted in `extendPledge` and `increasePledgeRewardPerVote`

medium

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

medium

Pausing `WardenPledge` contract, which takes effect immediately, by its owner can unexpectedly block pledge creator from calling `closePledge` or `retrievePledgeRewards` function

medium

Owner can transfer all ERC20 reward token out using function recoverERC20

Holograph contest

Holograph contest

27,733.34 USDC • 11 total findings • Code4rena • Trust

gold

high

Gas limit check is inaccurate, leading to an operator being able to fail a job intentionally

high

Gas price spikes cause the selected operator to be vulnerable to frontrunning and be slashed

high

LayerZeroModule miscalculates gas, risking loss of assets

high

MEV: Operator can bribe miner and steal honest operator's bond amount if gas price went high

medium

Attacker can force chaotic operator behavior

medium

HolographERC20 breaks composability by forcing usage of draft proposal EIP-4524

medium

`_payoutToken[s]()` is not compatible with tokens with missing return value

medium

MED: isOwner / onlyOwner checks can be bypassed by attacker in ERC721/ERC20 implementations

medium

MED: leak of value when interacting with an ERC721 enforcer contract

medium

MED - Incorrect implementation of ERC721 may have bad consequences for receiver

medium

`_payoutEth()` calculates `balance` with an offset, always leaving dust `ETH` in the contract

Juicebox contest

Juicebox contest

13,376.28 USDC • 4 total findings • Code4rena • Trust

gold

high

Outstanding reserved tokens are incorrectly counted in total redemption weight

high

Reserved token rounding can be abused to honeypot and steal user's funds

high

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

medium

Deactivated tiers can still mint reserve tokens, even if no non-reserve tokens were minted. 

Trader Joe v2 contest

Trader Joe v2 contest

19,422.77 USDC • 3 total findings • Code4rena • Trust

gold

high

Wrong implementation of function `LBPair.setFeeParameter` can break the funcionality of LBPair and make user's tokens locked

high

Attacker can steal entire reserves by abusing fee calculation

medium

Calling `swapAVAXForExactTokens` function while sending excess amount cannot refund such excess amount

The Graph L2 bridge contest

The Graph L2 bridge contest

25,057.78 USDC • 2 total findings • Code4rena • Trust

gold

medium

After proposed 0.8.0 upgrade kicks in, L2 finalizeInboundTransfer might not work.

medium

If L1GraphTokenGateway's outboundTransfer is called by a contract, the entire msg.value is blackholed, whether the ticket got redeemed or not.

Blur Exchange contest

Blur Exchange contest

2,969.45 USDC • 7 total findings • Code4rena • Trust

#4

high

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

high

Direct theft of buyers ETH funds.

medium

Protocol can be easily rug-pulled by the owner

medium

Hacked owner or malicious owner can immediately steal all assets on the platform

medium

All orders which use expirationTime == 0 to support oracle cancellation are not executable.

medium

Pool designed to be upgradeable but does not set owner, making it unupgradeable

medium

Yul `call` return value not checked

Sep '22

QuickSwap and StellaSwap contest

QuickSwap and StellaSwap contest

35.48 USDC • 1 total finding • Code4rena • Trust

#53

medium

A "FrontRunning attack" can be made to the `initialize` function

Frax Ether Liquid Staking contest

Frax Ether Liquid Staking contest

589.18 USDC • 3 total findings • Code4rena • Trust

#12

medium

Rewards delay release could cause yields steal and loss

medium

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

medium

sfrxETH: The volatile result of previewMint() may prevent mintWithSignature from working

VTVL contest

VTVL contest

389.66 USDC • 2 total findings • Code4rena • Trust

#17

high

Permanent freeze of vested tokens due to overflow in _baseVestedAmount

medium

Supply cap of VariableSupplyERC20Token is not properly enforced

PartyDAO contest

PartyDAO contest

13,443.25 USDC • 6 total findings • Code4rena • Trust

silver

high

PartyGovernance: Can vote multiple times by transferring NFT in same block as proposal

high

A majority attack can easily bypass Zora auction stage in OpenseaProposal and steal the NFT from the party.

high

A majority attack can steal precious NFT from the party by crafting and chaining two proposals

medium

Attacker can list an NFT they own and inflate to zero all users' contributions, keeping the NFT and all the money

medium

Attacker can force AuctionCrowdfunds to bid their entire contribution up to maxBid

medium

Early contributor can always become majority of crowdfund leading to rugging risks.

Aug '22

Olympus DAO contest

Olympus DAO contest

3,500.39 USDC • 6 total findings • Code4rena • Trust

bronze

high

TRSRY: front-runnable `setApprovalFor`

medium

`activateProposal()` need time delay

medium

Inconsistency in staleness checks between OHM and reserve token oracles

medium

TRSRY susceptible to loan / withdraw confusion

medium

Heart::beat() could be called several times in one block if no one called it for a some time

medium

Protocol's Walls / cushion bonds remain active even if heart is not beating