The L2ContractMigrationFacet
contract facilitates migration of assets from L1 to L2 but lacks mechanisms to burn or reduce assets on L1 post-migration. This oversight could lead to unintended asset duplication and potential inflation of asset prices on L2 due to multiple transfers. Additionally, due to the fact that the contract does not enforce asset reduction after migration, which could allow assets to remain active and transferable on L1.
The L2ContractMigrationFacet
contract facilitates asset migration from L1 to L2. The redeemDepositsAndInternalBalances
function verifies deposits and internal balances using Merkle proofs (verifyDepositsAndInternalBalances), then proceeds to transfer these assets to the recipient on L2 (addMigratedDepositsToAccount). However, if we examine how the addMigratedDepositsToAccount
function is implemented, we will notice that it only increases deposit balances of the receiver on L2, and there is no mechanism within it (or within the contract as a whole) to invalidate, reduce, or at least let the contract from which the migration is happening on L1 to know that it should burn these assets on L1 after they are migrated to L2. This potentially allows assets to remain active and transferable on both chains.
L2ContractMigrationFacet#L152-L200
An attacker could exploit the absence of asset burning on L1 by repeatedly calling redeemDepositsAndInternalBalances
with a valid signature before the deadline. This could result in multiple migrations of the same assets to L2, causing asset duplication and potentially inflating asset prices on L2 due to increased availability.
Asset Duplication: Assets may remain active and transferable on L1 after migration to L2, leading to unintended duplication across chains. This would allow malicious users to profit unfairly by transferring the assets multiple times between L1 and L2, potentially increasing their wealth. Additionally, they could sell their L1 assets for further profit.
Price Inflation: The increased availability of duplicated assets on L2 could inflate their prices and disrupt market dynamics, resulting in financial losses for non-malicious users holding these assets.
Manual code review
Implement a mechanism within L2ContractMigrationFacet
to burn or reduce assets on L1 after successful migration to L2.
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.