The withdraw function does not have a pause modifier that would be critical in emergency situations
The developers of the Sablier protocol have taken all measures to ensure that the codebase is bullet-proof. This is commendable and very evident. However, it seems that they have not taken into consideration external factors that also affect the security of Dapps. Of particular interest, is Solidity compiler bugs. While the code might be impenetrateable, a nasty bug in the Solidity compiler can suddenly expose all user funds currently held in the protocol. In July 2023, a vulnerability was discovered in the Vyper compiler that allowed attackers to steal an estimated $70 Million from different projects including Curve and Alchemix. The root cause was a failing lock in the re-entrancy feature. If such a bug is found in the Solidity compiler, then all user funds will be at risk, leaving Sablier beneficiaries at the mercy of blackhats.
The Sablier developers take pride in providing a censorship-resistant application. Adding such a functionality will not make it any less censorship-resistant since it is a security measure. The withdraw function in question is presented here:
All user funds currently held in the protocol can be drained
Manual review
Add a pause modifier to the withdraw function to be used by admin at emergency times.
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.