A critical vulnerability exists in the SmartVaultV3 contract, where the vault owner is unable to withdraw collateral due to the removal of an accepted token in the TokenManager contract.
This issue leads to the collateral becoming immobile and non-liquidatable within the vault.
The vulnerability resides in the removeCollateral and removeCollateralNative functions of the SmartVaultV3 contract. These functions, designed for collateral removal, first retrieve the token by its symbol:
However, a critical issue arises with the TokenManagerMock contract, where the owner is granted the capability to remove an accepted token.
This can be observed in the contract code, available at this GitHub repository.
The removal of an accepted token by the owner triggers a problematic scenario in the SmartVaultV3 contract.
Post removal, the owner becomes incapable of removing any collateral from the vault. Consequently, these assets, now stuck within the vault, cannot be subjected to liquidation processes.
Locked collateral represents a direct financial risk to vault owners.
Manual Review
Implement a safeguard mechanism to allow collateral withdrawal regardless of its status in the TokenManager.
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.