(technical community)

Analysis

From Leena

* The bug is in the ETH Bifrost, and not the router
* The attacker wrapped the router with their own contract, which they called with a msg.value of 200, but their own contract called into the router with a call value of 0 and a deposit amount of 0
* The bifrost ultimately read the msg.value, with is 200, and not the final deposit amount, which was 0

Bifrost reads the deposit amount of 0:
<https://gitlab.com/thorchain/thornode/-/blob/develop/bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go#L794>

Bifrost over-rides back to tx.value() 
<https://gitlab.com/thorchain/thornode/-/blob/develop/bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go#L856>

The reason why the over-ride is to facilitate another router function of vaultTransferEvent where msg.value needs to be parsed. 

The fix is to make the over-ride only happen if it specifically is a vaultTransferEvent

Next steps will be established soon, including recovery and return to solvency. If a community member wishes to help, it would be to get an accurate assessment of the attacks, their amounts, and the loss to the network

Observations

POIs

Attacker Wallet: https://etherscan.io/address/0x3a196410a0f5facd08fd7880a4b8551cd085c031

Contract Address: https://etherscan.io/address/0x4a33862042d004d3fc45e284e1aafa05b48e3c9c

Tornado Address: https://etherscan.io/address/0x4b713980d60b4994e0aa298a66805ec0d35ebc5a

New Hacker Wallet 07-19: https://etherscan.io/address/0xace2d948fc7ea3bc49eee5526786d66d19bc470e

Wallet Tx Count: 47

Wallet ERC TX Count: 261

Contract Tx Count: 48