1662 matches found
Not calling _safeApprove(0) before setting a new approval causes the call to revert when used with Tether (USDT)
Lines of code Vulnerability details Impact Some tokens like the very popular USDT do not work when changing the allowance from an existing non-zero allowance value it will revert if the current approval is not zero to protect against front-running changes of approvals. These tokens must first be...
In Bribe, tokenRewardsPerEpoch isn't decreased after transferring the rewards
Lines of code Vulnerability details Impact DoS issues when users try to claim rewards. Proof of Concept tokenRewardsPerEpochtokenadjustedTstamp for a given epoch only increases when bribe.notifyRewardAmount is called and never decreases. Before it's called first time in a given epoch, this value...
Malicious user can populate rewards array with tokens of their interest reaching limits of MAX_REWARD_TOKENS
Lines of code Vulnerability details Impact Malicious user can populate rewards array with different tokens early reaching limit of MAXREWARDTOKENS sending very small amount of different tokens. It will restrict any other tokens to be used as rewards in Bribe.solnotifyRewardAmount Proof of Concept...
Bribe Rewards Not Collected In Current Period Will Be Lost Forever
Lines of code Vulnerability details High Bribe Rewards Not Collected In Current Period Will Be Lost Forever Vulnerability Details It was observed that if the bribe rewards are not collected in the current period, they will not be accrued to future epoch, and they will be lost forever...
Wrong parameter in _removeTokenFrom call from _burn internal function
Lines of code Vulnerability details Impact Break the posibility of third party callapprove or approvalForAll authorization to withdraw and merge functions what use the burn internal function Proof of Concept If somebody use the withdraw or merge functions as third party "operator" with approve or...
User will get free funds
Lines of code Vulnerability details Impact If contract has an existing balance of WETH, ETH or targetUnderlying then user will get extra funds. Proof of Concept 1. Assume contract has existing amount 10 of targetUnderlying token 2. User calls burnToTarget function which converts all his passed...
Incorrect msg.value usage could lead to fund loss
Lines of code Vulnerability details Impact The burnToTarget function is using msg.value in a loop which is passed to swapAll function of swapperRouter. Since msg.value amount will not change within loop, contract will end up using its own ETH Proof of Concept 1. User calls burnToTarget function...
OrderValidator: The _cancel function does not validate the order status, the order will be cancelled even if the order does not exist.
Lines of code Vulnerability details Impact In the cancel function of the OrderValidator contract, orderStatusorderHash.isValidated is not checked. If the user's input is incorrect, the non-existing order will be cancelled without any message, causing the user to think that the correct order has...
QA Report
Impact RubiconRouter.swapEntireBalance is supposed to buy at least buyamtmin of Y output tokens by using the caller's entire X input token balance. The problem is that instead of passing the buyamtmin minus the fee to swap, the code uses the caller's X token balance, maxAmount. This means the cal...
Reserve ratio isn't enforced after a trade execution
Lines of code Vulnerability details impact Users could get exposed to higher risk than desired and funds to withdraw from the vault could not be available Proof of Concept The reserve ratio is the parameter that ensures a percentage of the tokens is always available to be withdrawn from a pool by...
BathToken uninitialized rewardsVestingWallet leading to loss of funds
Lines of code Vulnerability details Impact Contract BathToken.sol implements distributeBonusTokenRewards function that allows distributing non-underlying bath token incentives to pool withdrawers. In case of rewardsVestingWallet being set implementation triggers release function of...
First depositor can break minting of shares
Lines of code Vulnerability details Impact The attack vector and impact is the same as TOB-YEARN-003, where users may not receive shares in exchange for their deposits if the total asset amount has been manipulated through a large “donation”. Proof of Concept In BathToken.sol:569-571, the...
Arbitrary access to reset any _tokenId
Lines of code Vulnerability details Impact The poke function is currently missing check to see if user calling poke with tokenId is actually owner of it. Since this function will reset the token and vote so the actual owner will not be able to make withdraw on this tokenId as votedtokenId will be...
Unauthenticated access to Whitelist tokens
Lines of code Vulnerability details Impact If we observe the whitelist function at Voter.solL178, we will observe that only governor is allowed to whitelist tokens requiremsg.sender == governor. But this can be simply bypassed by a minter role using the initialize function which directly calls...
Router: Transferring Token to the Pair contract will cause future liquidity providers to lose funds
Lines of code Vulnerability details Impact Same as code-423n4/2022-01-elasticswap-findings146 In the current implementation, the amount of LP tokens to be minted when addLiquidity is calculated based on the ratio between the amount of newly added tokens and the reserve variable in the Pair...
Aura.sol mint() function has a bug in the logic
Lines of code Vulnerability details Impact Intention is that during inflation period operator will or at least will be able to min EMISSIONSMAXSUPPLY token amount. Due to a logic bug amount of operator mintable tokens directly depends on how many tokens are minted by function minterMint and init...
massUpdatePools() is susceptible to DoS with block gas limit
Lines of code Vulnerability details Impact massUpdatePools is a public function and it calls the updatePool function for the length of poolInfo. Hence, it is an unbounded loop, depending on the length of poolInfo. If poolInfo.length is big enough, block gas limit may be hit. Proof of Concept Tool...
WithdrawTo() needs a zero address check for _to parameter
Lines of code Vulnerability details Impact The withdrawTo function in Booster.sol is missing a zero address check for to parameter. Tokens would be lost if to is zero address. Proof of Concept Tools Used Manual review Recommended Mitigation Steps User require to ensure to is not a zero address. -...
ConvexMasterChef: When _lpToken is cvx, reward calculation is incorrect
Lines of code Vulnerability details Impact In the ConvexMasterChef contract, a new staking pool can be added using the add function. The staking token for the new pool is defined using the lpToken variable. However, there is no additional checking whether the lpToken is the same as the reward tok...
The _transferEthAndFinalize function may reentrant
Lines of code Vulnerability details Impact A reentrancy attack may occurs in transferEthAndFinalize Proof of Concept The reentrancy guard contract works that way, in the intial call "setReentrancyGuard" it declare that the call isn't reentrant, then inside that function it calls another...