The strategy lacks implementation of _emergencyWithdraw
, defaulting to the no-op implementation from BaseStrategy. In case of emergencies where Transmuter is compromised, this forces each user to withdraw individually rather than allowing management to quickly withdraw all funds back to the strategy contract, potentially putting user funds at unnecessary risk.
In BaseStrategy, _emergencyWithdraw
is provided as an empty virtual function:
The strategy inherits this without override, meaning TX doing emergency withdrawal will succeed but do nothing. In case Transmuter is compromised:
Emergency admin can call shutdownStrategy()
But calling emergencyWithdraw()
has no effect
Each user must individually call withdraw()
to get their funds out
This process is time-consuming and leaves user funds exposed to the compromised Transmuter for longer period of time
Medium. While funds can still be withdrawn, the lack of emergency withdrawal mechanism means:
In case of Transmuter compromise, response time is significantly increased
Users who are not actively monitoring the situation might have their funds at risk longer
Gas costs and operational overhead are increased by requiring individual withdrawals
Manual Review
Implement _emergencyWithdraw
to allow management to quickly withdraw all funds from Transmuter in emergency situations:
This allows emergency admin to:
Call shutdownStrategy()
Call emergencyWithdraw to pull all funds back to strategy
Users can then withdraw directly from strategy without interacting with potentially compromised Transmuter
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.