When the NFT is transferred using the function withdrawMaxAndTransfer
, there was no check to ensure that whether the NFT is transferable or not.
For each stream, there will be an NFT with some set of parameters associated with it.
For example, isTransferable
- Boolean indicating if the stream NFT is transferable.
The NFT minter will be setting this value to the NFT stream. Later the funds transferred by the sender can be withdrawn by the NFT owner.
For this, the functions in the SablierV2Lockup.sol would be used.
one of the function, withdrawMaxAndTransfer
is used to transfer the funds as well as to transfer the NFT.
But this function did not check for the isTransferable
flag.
Even if the fund sender flag the NFT stream not to transfer, the NFT owner can still transfer to other account.
This breaks the one of indended functionality which is designed by Sablier.
Manual review.
Make sure that the isTransferable
flag is enabled inside the withdrawMaxAndTransfer
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.