Ethereum, a system for decentralized applications that uses blockchain, has hit a rough patch. The company recently dealt with a distributed denial-of-service (DDoS) attack.
Ethereum DDoS Attack Origins
The DAO exchange suffered a recursive code attack earlier this year. This joint investment fund, which was built on top of the Ethereum network, was siphoned dry by a cybercriminal who figured out a way to sucker Ethereum’s internal code.
To salvage the stolen money, the Ethereum team had to do a hard fork and disseminate a new version of the network’s code. The fork wasn’t fatal to Ethereum, but it certainly was not pleasant.
Now someone is trying to slow the Ethereum network down by making it do more work than it should have to do to process a transaction.
Out of Memory
The first sign of trouble was when geth nodes started to crash in the network due to lack of memory on a specific block, according to Ethereum’s blog. The crash only affected clients that were based on the Go language, and Ethereum created a hotfix the next day to address it.
The postmortem showed that the underlying problem involved Ethereum’s EXTCODESIZE attribute, which is included in each transaction by design. An attacker could use this attribute to ask for additional checks against the Ethereum network database — up to 50,000 at a time. This results in much slower transaction confirmations.
Softpedia reported that these transactions are anonymous, which means that no details can be made available about the attacker’s identity.
A Model Response
According to the company, the net result of the Ethereum DDoS attack was a reduction in the rate of block creation by a factor of two or three.
“There was no consensus failure (i.e., network fork) and neither the network nor any client at any point fully halted,” the company wrote on its website. “The attack has since, as of the time of this writing, mostly halted, and the network has, for the time being, recovered.”
Ethereum responded aptly to what could have been a crippling situation. It fixed the problem, then announced to stakeholders exactly what needed be done, why it should be done and how to do it. Such a transparent and successful fix can serve as a model for others.