RustFund

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

Direct Lamport Transfer Instead of CPI Transfer

Summary

The function uses direct lamport borrowing for balance transfers, bypassing Solana’s CPI (Cross-Program Invocation) mechanism, which is a secure standard for token transfers.

Vulnerability Details

  • Direct lamport borrowing does not enforce system program constraints.

  • May cause issues with rent exemption and account validity.

Impact

  • Possible inconsistencies in account balances.

  • Increased vulnerability to mismanagement or unintended behavior in account balances.

Tools Used

  • Manual Code Review

  • Solana Docs Reference

Recommendations

Use a CPI transfer instead of direct lamport borrowing:

invoke(
&system_instruction::transfer(
ctx.accounts.fund.to_account_info().key,
ctx.accounts.creator.to_account_info().key,
amount,
),
&[
ctx.accounts.fund.to_account_info(),
ctx.accounts.creator.to_account_info(),
ctx.accounts.system_program.to_account_info(),
],
)?;
Updates

Appeal created

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

Unsafe direct lamport manipulation

Support

FAQs

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