code-423n4 / 2021-06-tracer-findings

1 stars 0 forks source link

Insurance ERC20 return values not checked #96

Closed code423n4 closed 3 years ago

code423n4 commented 3 years ago

Handle

cmichel

Vulnerability details

The ERC20.transfer() and ERC20.transferFrom() functions return a boolean value indicating success. This parameter should be checked for success. The Insurance.deposit and Insurace.withdraw functions dp not check the return value:

// deposit
collateralToken.transferFrom(msg.sender, address(this), rawTokenAmount);

// withdraw
collateralToken.transfer(msg.sender, rawTokenAmount);

Impact

Some tokens do not revert if the transfer failed but return false instead. Tokens that don't actually perform the transfer and return false are still counted as a correct transfer.

Recommended Mitigation Steps

We recommend using OpenZeppelin’s SafeERC20 versions with the safeTransfer and safeTransferFrom functions that handle the return value check as well as non-standard-compliant tokens.

raymogg commented 3 years ago

Duplicate of #115