Sablier

Sablier
DeFiFoundry
53,440 USDC
View results
Submission Details
Severity: medium
Invalid

Blacklisted users may be at risk of incurring financial losses in specific circumstances.

Summary

The protocol claims to support all types of ERC20 tokens. However, in certain cases, users may be blacklisted by specific tokens, which can result in the loss of funds.

Vulnerability Details

Blacklisted users are unable to send or receive tokens. Consequently, if a user is blacklisted, two primary issues may arise:

  1. Withdrawal Issues: If a blacklisted user attempts to withdraw funds from a stream using any of the withdrawal functions, which invoke the internal SablierV2Lockup::_withdraw function, the operation will fail due to the ERC-20 transfer call:

// Interaction: perform the ERC-20 transfer.
asset.safeTransfer({ to: to, value: amount });

This will revert the transaction, preventing the user from receiving their funds.
However, if the stream is transferable, users can transfer the NFT and withdraw their funds from a different wallet.

  1. Cancellation Issues: If the sender is blacklisted, they will be unable to call SablierV2Lockup::cancel under any circumstances, as the SablierV2Lockup::_cancel function attempts to send tokens directly to the sender:

// Interaction: refund the sender.
asset.safeTransfer({ to: sender, value: senderAmount });

Impact

A blacklisted user may lose access to their funds, leaving them locked in the contract.

Tools Used

Manual review

Recommendations

  1. Implement a mechanism to specify an alternate address for receiving funds, with appropriate access controls for the recipient and sender.

  2. Add a function allowing the sender to change the stream's sender address, restricted to the sender only.

Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement
amaron Submitter
about 1 year ago
0xnevi Judge
about 1 year ago
inallhonesty Lead Judge
about 1 year ago
inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.