13 matches found
No check proxy contract is deployed
Lines of code Vulnerability details The deployProxyDelegatorIfNeeded function in ERC20MultiDelegate.sol does not verify that a proxy contract has been successfully deployed before emitting an event indicating its creation. Impact Both createProxyDelegatorAndTransfer and processDelegation function...
The delegator process occurs even if the source and target have the same address.
Lines of code Vulnerability details Impact The ERC20MultiDelegate contract allows a ENS token holder to either: Case1: Transfer tokens from sources to targets to delegate votes, OR Case2: Get reimbursed from sources and burn their votes OR Case3: Deploy a proxy delegate contract to transfer token...
No address validation can lead to unexpected behaviour
Lines of code Vulnerability details Background With the implementation of the ERC20Multidelegate contract, it will be possible to delegate your voting power to multiple recipients in one transaction. A user can call ERC20MultiDelegate.delegateMulti to initiate this multi-delegation: source:...
Use of uint for addresses may result in fund loss for user .
Lines of code Vulnerability details Proof of Concept : The Multidelegate contract takes input of addresses as uint256 which is quite unique . Each target address is inputted as uint256 and casted down to uint160 . for uint transferIndex = 0; transferIndex Math.maxsourcesLength, targetsLength;...
OpenZeppelin 's recent v5.0.0 release includes many changes to libraries/contracts that can directly affect ERC20MultiDelegate functionality
Lines of code Vulnerability details Impact OpenZeppelin just released v5.0.0, and there happen to be several significant changes that directly affect the ERC20MultiDelegate implementation, directly and indirectly, via packages used and inherited from. Here’s a link to the release: Below is a...
Possibility of losing users funds due to not checking for zero address (address 0x0)
Lines of code Vulnerability details Impact As there is no function for checking whether the addresses of the sources and targets are zero or not in the delegateMulti function it may cause issues for users Sending tokens to a zero address address 0x0 is generally not a recommended practice in...
Approval Verification
Lines of code Vulnerability details Impact There is a great need for approval check before commencement of token transfer and clearing of excess approvals after token transfer has been done, to prevent potential third-party exploitation that could drain funds from unsuspecting users via the...
Needs a secure modifier
Lines of code Vulnerability details Impact Detailed description of the impact of this finding. The ERC20ProxyDelegator constructor appears to be used for delegating voting rights to a delegate by allowing them to call the delegate function of an ERC20Votes contract. To secure this function, you...
no sufficient tokens check for transferFrom() in _reimburse() , createProxyDelegatorAndTransfer() and transferBetweenDelegators()
Lines of code Vulnerability details Impact there is no sufficient tokens check in reimburse , createProxyDelegatorAndTransfer and transferBetweenDelegators for transferFrom which can lead to unexpected results Proof of Concept from the OZ's ERC1155.sol: from must have a balance of tokens of type ...
Deterministic proxy contract address with a hard-coded salt enables token theft.
Lines of code Vulnerability details Impact The retrieveProxyContractAddress function calculates the address of the proxy contract deterministically based only on the delegate address. An attacker could pre-compute proxy contract addresses for target delegates and steal tokens by transferring to...
No access control on _delegateMulti allows unauthorized token delegation.
Lines of code Vulnerability details Impact There is no access control on the delegateMulti function. This allows anyone to delegate tokens between accounts. The function should check that the caller is the token holder. Proof of Concept The delegateMulti function that allows anyone to delegate...
Loss of tokens because target address can be set to zero
Lines of code Vulnerability details Impact Due to the possibility of target addresses being zero, tokens transferred to zero address will be lost forever, leading to loss of funds for the users of the protocol and that tokens being out of circulation forever burned. Proof of Concept Users can...
Incorrect Addresses will be returned via retrieveProxyContractAddress() possibly bricking delegations.
Lines of code Vulnerability details The retrieveProxyContractAddress function is used to retrieve the address where it casts a bytes32 to an address type. function retrieveProxyContractAddress ERC20Votes token, address delegate private view returns address bytes memory bytecode = abi.encodePacked...