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.