Stream creation function allows arbitrary callers to permanently set NFT transferability flag on behalf of legitimate sender. This can break intended NFT functionality for the sender and affect protocol integrations expecting specific transferability status.
In SablierFlow.sol
, the create
function allows any address to create streams:
create
and createAndDeposit
functions lacks of access control, which allows anyone to create flow streams on the behalf of legitimate sender. Issues arises due to immutable status of nft transferability flag set by the caller.
Breaks sender's intended NFT functionality
If sender wanted transferable NFT: Attacker can make it non-transferable by front running his transaction.
If sender wanted non-transferable NFT: Attacker can make it transferable by front running his transaction.
Affects protocol integrations expecting specific transferability
Could impact:
NFT marketplace integrations
Using stream NFTs as collateral
Token-gated access systems
Protocol's composability
Although funds are directly not at risk, but it breaks the core funcationality of NFT integration / usage. NFTs that are meant to be used a collateral, can't be used to opposite transfer flag set by malicious actor.
Similary if NFT is meant to be non-trasferable by original sender, due to Malicious actor front running it's transferrable, that breaks the token-gated system. As same token id can be used by multiple users.
Manual Review
Flow stream, must be created by the original sender, in order to avoid this issue.
similarly update createAndDeposit
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.