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

ERC721 Underlying Can Be Stuck in Unsupported Contract #176

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

ERC721 Underlying Can Be Stuck in Unsupported Contract #176

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
https://github.com/code-423n4/2022-05-cally/blob/1849f9ee12434038aa80753266ce6a2f2b082c59/contracts/src/Cally.sol#L344

Vulnerability details

Impact

The underlying asset can be transferd out to the caller (msg.sender) using exercise() or withdraw() to the caller indicated by msg.sender. If the underlying asset is an ERC721 token, and the msg.sender is a contract address that does not support ERC721, the underlying asset can be stucked in the contract.

As proposed in the EIP-721:

A wallet/broker/auction application MUST implement the wallet interface if it will accept safe transfers.

Proof of Concept

This can be indicated manually by the use of ERC721.transferFrom() instead of ERC721.safeTransferFrom(), which includes a safety check for ERC721 support on the destination address.

Tool Used

Manual review

Recommended Mitigation Steps

Use ERC721.safeTransferFrom() instead which includes a safety check for ERC721 support on the destination address.

@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