Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Using transferFrom on ERC721 tokens #236

Closed
code423n4 opened this issue May 14, 2022 · 1 comment
Closed

Using transferFrom on ERC721 tokens #236

code423n4 opened this issue May 14, 2022 · 1 comment
Labels
2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working duplicate This issue or pull request already exists sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")

Comments

@code423n4
Copy link
Contributor

Lines of code

https://github.com/code-423n4/2022-05-cally/blob/1849f9ee12434038aa80753266ce6a2f2b082c59/contracts/src/Cally.sol#L295

Vulnerability details

Impact

When exercising an option with an underlying ERC721 token, the exerciser receives the ERC721 token via the unsafe transferFrom instead of the safe counterpart safeTransferFrom. If the exerciser is a contract and is not aware of incoming ERC721 tokens, the sent ERC721 tokens could be locked.

safeTransferFrom checks that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked.

Proof of Concept

Cally.sol#L295

Tools Used

Manual review

Recommended mitigation steps

Consider using safeTransferFrom() within the exercise(uint256 optionId) function as well as in the withdraw(uint256 vaultId) (Cally.sol#L344) function.

@code423n4 code423n4 added 2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working labels May 14, 2022
code423n4 added a commit that referenced this issue May 14, 2022
@outdoteth outdoteth added the sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity") label May 15, 2022
@outdoteth
Copy link
Collaborator

use safeTransferFrom to prevent stuck NFTs: #38

@outdoteth outdoteth added the duplicate This issue or pull request already exists label May 15, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working duplicate This issue or pull request already exists sponsor confirmed Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
Projects
None yet
Development

No branches or pull requests

2 participants