EXPIRATION can be set in the past, preventing anyone from claiming airstreams.
EXPIRATION can be set in the past in SablierV2MerkleLockup.sol as there is no check to prevent this. When recipient tries to claim the airstream using claim function in the SablierV2MerkleLL contract, the stream will not be created because the stream campaign has already expired due to the _checkClaim and hasExpired functions :
Due to the aforementioned issue, both the SablierV2MerkleLL and SablierV2MerkleLT contracts are affected. A malicious creator can set EXPIRATION to a past date when deploying either of these contracts, preventing users from claiming any airdrops.
Since there is no condition in the abstract base contract SablierV2MerkleLockup that checks for this, both the SablierV2MerkleLL and SablierV2MerkleLT contracts can be deployed on the blockchain without any restrictions.
This allows the malicious creator to mislead recipients and users into believing they can receive airdrop tokens from the SablierMerkleLockup contracts when, in reality, they cannot.
Manual Review
Add these lines in SablierV2MerkleLockup.sol file :
https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity
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.