10190 matches found
ArtGobblers.sol#L693 : function "tokenURI" does not validate the "gobblerId" for all cases.
Lines of code Vulnerability details Impact validation check for gobblerId is missing for other case inside the function tokenURI. Proof of Concept function tokenURIuint256 gobblerId public view virtual override returns string memory // Between 0 and lastRevealed are revealed normal gobblers. if...
The users can steal the pages from the community reserve
Lines of code Vulnerability details Impact community reserve could be losing some pages Proof of Concept In case mintCommunityPages start minting let's say 20 pages if Alice has invoke mintFromGoo before this looop for uint256 i = 0; i numPages; i++ mintcommunity, ++lastMintedPageId; Has finished...
Upgraded Q -> M from 686 [1664289678850]
Judge has assessed an item in Issue 686 as Medium risk. The relevant finding follows: --- The text was updated successfully, but these errors were encountered: All reactions...
Upgraded Q -> M from 357 [1664289665374]
Judge has assessed an item in Issue 357 as Medium risk. The relevant finding follows: --- The text was updated successfully, but these errors were encountered: All reactions...
When minting legendary NFT, non-legendary NFTs are burned, but burned token approval is not revoked, burned NFT TokenURI still accessible after burning.
Lines of code Vulnerability details Impact Detailed description of the impact of this finding. When minting legendary NFT, non-legendary NFTs are burned, only the owner of the burned nft is set to 0, emit Transfermsg.sender, getGobblerDataid.owner = address0, id; but burned token approval is not...
Lack of address check for contract ownership changes
Lines of code Vulnerability details Impact Not Checking for zero address input can cause to lose of ownership by accident . Proof of Concept owner try to change ownership to a zero address and it cause to lose of funds . Tools Used Recommended Mitigation Steps Add a check that address in not zero...
The requestRandomSeed() function can be manipulated
Lines of code Vulnerability details Impact The task of the requestRandomSeed function works in ArtGobblers.sol for Request a new random seed from ChainlinkV1. There is a working rule: Can only be called every 24 hours at the earliest To make the requestRandomSeed function run every 24 hours; The...
Cannot Withdraw GOO Accrued In GobblerReserve Contracts
Lines of code Vulnerability details Impact The affected GobblerReserve contract does not implement any functionality to withdraw any accrued GOO. Considering that the community and team addresses in the ArtGobblers contract are going to be newly deployed GobblerReserve contracts, immutable and...
after mintLegendaryGobbler(), the burned Gobbler can be transferred back
Lines of code Vulnerability details Impact mintLegendaryGobbler burn Gobbler only set the owner=address0, and did not clear getApprovedid, resulting in the transferFrom can be called to transfer back to old owner Proof of Concept Suppose users0 has Gobbler1 steps: step 1:users0 call...
Not checking 0 address in moveWithheldETH() can lead into loss of funds
Lines of code Vulnerability details Not checking 0 address in moveWithheldETH can lead into loss of funds Impact If by error to address is 0, value would be moved to 0 address, and therefore lost Proof of Concept Recommended Mitigation Steps Check 0 address on moveWithHeldEth --- The text was...
Same validator can deposit Ether multiple times
Lines of code Vulnerability details Impact Same validator may stake more than 1 time. Proof of Concept At frxETHMinter.solL140 and frxETHMinter.solL151, validator can only call the depositEther function for 1 time only. However, after calling the depositEther funciton, the same validator can call...
High privilege of setWithholdRatio function
Lines of code Vulnerability details Impact With the setWithholdRatio function, most of the funds can be authorized to be confiscated, such authority is too high and can confuse users, If this authority is to be used for commission deduction, it should be clearly stated. Proof of Concept /// @noti...
Emergency functions recoverEther recoverERC20, moveWithheldETH and setWitholdRatio should not allow owner to call them
Lines of code Vulnerability details Impact True trustlessness is hard, but there's not much point in having open source smart contracts unless the goal is achieved completely. The moment a vector exists where a rug pull could occur a user should be rightly suspicious. Although TimelockController ...
[NAZ-H1] syncRewards() Can be Front-Run With A Flashloan To Force lastRewardAmount To Equal Zero
Lines of code Vulnerability details Impact A malicious user can front run syncRewards with a flashloan attack to cause lastRewardAmount to equal zero. With this users will lose on rewards until the next rewardsCycleEnd. Proof of Concept 1. Alice calls deposit with 1000 tokens storedTotalAssets =...
Some users may not be able to withdraw till the end of the rewardsCycle, due to possible underflow in the function beforeWithdraw()
Lines of code Vulnerability details Impact In xERC4626.sol If an underflow occur in the function beforeWithdraw, some users may not be able to withdraw till the end of the rewardsCycle. storedTotalAssets is a cached value of total assets, which will only include the unlockedRewards, when the whol...
frxETHToken user was freeze into the contract and loss of user fund.
Lines of code Vulnerability details Impact Whoever was deposit frxETHToken user was freeze into the contract and loss of user fund. Proof of Concept on that line of : uint256 sfrxethrecieved = sfrxETHToken.depositmsg.value, recipient; it frxETHToken was approved, if approved succeed that would...
IERC20.transfer doesn't support all ERC20 tokens
Lines of code Vulnerability details Impact IERC20.transfer doesn't support all ERC20 tokens in the function recoverERC20. Proof of Concept In the contract frxETHMinter, the function recoverERC20 is used to recover ERC20 tokens, if someone accidentally sent some of them in the contract. However...
TIMELOCK CAN BE BYPASSED
Lines of code Vulnerability details Impact The purpose of a Timelock contract is to put a limit on the privileges of the governor, by forcing a two step process with a preset delay time. However, we found that the current implementation actually wonโt serve that purpose as it allows the...
depositEther function DoS with locking funds
Lines of code Vulnerability details Description There is a depositEther function in frxETHMinter contract. The function performs multiple deposits to the depositContract. More detailed, the contract calculates the amount of ether that was submitted to it, and everything, except withheld amount, i...
Admin rug vector in moveWithheldETH()
Lines of code Vulnerability details According to the documentation, currentWithheldETH is meant to: withhold part of the ETH deposit for future use, such as to earn yield in other places to supplement the ETH 2.0 staking yield The issue is that the owner can call moveWithheldETH with an arbitrary...
Mint legendary gobbler for free
Lines of code Vulnerability details Impact Minting a legendary gobbler does not delete getApproved, thus an owner can approve himself before minting the legendary and later transfer back these ordinary gobblers. mintLegendaryGobbler performs an imitation of burning by setting an owner to address0...
[M3] It is impossible to recover stucked non complying ERC-20 tokens
Lines of code Vulnerability details Impact Contract frxETHMinter is unable to recover tokens like USDT PoC Tokens that return void on transfer, that is, those who do not follow ERC20 standard will revert when you try to assign the output to a boolean variable. This is the case in you function...
The mintLegendaryGobbler function does not delete the getApproved of the normal Gobbler, which would cause the sacrificed Gobbler to be transferred
Lines of code Vulnerability details Impact In the mintLegendaryGobbler function, the getApproved of the normal Gobbler is not deleted when the normal Gobbler is used to mint the legendary Gobbler, which results in the sacrificed Gobbler being able to be transferred in the transferFrom function. f...
Inconsistent use of the for loop increment
Lines of code Vulnerability details Impact Inconsistant use of ++ operator. In OperatorRegistry.sol line numbers 84 and 114 the for loop variable i is incremented as ++i . But in ERC20PermitPermissionedMint.sol line number 84, the loop variable i is incremented as i++. Consider keeping the...
withheld_amt calculation is done after minting frxETHToken tokens
Lines of code Vulnerability details Proof of concept The submit method in frxETHMinter.sol has the following code // Give the sender frxETH frxETHToken.mintermintrecipient, msg.value; // Track the amount of ETH that we are keeping uint256 withheldamt = 0; if withholdRatio != 0 withheldamt =...
use safeERC20
Lines of code Vulnerability details Impact Some tokens contracts like USDT don't comply with the erc20 standard, the transfer doesn't return a boolean. Proof of Concept Tools Used Recommended Mitigation Steps Use the safeErc20 library from OpenZeppelin. --- The text was updated successfully, but...
[H1] Owner of frxETHMinter can rug pull the contract
Lines of code Vulnerability details Impact Owner of the contract is able to leave with all the tokens and ETH of the contract, which makes protocol trustless PoC You have implemented a function to function recoverEtheruint256 amount external onlyByOwnGov bool success, = addressowner.call value:...
First xERC4626 deposit can break the share calculation.
Lines of code Vulnerability details Impact New xERC4626 vault share price can be manipulated right after creation. Which give early depositor greater share portion of the vault during the first cycle. While deposit token also affected by rounding precision due to the exploit showed in the POC tha...
Users cannot use mintWithSignature() function in most cases
Lines of code Vulnerability details Impact Function sfrxETH.mintWithSignature allows users to approve and mint in one transaction. Users will provide input param shares and function will calculate what assets amount needed to be approved in case approveMax = false. uint256 amount = approveMax ?...
TIMELOCK_ROLE Can Withdraw FUND from the Contracts via recoverEther()
Lines of code Vulnerability details Impact The Timelock Address role is misidentified in this agreement and has high authority. While I believe developer have good intention to use these functions. It often associate with Rug Pull by developer in the eyes of investors because Rug Pull is not...
Low level call returns true if the address doesn't exist
Lines of code Vulnerability details Impact As written in the solidity documentation, the low-level function call returns true as its first return value if the address called is non-existent, as part of the design of the EVM. Address existence must be checked prior to calling if needed. Since the...
xERC4626.sol#beforeWithdraw will fail under certain conditions
Lines of code Vulnerability details Impact Valid withdrawals will fail in certain edge cases Proof of Concept function totalAssets public view override returns uint256 // cache global vars uint256 storedTotalAssets = storedTotalAssets; uint192 lastRewardAmount = lastRewardAmount; uint32...
Wrong value returned in numValidators() function
Lines of code Vulnerability details Impact wrong value returned by numValidators . Proof of Concept The function numValidators is meant to return the number o validators. if clearValidatorArray is called the validators array will be cleared but the length will still be the same. The function...
syncRewards() after xERC4626's beforeWithdraw() can result in wrong reward amount
Lines of code Vulnerability details Impact The withdrawal amount will be counted as part of the surplus asset balance mistakenly if block.timestamp = rewardsCycleEnd. Proof of Concept function beforeWithdrawuint256 assets, uint256 shares internal override super.beforeWithdrawassets, shares; // ca...
minter_burn_from is not used, there is no way to withdraw frxETHToken minted
Lines of code Vulnerability details Impact minterburnfrom is not used, there is no way to withdraw frxETHToken minted. frxETHToken will be worthless if it can't be redeemed. Proof of Concept // Used by minters when user redeems function minterburnfromaddress baddress, uint256 bamount public...
removeMinter function DoS
Lines of code Vulnerability details Description There is a removeMinter function in ERC20PermitPermissionedMint. The function performs the removal minteraddress from the special address list. In other words, the function is needed to remove special access for a specific address. // Remove a minte...
Risk of ETH funds Rug Pull in the moveWithheldETH and recoverEther functions
Lines of code Vulnerability details Impact In the frxETHMinter contract both the owner and governance timelock have the power to call the functions moveWithheldETH and recoverEther, those functions allow the transfer of the ETH from frxETHMinter to the owner or a given account, this means that th...
The Frax ETH liquid staking protocol WRONGLY assumes that the users can convert their sfrxETH for more frxETH over time
Lines of code Vulnerability details Impact The Frax ETH liquid staking protocol WRONGLY assumes that the users can convert their sfrxETH for more frxETH over time.But because of any untoward incident if the validators stake can gets slashed, then this assumption will be wrong and can cause severe...
Use of transfer() instead of call() to send eth
Lines of code Vulnerability details Use of transfer instead of call to send eth Impact Use of transfer might render ETH impossible to withdraw because after istanbul hardfork, there is increases in the gas cost of the SLOAD operation and therefore breaks some existing smart contracts.Those...
A mistake made by the Minters can result in minting tokens to a wrong address or a zero address.
Lines of code Vulnerability details Impact Tokens can be minted to a wrong address. Proof of Concept The function mintermint is used by the Minters, to mint tokens to the users that successfully used the functions submitAndDeposit, submit and submitAndGive. However there is no check in mintermint...
An attacker taking over the timelock_address or the owner address will result in DoS and unusable contract (frxETHMinter).
Lines of code Vulnerability details Impact Actions described in the POC result in DoS, if an attacker takes over one of the two "admin" addresses. Proof of Concept By taking over the timeLock or the owner address, the attacker will have access to the following functions moveWithheldETH,...
Possible lost msg.value
Lines of code Vulnerability details In call submit can will send value and the asset can be an ERC20!= address0, if frxETHMinter.sol contract receive this call the fouds will lost. Recommended Mitigation Steps In frxETHMinter, submit function: Check if the msg.value is zero when the asset is...
Missing payable
Lines of code Vulnerability details Impact The following functions are not payable but uses msg.value - therefore the function must be payable. This can lead to undesired behavior. Proof of Concept frxETHMinter.sol, submit should use payable since it uses msg.value Tools Used Manual review...
Recovererc20 uses transfer -> token transfers do not verify that the tokens were successfully transferred (safeTransfer)
Lines of code Vulnerability details Impact Some tokens do not revert the transaction when the transfer function fails or return false. Which requires us to check the return value after calling the transfer function. Given that recoverERC20 can accept any tokens. A token such as ZRX would not reve...
recoverEther not updating currentWithheldETH breaks calculation of withheld amount for further deposits
Lines of code Vulnerability details The emergency exit function recoverEther allows the owner to retrieve the ETH in case an issue were to happen. The problem is that this function does not update currentWithheldETH. This means upon deposit starting again after the emergency recovery,...
The user Can't swap their frxETH to ETH
Lines of code Vulnerability details Impact Iโm so confused I didn't find any logic to withdrawing my funds ETH by transferring my frxETH Recommended Mitigation Steps Create logic for withdrawals swap --- The text was updated successfully, but these errors were encountered: All reactions...
Use safetransfer/safetransferFrom instead of transfer/transferFrom in ERC20
Lines of code Vulnerability details Impact Its a good to checks the return value of token transfer using safetransfer or safetransferFrom on Openzeppelin to ensure the token revert when transfer failure. Failure to do so will cause silent failures of transfer and affect token accountng in contrac...
xERC4626 is vulnerable to exchange rate MEV:
Lines of code LOC: Vulnerability details Description When protocols hand out rewards to staked tokens, they must be careful to do so without leaving a large MEV opportunity, otherwise a bot could sandwich the increase of token value by minting shares and immediately redeeming them for a larger...
Frontrunning by malicious validator
Lines of code Vulnerability details Impact Frontrunning by malicious validator changing withdrawal credentials Proof of Concept A malicious validator can frontrun depositEther transaction for its pubKey and deposit 1 ether for different withdrawal credential, thereby setting withdrawal credit...
It's possible to send tokens to an unwanted wallet
Lines of code Vulnerability details Impact recoverEther and recoverERC20 could send tokens to a lost wallet. Proof of Concept In the contract frxETHMinter, the methods recoverEther and recoverERC20 doesn't receive the destination address, it sends the ether to the owner, but it is possible that t...