For the complete documentation index, see llms.txt. This page is also available as Markdown.

89659 sc medium exact period boundary deposits and withdrawals corrupt the opening assets checkpoint

Submitted on Aug 20th 2026 at 12:16:19 UTC by @aksoy for Audit Comp | Firelight

  • Report ID: #89659

  • Report Type: Smart Contract

  • Report severity: Medium

  • Target: https://github.com/immunefi-team/audit-comp-firelight/blob/v1_audit_ready/contracts/core/FirelightVault.sol

  • Impacts:

    • Griefing (e.g. no profit motive for an attacker, but damage to the users or the protocol)

Description

Brief/Intro

FirelightVault treats totalAssetsAt(capturePeriodStart) as an immutable snapshot of assets committed at the beginning of a covered period. However, deposits and withdrawals executed with a block timestamp exactly equal to the period start write a checkpoint at that same timestamp. Because historical lookup is inclusive, these operations retroactively change the opening snapshot. A boundary withdrawal can reduce a fully funded incident payout and preserve the withdrawer’s assets, while a boundary deposit can increase the payout cap and expose newly deposited capital to losses that should have been limited by the original opening balance.

Vulnerability Details

Incident payouts are capped using:

uint256 assetsAtCapturePeriod = totalAssetsAt(capturePeriodStart);

Checkpoint lookup includes values written exactly at capturePeriodStart. Deposits and withdrawals record updated assets using the current block timestamp: `uint48 ts = Time.timestamp(); _traceTotalAssets.push(ts, _totalAssets);``

Therefore, an withdraw or deposit executed exactly at periodStart changes the supposed opening snapshot.

Impact Details

A user can arrange for a withdrawal transaction to execute at the exact period boundary can reduce the incident payout cap while keeping the withdrawn assets inside an economically valuable pending claim.

References

https://github.com/immunefi-team/audit-comp-firelight/blob/42f9ea5e43d88b35197b901acc2a8c24b314fa62/contracts/core/FirelightVault.sol#L892

Proof of Concept

Proof of Concept

Was this helpful?