The ReseedL2Migration
is intended to be used to pause Beanstalk on L1 and then transfer liquidity to the BCM, but it lacks any functionality that ensures that the caller is trusted, which then means that anyone at any time can pause Beanstalk on L1.
Take a look at https://github.com/Cyfrin/2024-05-beanstalk-the-finale/blob/8c8710df547f7d7c5dd82c5381eb6b34532e4484/protocol/contracts/beanstalk/init/reseed/L1/ReseedL2Migration.sol#L27-L48
This function is used to first pause Beanstalk in order to prevent further sunrises and then it transfers out the whitlelisted silo assets to the BCM so as to end upe being migrated to the L2. Issue however is that this method lacks any access control whatsoever and would lead to anybody being able to call this function which would then Pause Beanstalk on L1.
Any one can pause Beanstalk on the L1 and prevent further sunrises, leading to a DOS of core functionalities that could lead to different issues, be it loss of funds cause users can't access functionalities they'd like to or what not.
Manual review
Introduce an access control mechanism to ReseedL2Migration#init()
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.