The Adminable::transferAdmin
function does not implement a two-step ownership change. If the current owner mistakenly transfers ownership to an incorrect address. Consequently, they lose the ability to call SablierV2MerkleLockup::clawback
to rescue funds if misconfigured for mention a potential case.
For example, when an airstream campaign is launched, the current owner may call Adminable::transferAdmin
to change ownership:
The effect is immediate and does not check if the address is zero or inactive. If the owner mishandles this change, they lose the ability to call the SablierV2MerkleLockup::clawback
function, which allows them to rescue funds until the grace period ends.
Rescuing the funds before the expiration or during the grace period allows the owner to correct any misconfigurations and redeploy the campaign.
The airstream creators may lose the ability to clawback funds . Additionally, SablierV2Lockup::setNFTDescriptor
function can be affected as well.
Manual code review
Implement a two-step process where the current admin nominates an account, and the nominated account needs to call an Ownable2Step-like OpenZeppelin transferOwnership
and acceptOwnership
functions for the transfer of admin to fully succeed. This ensures the nominated account is a valid and active address.
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.