The stream NFT has the following implementation
This mean, that the NFT should be transferred only when the isTransferable
is set to TRUE. But this can be bypassed by directly calling the NFT transfer function from ERC721 contract.
The SablierV2Lockup.sol
is inheriting the ERC721 contract which has the NFT related functions.
Let focus on the following function.
Since these functions are public, the NFT owner can use them to transfer the NFT to any address which they want.
This isTransferable
check which is set by the ERC20 sender can be bypassed. It is against the current implementation.
When the ERC20 should be withdrawn by the recipient who is decided by the sender by setting the isTransferable
flag.
The above function would be used to bypass them.
Manual review.
Overwrite the public NFT transfer functions from ERC721 contract and make sure that the isTransferable is set to true when transferring the NFT.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.