#54916 [SC-Low] minting cap can be surpassed via redemption fee
Submitted on Sep 18th 2025 at 18:17:57 UTC by @holydevoti0n for Mitigation Audit | Flare | FAssets
Report ID: #54916
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/flare-foundation/fassets/commit/2abc918d3dec2ea6c4f34ca972a6eeb89b4ecafc
Impacts:
Griefing (e.g. no profit motive for an attacker, but damage to the users or the protocol)
Description
Brief/Intro
The recent fix correctly adds cap checks (including pool fee) for selfMint and mintFromFreeUnderlying, but this does not prevent the minting cap from being surpassed due to the protocol not accounting for the fees that are minted as fAssets when confirming redemption.
Vulnerability Details
Problem is: redemptions burn first (freeing capacity) and fee mint happens later, an agent/user can refill the freed capacity via selfMint and then push total supply above the cap when the redemption fee is minted.
fAssets minted for the pool when confirming redemption:
https://github.com/flare-foundation/fassets/blob/d274320418134194cf74f69f95326ca40e2c1fed/contracts/assetManager/facets/RedemptionConfirmationsFacet.sol#L114
function confirmRedemptionPayment(
IPayment.Proof calldata _payment,
uint256 _redemptionRequestId
)
external
nonReentrant
{
...
// charge the redemption pool fee share by re-minting some fassets
@> _mintPoolFee(agent, request, _redemptionRequestId);The mintingCap fails to account for those fees: https://github.com/flare-foundation/fassets/blob/d274320418134194cf74f69f95326ca40e2c1fed/contracts/assetManager/library/Minting.sol#L82-L94
Example of how minting cap could be surpassed:
Impact Details
Total supply exceeds the configured minting cap by Σ(fees) minted on confirmations.
Bypass of critical system constraint (minting cap)
Proof of Concept
Add the following test on 02-MintAndRedeem.ts:
run: yarn test
output:
Was this helpful?