The SablierFlow protocol allows the creation of token streams with any ERC20 token without validation beyond checking decimals ≤ 18. This enables malicious actors to create streams using fake tokens that mimic legitimate ones, potentially leading to social engineering attacks and financial losses.
The vulnerability exists in the stream creation logic in _create
function where token validation is minimal:
The contract trusts any token that implements the IERC20 interface and has valid decimals, making it possible to create streams with malicious or worthless tokens.
The unrestricted token creation in Sablier streams presents multiple severe risks:
Unlimited NFT Minting:
Attackers can create unlimited streams using worthless tokens to mint NFTs for themselves by setting the recipient to an address they own.
No limit on streams per address or token validation enables:
NFT farming for potential airdrops
Manipulation of NFT marketplace statistics
Protocol storage bloat
Financial Risks:
Users might trade valuable assets for stream NFTs backed by worthless tokens
Integration protocols could accept these streams as collateral
DEXs or lending protocols might list these fake tokens
Users could make financial decisions based on expected future income from fake streams
Protocol Manipulation:
Ability to spam the protocol with fake token streams
Inflation of TVL metrics with worthless tokens
Degradation of protocol usability through spam
Integration/Technical Risks:
Third-party protocols integrating with Sablier might not properly validate tokens
Price oracles could be affected if they track stream values
Indexers and analytics platforms could show incorrect data
NFT-based governance systems could be manipulated
Social Engineering:
Creation of streams with tokens mimicking legitimate ones (e.g., fake "USDC")
False sense of future income leading to poor financial decisions
Potential for phishing through seemingly valuable streams
Actors:
Attacker: Creates fake token and stream
Victim: Receives stream and believes it's legitimate USDC
Protocol: Sablier protocol that processes the stream
Test Result:
Manual Review
Foundry
Remix IDE
Token Allowlist
Enhanced Token Validation
Check contract code size
Integrate with token registry services
UI Warnings
Clear warnings about unverified tokens
Visual indicators for non-allowlisted tokens
Token verification status display
Documentation
Clear documentation about token risks
Guidelines for users to verify token authenticity
Best practices for stream recipients
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.