In SablierV2Lockup, recipients can transfer their ownership of the stream to another address, which could
be blacklisted or the zero address, leading to the loss of funds for the stream creator.
If a stream creator and a recipient have a dispute over the timely ending of a stream or some other dispute, leading to the stream creator cancelling the stream, the recipient can transfer the stream to another address.
This can happen if the stream creator and recipient don't agree with the cancellation of the stream, and the recipient demonstrates this by transferring the stream to another address, i.e blacklisted or address(0).
This is possible because ownership of the stream is determined:
address recipient = _ownerOf(streamId);
The sender calls cancel function to cancel the stream.
The function begins execution and passes the initial checks.
Before the function completes, the recipient transfers the NFT to another address.This can potentially cause issues if the new recipient is a blacklisted address or if the transfer to the zero address happens.
The safeTransfer
will fail if the recipient is blacklisted.
The cancel function then attempts to complete the cancellation, but the state may now be inconsistent or invalid.
The recipient can change between the initiation of the cancel function and the point at which safeTransfer is called.
If the new recipient is a blacklisted address for the ERC-20 token, the safeTransfer
will fail.
Manual Review
If you first wait, where the sender in the first part checks the state and stream status before withdrawing their funds and the other individual withdraws their funds afterwards. If done this way, the sender wont lose out.
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.