The contract accumulates protocol fees in a centralized mapping and allows only the contract owner to withdraw them. However, the fee-handling logic introduces a Denial of Service (DoS) risk:
If a malicious token is allowed and accumulates fees that can not be withdrawn (for example, broken transfer()
or reverts), all withdrawals can be blocked, even for valid tokens.
There is no batching, retries, or withdraw flexibility depending on each token. All tokens go through the same withdrawal flow.
The fees are accumulated in a shared structure, with no detailed control or fallback handling.
Likelihood:
High if a malicious or broken ERC20 token is added to the allowlist (for example, non-standard tokens).
Very likely in DeFi environments where interacting with many external tokens is common.
Impact:
Prevents successful withdrawal of all protocol fees, even those in compliant tokens.
Can be used to block revenue access for the protocol owner.
Leads to locked assets and may require manual intervention or contract upgrade.
Use safe per-token transfers with try/catch
or a detailed handling:
Otherwise you can allow manual per-token withdrawals:
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.