Flow

Sablier
FoundryDeFi
20,000 USDC
View results
Submission Details
Severity: medium
Invalid

Method _create() uses _mint() instead of _safeMint()

Summary

In class SablierFlow.sol method _create() is used to create a new NFT stream. But the NFT mint uses _mint() which doesn't verify is the receiver supports ERC721 or not. Usage of smart accounts can lead to user having its funds stuck.

Vulnerability Details

The method _safeMint() succeeds if the receiver is EoA or supports NFT contracts. But this is not checked in _mint().

https://github.com/sablier-labs/flow/blob/main/src/SablierFlow.sol#L625

Impact

In case the receiver don't support smart accounts then the accrued interest will get stuck in the NFT contract.

Tools Used

VS Code

Recommendations

Use _safeMint() for added protection.

_safeMint({ to: recipient, tokenId: streamId });
Updates

Lead Judging Commences

inallhonesty Lead Judge 8 months ago
Submission Judgement Published
Invalidated
Reason: Known issue

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.