Mismatch in the BRIDGE address between the BeanL1RecieverFacet and BeanL2MigrationFacet contracts prevents the migration of Beans to L2. This discrepancy causes the require statement in BeanL1RecieverFacet to always revert, blocking the migration functionality.
This vulnerability occurs because in the recieveL1Beans function of the BeanL1RecieverFacet contract. The following require statement always will revert due to mismatch in the BRIDGE address between the BeanL1RecieverFacet and BeanL2MigrationFacet contracts:
BeanL1RecieverFacet.sol#L34-L37
The BRIDGE address in BeanL1RecieverFacet is set to 0x4200000000000000000000000000000000000007 here. However, in the BeanL2MigrationFacet contract, the BRIDGE address is set to 0x866E82a600A1414e583f7F13623F1aC5d58b0Afa here. Hence, this address mismatch causes the require statement to always revert because the msg.sender will never match the expected BRIDGE address in BeanL1RecieverFacet.
The BeanL2MigrationFacet uses the IBeanL1RecieverFacet.recieveL1Beans function to migrate Beans from Beanstalk on L1 to L2. Due to the mismatch between the BRIDGE address constants in the two contracts, the migration process cannot be completed. Since Beans are a fundamental asset within the Beanstalk ecosystem, used for various critical functions, the inability to migrate them to L2 severely impacts the functionality and growth of the project. Therefore, this issue is marked as a high severity issue.
The impact of this vulnerability is significant as it prevents the migration of Beans from L1 to L2.
Manual code review
Ensure that the BRIDGE address constant is the same in both BeanL1RecieverFacet and BeanL2MigrationFacet contracts to allow successful communication between them.
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.