Cryptocurrency wallet software provider Parity Technology knew about a vulnerability that caused around £212 million worth of Ethereum cryptocurrency to become frozen as early as August.
As reported by SC Media UK, a user known as devops199 created a corrupted wallet which had devastating consequences for a large number of users.
According to a “post-mortem” blog post, the firm said that in August, a Github contributor called “3esmit” recommended a code change that initWallet should be called when being deployed which at the time was considered a convenience enhancement.
“Thus, we committed this proposed enhancement to the library contract that would automatically initialise it by calling initWallet on construction. Interpreting the recommendation as enhancement, the changed code was to be deployed in a regular update at a future point in time,” the company said.
The firm said there were two ways the exploit could have been avoided. If the contract code had not included the functionality to suicide or kill, even if someone had taken ownership, they would not have been able to do anything,” it said.
“The kill functionality was a remainder of the original audited contract. The other way would have been for the wallet initialisation to have been done as proposed by 3esmit, either automatically through the code change and re-deployment or manually on the contract deployed in July,” the company said.
It added that it regularly employs external auditors for formal audits of smart contracts that it writes.
"However, rather than just having more audits, we strongly believe that more extensive and formal procedures and tooling around the deployment, monitoring and testing of contracts will be needed to achieve security. We believe that the entire ecosytem as a whole is in urgent need of such procedures and tooling to prevent similar issues from happening again, in particular if and when the number and complexity of live contracts grows."
Parity Tech said its deeply regrets the situation and was now working on several Ethereum improvement proposals (EIPs), both contributing to previously existing ones and suggesting new ones that have the potential to unblock funds. “These improvement proposals will also address general cases of blocked funds”.
It warned that there is no timeline for when such an improvement proposal could be implemented.
“We will follow the will of the community and go through the regular EIP process like any other protocol improvement. Parity Technologies will handle much of the development work around these proposals and work constructively with the Ethereum Foundation team and the community towards further protocol layer development,” it said.
Stark Riedesel, security consultant at Synopsys, told SC Media UK that where possible, large sums of currency should always be held in simple wallets, not contract wallets.
“This is because simple wallets do not have code attached to them and therefore represent a far smaller attack surface. Contract wallets which may hold large sums of money should be carefully vetted for security issues. The current lack of best-practices and security tooling makes vetting a difficult and manual process. One day we may have a community of secure libraries to build from, but today the community created libraries are not sufficiently vetted,” he said.