Attacker will bridge fake tokens to Orderly for USDC
Summary
Missing check in the deposit accounts struct will enable bridging of fake tokens to Orderly that will be redeemable for USDC.
Root Cause
In Deposit accounts struct the deposit_token is never checked to be the same token as depoit_params.token_hash (see here).
Internal pre-conditions
None
External pre-conditions
None
Attack Path
The attacker calls deposit with the correct deposit parameters but provides a Mint account different from the USDC Mint while providing the correct user token addresses for the user and vault associated with this mint.
The bridge sends the bridge message, which contains the USDC (or any token the platform aims to allow in the future)
Impact
Fake USDC will be accounted to the attacker on the Orderly chain, meaning they will be able to withdraw these tokens on Solana. This can be as much as all tokens inside the USDC vault account.
PoC
No response
Mitigation
Consider expanding the allowed token account verification to also verify whether the mint in the supplied allowed token matches the supplied deposit token.
Uneven Opaque Cottonmouth
High
Attacker will bridge fake tokens to Orderly for USDC
Summary
Missing check in the
deposit
accounts struct will enable bridging of fake tokens to Orderly that will be redeemable for USDC.Root Cause
In
Deposit
accounts struct thedeposit_token
is never checked to be the same token asdepoit_params.token_hash
(see here).Internal pre-conditions
None
External pre-conditions
None
Attack Path
deposit
with the correct deposit parameters but provides a Mint account different from the USDC Mint while providing the correct user token addresses for the user and vault associated with this mint.Impact
Fake USDC will be accounted to the attacker on the Orderly chain, meaning they will be able to withdraw these tokens on Solana. This can be as much as all tokens inside the USDC vault account.
PoC
No response
Mitigation
Consider expanding the allowed token account verification to also verify whether the mint in the supplied allowed token matches the supplied deposit token.