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.