The set_deadline() function lacks proper access control, allowing any user to modify the deadline of a fundraising campaign. This can lead to unauthorized changes in the timeline of the fund, impacting contributors and the fund creator.
The function does not verify whether the caller is the fund creator before setting the deadline. Any malicious actor can override the deadline, leading to potential abuse such as setting an extremely short or long duration, disrupting the intended fundraising process.
Leading to loss of trust from contributors. Attackers could set an extremely short deadline making refunds impossible
Manual Review
Ensure only the creator can set the deadline
There is no need for additional checks of the caller's key inside the `set_deadline` function because Anchor verifies the `has_one = creator` constraint before executing the function. This ensures that the creator field inside the fund account must match the creator (signer) passed to the function: ``` #[account(mut, has_one = creator)] pub fund: Account<'info, Fund> ``` If they don’t match, the transaction fails. Also, signer verification is included: ``` #[account(mut)] pub creator: Signer<'info>, ``` The creator account must be a signer, meaning the transaction must be signed using the creator's private key.
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.