RustFund

First Flight #36
Beginner FriendlyRust
100 EXP
View results
Submission Details
Severity: medium
Valid

Deadline Setting Vulnerability Report

Summary

A critical vulnerability exists in the set_deadline function that allows creators to repeatedly modify the deadline due to an incomplete implementation of the dealine_set flag.

Vulnerability Details

pub fn set_deadline(ctx: Context<FundSetDeadline>, deadline: u64) -> Result<()> {
let fund = &mut ctx.accounts.fund;
if fund.dealine_set {
return Err(ErrorCode::DeadlineAlreadySet.into());
}
fund.deadline = deadline;
// BUG: fund.dealine_set is NOT updated to true
Ok(())
}

Technical Analysis

  • The function checks dealine_set to prevent multiple deadline settings

  • However, it fails to set dealine_set to true after setting the deadline

  • This creates a logical bypass allowing:

    1. Multiple deadline modifications

    2. Circumvention of the intended single-deadline restriction

Impact

  1. Deadline Manipulation:

    • Creator can change campaign deadline arbitrarily

    • Potential to:

      • Extend campaign duration indefinitely

      • Manipulate fundraising timelines

      • Prevent contributor refunds

  2. Contributor Trust Erosion:

    • Unpredictable campaign duration

    • Lack of time-based funding guarantee

Proof of Concept

// Current vulnerable implementation
pub fn set_deadline(ctx: Context<FundSetDeadline>, deadline: u64) -> Result<()> {
let fund = &mut ctx.accounts.fund;
if fund.dealine_set {
return Err(ErrorCode::DeadlineAlreadySet.into());
}
fund.deadline = deadline;
// NO UPDATE to dealine_set
Ok(())
}
// Recommended Fix
pub fn set_deadline(ctx: Context<FundSetDeadline>, deadline: u64) -> Result<()> {
let fund = &mut ctx.accounts.fund;
if fund.dealine_set {
return Err(ErrorCode::DeadlineAlreadySet.into());
}
fund.deadline = deadline;
fund.dealine_set = true; // Explicitly set to true
Ok(())
}

Recommendations

  • Update fund.dealine_set = true; in the set_deadline function

Tools & Verification

  • Manual Code Review

  • Static Code Analysis

  • Solana Program Testing Framework

Updates

Appeal created

bube Lead Judge 6 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Deadline set flag is not updated in `set_deadline` function

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.