NORMAL BEHAVIOUR:
In an ERC4626-compliant vault, when a user deposits assets, the contract should mint shares based on the actual amount of tokens received by the vault, ensuring that shares always reflect the vault’s asset backing.
PROBLEM:
The contract calculates minted shares before transferring tokens and assumes assets == received_tokens.
This is incorrect and breaks ERC4626 share math.
If the underlying token charges a transfer fee (burn, reflection, treasury-tax), the vault receives less token value than expected, but still mints full shares, inflating share supply and allowing an attacker to drain the vault.
Likelihood:
High – happens on every deposit with taxed-tokens, fee-on-transfer tokens, rebasing tokens, or even sync delays in balanceOf.
Impact:
High – allows attacker to mint more shares than deposited assets → drain vault.
Affects all depositors, all payout logic, and final winner withdrawal.
Since there is some tax fee that gets burned while adding the assets to the token and minting shares for it but it still allots the same number of shares for the user which makes it calculate wrong and allot wrong payout to the winner making the logic flawed and unfair for other users
Transfer the assets first to the token and then convert and map shares for the user for correct implementation of logic and prevent funds drain and unfair result and payout.
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.