Platform: Code4rena
Start Date: 09/07/2021
Pot Size: $25,000 USDC
Total HM: 7
Participants: 10
Period: 3 days
Judge: ghoulsol
Total Solo HM: 2
Id: 19
League: ETH
Rank: 6/10
Findings: 2
Award: $744.70
🌟 Selected for report: 0
🚀 Solo Findings: 0
744.703 USDC - $744.70
0xsanson
User and router can collude to exploit the contract and steal funds (any erc20 tokens) in the following way.
They can set the callTo to an exploit contract that can call the receivingAssetId.transferFrom function. The logic in the fulfill
function approves the token to callTo, without "dis-approving" in the case of sending transaction directly (in the case of error in the try-catch block). After both user and router have fulfilled, they can call the exploiter contract that steals an amount
of funds from TransactionManager in the receiving chain.
https://github.com/code-423n4/2021-07-connext/blob/main/contracts/TransactionManager.sol#L388
(I can provide exploiter contract and js test file if necessary)
Manual Analysis
If the tokens are transferred directly, the tokens must be dis-approved.
#0 - LayneHaber
2021-07-12T19:37:56Z
#31