
0xRajeev
Security Researcher
Secureum = Security + Ethereum Founder: @0xRajeev Discord: https://t.co/m9fMLfXhEU Newsletter: https://t.co/A3ypVExpzQ
High
Solo
Total
Medium
Solo
Total
$329.77K

Total Earnings
#26 All Time

28x
Payouts

8x
1st Places

4x
2nd Places

6x
3rd Places
All
Sherlock
Code4rena
Oct '22
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
Sep '21
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
Aug '21
Jul '21
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
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
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
Jun '21
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
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
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
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
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
Apr '21
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
Feb '21