clawback is implemented to retrieve unclaimed funds from a campaign when necessary, this can be useful in cases where something is not functioning as it should. as the docs state:
Keep in mind that this is merely one example of many situations where clawback can be invoked:
Inside function clawback, a check is performed for the grace period. This grace period is 7 days after the first claim has been made.
A recipient calls function claim to claim his funds which will later be unlocked for withdrawal.
Inside function claim, _checkClaim is called. Inside _checkClaim a check is performed to see if the claim is the first one made in the campaign.
When the recipient calls claim, a stream is created, and the funds are transferred to the core contracts.
Furthermore, the team confirms the following, as per the discord message:
This means that if clawback is called, it will no longer be able to retrieve these funds. It can only retrieve funds from a recipient who has not yet called claim, since ultimately calling claim results in funds being transferred.
Considering all of this, the following scenario will always occur whenever clawback is called after the _firstClaim has been set:
Bob is the first person in his campaign to call claim.
_firstClaimTime is set to the block.timestamp of Bob's call.
The admin notices an issue with the campaign, which, according to the docs, "can result in "potentially leading to unclaimable assets or unexpected behavior."
The admin calls clawback, but since Bob has already called claim, his funds have been transferred to the core contracts.
clawback will be unable to retrieve Bob's funds.
Bob loses his funds.
There is another scenario that does not require a _FirstClaim to be made:
Alice is a malicious recipient.
Alice notices clawback being called and frontruns it by calling claim.
The admin will no longer be able to retrieve her funds.
Alice can either safely withdraw her funds later, or, the funds become stuck and the stream sender loses those funds.
As we can see, whether the environment is honest or dishonest, this will result in a loss of funds, hence the HIGH label.
Manual Review
allow clawback to retrieve the funds inside the core contracts.
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.