Description:
When liquidated assets are sent to the LiquidationPool to be sold, the EUROs used in buying these assets are burned at the end of the distributeAssets() function call. However, the function call fails due to LiquidationPool being unable to burn EUROs because it is missing the BURNER_ROLE necessary to successfully complete this action.
Impact:
As a result, no liquidated assets are sold, leaving EUROs under-collateralized.
Proof of Code:
The provided test suite demonstrates the vulnerability's validity and severity.
Due to the file size required to run this PoC, the suite is hosted on Github.
To run the PoC, clone the repository.
Minor changes, such as modifying function visibility, were made to enable successful test runs.
All changes and additional files made to the original code are documented in the README and the respective files where the changes are made.
Requirements:
Install Foundry.
Clone the project codebase into your local workspace.
Run the following commands to install dependencies:
Run the following command to execute the PoC:
Recommended Mitigation Steps:
Grant the LiquidationPool contract the BURNER_ROLE in the initialize() or a dedicated function in SmartVaultManagerV5
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.