A critical vulnerability exists in the FeeCollector contract where using the emergency withdrawal feature breaks the contract's core functionality.
When emergency withdrawal is used, it removes all tokens without updating the internal accounting (collectedFees). This creates a mismatch between what the contract thinks it has and its actual balance.
To reproduce:
To run it place the following code in FeeCollector.test.js, in fee collection and distribution section:
Contract becomes permanently unable to distribute fees
Core functionality is broken after emergency actions
Manual review, unit tests
On emergency withdraw, reset collectedFees variable.
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.