https://sherlock-files.ams3.digitaloceanspaces.com/twitter_images/f664c57c-61ef-4537-bf13-f33d18965b6b.jpg

0xRajeev

Security Researcher

Secureum = Security + Ethereum Founder: @0xRajeev Discord: https://t.co/m9fMLfXhEU Newsletter: https://t.co/A3ypVExpzQ

Contact Me

High

10

Solo

61

Total

Medium

4

Solo

72

Total

$329.77K

Total Earnings

#27 All Time

28x

Payouts

gold

8x

1st Places

silver

4x

2nd Places

bronze

6x

3rd Places

All

Sherlock

Code4rena

Oct '22

Astaria

Astaria

39,039.66 USDC • 35 total findings • Sherlock • 0xRajeev

gold

high

Triggering liquidations ahead of expected time leads to loss and lock of funds

high

Incorrect operator in `AstariaRouter.isValidRefinance` can lead to borrower loss and potential liquidation

high

Loans can exceed the maximum potential debt leading to vault insolvency and possible loss of LP funds

high

Payments and liquidations of multiple liens will revert and can be exploited, causing payer fund loss

high

Public vault depositors will receive fewer vault shares until the first payment

high

Epochs can be progressed during ongoing auctions to cause LP fund loss and collateral lockup

high

Anyone can deposit and mint withdrawal proxy shares to capture distributed yield from borrower interests

high

Auction bid that partially pays back an expired lien will revert

high

Lien buyout with new terms does not update the slope of public vaults

high

A malicious lien buyer can DoS to cause fund loss/lock

high

`VaultImplementation._validateCommitment` may prevent liens that satisfy their terms of `maxPotentialDebt`

high

Auctions with remaining liens will always revert causing loss of funds for the highest bidder and stuck collateral

high

A malicious lien owner can exploit a reentrancy to steal LP funds

high

`LiquidationAccountant.claim()` can be called by anyone causing vault insolvency

high

A payment made towards multiple liens causes the borrower to lose funds to the payee

high

Purchaser of a lien token may not receive payments

high

Lien count per epoch is not updated ultimately locking the collateralized NFT

high

`LienToken.buyoutLien` will always revert

high

Public vaults can become insolvent because of missing `yIntercept` update

high

Canceling an auction will result in a loss of borrower funds towards initiator fees

high

Canceling an auction with 0 bids will only partially pay back the outstanding debt

high

Canceling an auction does not refund the current highest bidder

high

`commitToLiens` always reverts

medium

Loan duration can exceed the end of the next epoch

medium

Buyouts of shorter duration liens can lead to the loss of borrower funds

medium

Minting public vault shares while the protocol is paused can lead to LP fund loss

medium

Incorrect calculation in `PublicVault.timeToEpochEnd()` causes loss of LP funds and lock of borrower collateral

medium

Auctions run for less time than intended

medium

Incorrect `LienToken.changeInSlope` calculation can lead to vault insolvency

medium

Any excess payment by the borrower towards a lien is not refunded leading to a loss of borrower funds

medium

`LienToken.createLien` may prevent liens that satisfy their terms of `maxPotentialDebt`

medium

`AstariaRouter.commitToLiens` will revert if the protocol fee is enabled

medium

Enforcing the maximum auction duration fails, leading in potential loss of funds to LPs

medium

Extension logic incorrectly extends the auction by an additional amount of existing duration

medium

Outstanding debt is not guaranteed to be covered by auctions

Aug '22

Nouns DAO contest

Nouns DAO contest

35.44 USDC • Code4rena • 0xRajeev

#41

Sep '21

Swivel contest

Swivel contest

10,021.01 ETH • 4 total findings • Code4rena • 0xRajeev

#4

high

Unsafe handling of underlying tokens

medium

Missing event & timelock for critical onlyAdmin functions

medium

Admin is a single-point of failure without any mitigations

medium

Previously created markets can be overwritten

Wild Credit contest

Wild Credit contest

10,356.99 USDC • 4 total findings • Code4rena • 0xRajeev

bronze

high

Use of tokenB’s price instead of tokenA in determining account health will lead to protocol mis-accounting and insolvency

medium

safeTransferFrom in TransferHelper is not safeTransferFrom

medium

Chainlink - Use latestRoundData instead latestAnswer to run more validations

medium

Use of deprecated Chainlink API

Kuiper contest

Kuiper contest

4,370.29 USDC • 2 total findings • Code4rena • 0xRajeev

#4

medium

Incorrect data location specifier can be abused to cause DoS and fund loss

medium

Unsafe approve would halt the auction and burn the bond

Sushi Trident contest phase 1

Sushi Trident contest phase 1

11,966.1 USDC • 1 total finding • Code4rena • 0xRajeev

#6

medium

`_depositToBentoBox` sometimes uses both ETH and WETH

Sushi Miso contest

Sushi Miso contest

11,612.33 USDC • 1 total finding • Code4rena • 0xRajeev

bronze

high

`PostAuctionLauncher.sol#finalize()` Adding liquidity to an existing pool may allows the attacker to steal most of the tokens

yAxis contest

yAxis contest

3,446.19 tokens) • 5 total findings • Code4rena • 0xRajeev

bronze

high

Controller does not raise an error when there's insufficient liquidity

high

No safety check in addToken

medium

`Vault.withdraw` sometimes burns too many shares

medium

Halting the protocol should be onlyGovernance and not onlyStrategist

medium

manager.allowedVaults check missing for add/remove strategy

Aug '21

Yield micro contest #1

Yield micro contest #1

2,366.82 USDC • Code4rena • 0xRajeev

#4

Float Capital contest

Float Capital contest

2,509.67 USDC • 1 total finding • Code4rena • 0xRajeev

#6

medium

Missing events/timelocks for owner/admin only functions that change critical parameters

Jul '21

PoolTogether micro contest #1

PoolTogether micro contest #1

4,899.69 USDC • 4 total findings • Code4rena • 0xRajeev

gold

high

onlyOwnerOrAssetManager can swap Yield Source in SwappableYieldSource at any time, immediately rugging all funds from old yield source

high

SwappableYieldSource: Missing same deposit token check in transferFunds()

medium

Single-step process for critical ownership transfer/renounce is risky

medium

Use of safeApprove will always cause approveMax to revert

Spartan Protocol contest

Spartan Protocol contest

8,698.83 USDC • 7 total findings • Code4rena • 0xRajeev

bronze

high

Members lose SPARTA tokens in removeLiquiditySingle()

high

Pool.sol & Synth.sol: Failing Max Value Allowance

high

Result of transfer / transferFrom not checked

medium

Missleading onlyDAO modifiers

medium

Improper access control of `claimAllForMember` allows anyone to reduce the weight of a member

medium

BondVault.sol: Possibly unwithdrawable bondedLP funds in claimForMember() + claimRate never zeros after full withdrawals

medium

Dao.sol: Insufficient validation for proposal creation

Connext contest

Connext contest

7,790.9 USDC • 4 total findings • Code4rena • 0xRajeev

gold

high

Router liquidity on receiving chain can be double-dipped by the user

high

Expired transfers will lock user funds on the sending chain

high

Anyone can arbitrarily add router liquidity

medium

Signatures use only tx ID instead of entire digest

Wild Credit contest

Wild Credit contest

2,077.87 USDC • 4 total findings • Code4rena • 0xRajeev

#4

high

Use of tokenB’s price instead of tokenA in determining account health will lead to protocol mis-accounting and insolvency

medium

safeTransferFrom in TransferHelper is not safeTransferFrom

medium

Chainlink - Use latestRoundData instead latestAnswer to run more validations

medium

Use of deprecated Chainlink API

Gro Protocol contest

Gro Protocol contest

23,682.33 USDC • 4 total findings • Code4rena • 0xRajeev

silver

high

Incorrect use of operator leads to arbitrary minting of GVT tokens

medium

Usage of deprecated ChainLink API in `Buoy3Pool`

medium

Safe addresses can only be added but not removed

medium

Flash loan risk mitigation is optional and not robust enough

Jun '21

Tracer contest

Tracer contest

20,073.6 USDC • 7 total findings • Code4rena • 0xRajeev

gold

high

Use of incorrect index leads to incorrect updation of funding rates

high

Malicious owner can drain the market at any time using SafetyWithdraw

medium

No check transferFrom() return value

medium

Add reentracy protections on function `executeTrade`

medium

Single-step process for critical ownership transfer

medium

Malicious owner can arbitrarily change fee to any % value

medium

Use of deprecated Chainlink API

PoolTogether contest

PoolTogether contest

15,932.26 USDC • 4 total findings • Code4rena • 0xRajeev

silver

high

`YearnV2YieldSource` wrong subtraction in withdraw

medium

The assumption that operator == to (user) may not hold leading to failed timelock deposits

medium

Actual yield source check on address will succeed for non-existent contract

medium

safeApprove() for Yearn Vault may revert preventing deposits causing DoS

Reality Cards contest

Reality Cards contest

14,325.87 USDC • 10 total findings • Code4rena • 0xRajeev

gold

high

anyone can call function sponsor

medium

Critical uberOwner address changes should be a two-step process

medium

Deposit whitelist enforced on msg.sender instead of user

medium

Missing call to removeOldBids may affect foreclosure

medium

Missing balancedBooks modifier could result in failed system insolvency detection

medium

NFT Hub implementation deviates from ERC721 for transfer functions

medium

`RCNftHubL2.safeTransferFrom` not accoring to spec

medium

RCFactory.createMarket() does not enforce _timestamps[1] and _timestamps[2] being larger than _timestamps[0], even though proper functioning requires them to be so

medium

maxSumOfPrices check is broken

medium

Flows can bypass market and global pause

May '21

Yield contest

Yield contest

24,201.69 USDC • 3 total findings • Code4rena • 0xRajeev

silver

medium

Potential griefing with DoS by front-running vault creation with same vaultID

medium

Uninitialized or Incorrectly set auctionInterval may lead to liquidation engine livelock

medium

Violation of implicit constraints in batched operations may break protocol assumptions

FairSide contest

FairSide contest

12,089.47 USDC • 7 total findings • Code4rena • 0xRajeev

bronze

high

Conviction scoring fails to initialize and bootstrap

high

Locked funds are debited twice from user during tokenization leading to fund loss

high

Locked funds from tokenization are credited twice to user leading to protocol fund loss

medium

Incorrect use of _addTribute instead of _addGovernanceTribute

medium

Call to swapExactTokensForETH in liquidateDai() will always fail

medium

Conviction totals not updated during tokenization

medium

NFTs can never be redeemed back to their conviction scores leading to lock/loss of funds

Visor contest

Visor contest

13,947.96 USDC • 3 total findings • Code4rena • 0xRajeev

gold

high

NFT transfer approvals are not removed and cannot be revoked thus leading to loss of NFT tokens

high

A previously timelocked NFT token becomes permanently stuck in vault if it’s ever moved back into the vault

high

Unhandled return value of transferFrom in timeLockERC20() could lead to fund loss for recipients

NFTX contest

NFTX contest

5,802.1 USDC • 2 total findings • Code4rena • 0xRajeev

#6

medium

Randomization of NFTs returned in redeem/swap operations can be brute-forced

medium

Use safeTransfer/safeTransferFrom consistently instead of transfer/transferFrom

Apr '21

LarvaLabs Meebits Contest

LarvaLabs Meebits Contest

15,307.48 USDC • 1 total finding • Code4rena • 0xRajeev

gold

high

ERC-721 Enumerable Spec mismatch for index of tokenByIndex() function

Based Loans contest

Based Loans contest

4,523.84 USDC • Code4rena • 0xRajeev

#4

Vader Protocol contest

Vader Protocol contest

40,849.6 USDC • 20 total findings • Code4rena • 0xRajeev

silver

high

Unhandled return value of transfer in transferOut() of Pools.sol

high

Flash attack mitigation does not work as intended in USDV.sol

high

Incorrect initialization causes VADER emission rate of 1 second instead of 1 day in Vader.sol

high

Missing DAO functionality to call changeDAO() function in Vader.sol

high

Flash loans can affect governance voting in DAO.sol

high

Incorrect burn address in Vader.sol

high

Wrong liquidity units calculation

high

Anyone can list anchors / curate tokens

high

Wrong `calcAsymmetricShare` calculation

high

Proposals can be cancelled

high

convert collects funds even when minting is disabled

high

Incorrect initialization gives IL protection of only 1 second instead of 100 days in Router.sol

medium

Pool functions can be called before initialization in init() of Pools.sol

medium

User may not get IL protection if certain functions are called directly in Pools.sol

medium

Incorrect operator used in deploySynth() of Pools.sol

medium

changeDAO should be a two-step process in Vader.sol

medium

Init function can be called by everyone

medium

Undefined behavior for DAO and GRANT vote proposals in DAO.sol

medium

Copy-paste bug leading to incorrect harvest rewards in Vault.sol

medium

Lack of input validation in replacePool() allows curated pool limit bypass in Router.sol

Maple Finance contest

Maple Finance contest

5,382.1 USDC • Code4rena • 0xRajeev

#4

Feb '21

ElasticDAO contest

ElasticDAO contest

5,970.13 ETH • Code4rena • 0xRajeev

bronze
Slingshot Finance contest

Slingshot Finance contest

8,491.58 USDC • Code4rena • 0xRajeev

gold