Flow uses the _verifyStreamSenderRecipient
helper function to beofre deposits to ensure the stream sender and
recipient matches, this can be seen in the SablierFlow
contract and the methods used in deposition, issue however is
that when calling the depositAndPause()
functionality this is never used see
https://github.com/Cyfrin/2024-10-sablier/blob/8a2eac7a916080f2022527408b004578b21c51d0/src/SablierFlow.sol#L274-L293,
and only the sender is checked for.
Users can break accounting by depositing and passing the wrong stream recipient.
Manual review
Apply a change that takes into consideration the fact that the recipient could be wrong.
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.