According to THORChain’s treasury report for Q1 2022 launched on April 1, the chain registered a development in income regardless of the twofold influence of persistent market sluggishness and extremely unstable geopolitical elements. Public information exhibits that THORChain recorded $2.17 billion in income in Q1 2022. THORChain, acclaimed because the “cross-chain version of UniSwap”, gained a foothold within the cross-chain buying and selling market counting on its distinctive benefits and earned in depth recognition amongst traders.
Behind all these glamours, THORChain can be deeply troubled by hacking. The chain suffered frequent safety breaches because it was launched on Ethereum, a indisputable fact that casts doubt on its safety. On April 11, THORChain tweeted about phishing assaults, warning customers to not work together with [DeTHOR] or different unknown tokens inside their wallets, which as soon as once more raised issues about its safety points.
While constructing a sound safety system for CoinEx merchandise, the CoinEx safety workforce additionally retains monitor of safety incidents within the blockchain house to assist customers higher perceive the safety of completely different initiatives from the angle of technical safety and mitigate the funding threat. Aiming to enhance the safety standards for the blockchain sector, the CoinEx safety workforce has analyzed the safety dangers of THORChain (RUNE). The workforce hopes that THORChain might be aware and mitigate the next dangers by optimizing the related sensible contract codes. In addition, this text can be a warning for customers, reminding them to be extra conscious of asset safety and keep away from asset losses.
How safe is THORChain (RUNE)?
Through evaluation of the contract code and logic of THORChain (RUNE), the CoinEx safety workforce has discovered the next dangers:
To start with, let’s try the contract code of THORChain (RUNE):
https://etherscan.io/deal with/0x3155ba85d5f96b2d030a4966af206230e46849cb#code
We can inform that RUNE is a reasonably customary ERC-20 token. It must be famous that other than the ERC-20 interface, THORChain (RUNE) provides a further interface:
According to switchTo (as proven within the image above), THORChain (RUNE) makes use of tx.origin, which is one of the causes behind its safety dangers. Here, we must always clarify the distinction between tx.origin and msg.sender:
The under image describes what occurs when an everyday deal with calls the sensible contract:
In such circumstances, msg.sender = account.deal with, and tx.origin = account.deal with, which implies that msg.sender is simply the identical as tx.origin.
The following is what occurs when an account calls contract A, and contract A calls contract B:
When contract A calls contract B (as proven above), we will inform that msg.sender equals tx.origin in contract A.
However, in contract B, msg.sender = contractA.deal with, whereas tx.origin = account.deal with. Therefore, tx.origin is sort of a world variable that traverses the whole name stack and returns the deal with of the account that initially despatched the transaction. This is the important thing subject: to this point, virtually all recognized assaults in opposition to THORChain (RUNE) relate to tx.origin.
Let’s now learn the way attackers steal customers’ RUNE tokens by means of tx.origin:
Attack No.1: Pilfer a Goat from a Herd
Addresses on Ethereum are divided into exterior addresses and contract addresses. Transferring ETH to those two sorts of addresses by means of exterior addresses is basically completely different. The Official Documentation of solidity states {that a} contract deal with should implement a obtain Ether perform earlier than making transfers.
In gentle of the options of tx.origin, hackers could construct an Attack contract:
When the Attack contract receives an ETH switch from a person, it’ll “pilfer a goat from a herd” — the contract will steal the person’s RUNE tokens within the course of.
Attack No.2: Internal Attack
An Internal Attack is a particular kind of assault. When making an attempt to steal a person’s RUNE by means of an Internal Attack, the hacker must have a medium token. Moreover, the token should additionally name third-party contracts. According to the switch information of RUNE on Ethereum, some attackers hacked RUNE by means of AMP Token transfers.
AMP Token makes use of the ERC-1820 customary to handle Hook registration and study whether or not Hook is registered upon every switch. If Hook has been registered, then the Hook will likely be known as.
The contract code of AMP Token exhibits that the ultimate implementation of the switch is: _transferByPartition. Meanwhile, there are two calls involving switchHook: _callPreTransferHooks (earlier than the switch) and _callPostTransferHooks (after the switch). In specific, _callPreTransferHooks is for the from deal with, whereas _callPostTransferHooks is for the to deal with (i.e. the receiving deal with).
For common customers, stealing tokens from themselves is pointless. Therefore, attackers could exploit _callPostTransferHooks. Let’s now try the codes of _callPostTransferHooks.
IAmpTokensRecipient(recipientImplementation).tokensReceived()
We can inform that the one callback that attackers might exploit is IAmpTokensRecipient(recipientImplementation).tokensReceived()
Next, we’ll illustrate how this name can be utilized to switch a person’s RUNE whereas making an AMP Token switch.
Step 1: A name contract is required (as proven under):
Step 2: Deploy the contract to acquire the Attack Address.
Step 3: Call the ERC-1820 contract interface (setInterfaceImplementer) to register the interface.
ERC-1820 Address: 0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24
Contract interface: setInterfaceImplementer(deal with toAddr, bytes32 interfaceHash, deal with implementer)
In specific, toAddr is the receiving deal with of the AMP switch,
interfaceHash为AmpTokensRecipient的hash:
0xfa352d6368bbc643bcf9d528ffaba5dd3e826137bc42f935045c6c227bd4c72a
interfaceHash is the hash of AmpTokensRecipient:
0xfa352d6368bbc643bcf9d528ffaba5dd3e826137bc42f935045c6c227bd4c72a
Implementer is the Attack Address obtained in Step 2.
Step 4: Lure a person to switch AMP to the toAddr to set off a callback, and steal his RUNE on the similar time.
Attack No.3: Phishing Attack
As its identify suggests, in a phishing assault, the attacker guarantees to offer away unimaginable advantages to lure customers into performing sure contract operations. Here, we’ll introduce a typical phishing assault.
Step 1: The attacker points an ERC-20 token, and will write it into any contract interface that entails signatures.
Step 2: Create a buying and selling pair on Uniswap or every other swap;
Step 3: Offer airdrops to all customers/addresses who maintain RUNE tokens;
The preliminary work of the phishing assault is mainly accomplished by means of the above these steps. Next, the attacker solely has to attend for customers to commerce on a swap, and customers threat dropping their RUNE as soon as they carry out operations akin to approve, switch, and many others.
In addition, in an effort to additional confirm the safety threat of THORChain contract code, CoinEx has mentioned with the safety workforce from SlowMist and PeckShield, two well-known safety businesses within the business. Confirmed by SlowMist and PeckShield, the safety threat talked about above does exist.
So far, we’ve lined a number of sorts of assaults, in addition to the safety dangers that customers are uncovered to.
How ought to the challenge workforce optimize the contract code to make itself safer and shield customers’ property?
The solely reply is to be cautious about utilizing tx.origin.
How can common customers mitigate dangers and shield their property within the face of assaults that appear unavoidable? The CoinEx safety workforce provides the next recommendations:
- For Attack No.1: When making a switch, hold monitor of the estimated Gas consumption. For an everyday ETH switch, a Gas payment of 21,000 is greater than sufficient. Be cautious if the Gas consumption far exceeds that determine.
- For Attack No.2: Isolate your tokens by adopting completely different wallets. You can retailer completely different tokens in numerous addresses. Extra warning is required in terms of the recent pockets deal with provided by exchanges.
- For Attack No.3: Greed is the supply of all evil. Do not blindly take part in any airdrop occasion.
Security has all the time been a high concern within the blockchain sector. All gamers, together with challenge groups and exchanges, ought to prioritize safety throughout challenge operation, hold customers’ property protected and safe, and collectively promote the sound development of the blockchain business.