北京时间8月31日,CertiK天网系统(Skynet)检测到Github用户“1400BitcoinStolen”1400比特币被盗。被送到几个不同的地址。受害人在electrum的Githubissue中讲述了丢失1400个比特币的事情,并晒出了自己的比特币钱包地址。在区块链浏览器中(参考链接3),可以看到8月30日共有1404个比特币BTC(价值1670万美元)从他的钱包中被取出,存入了黑客的钱包。事件还原分析用户使用的是Electrum比特币钱包,上次使用时间是2017年。Electrum自此发布了安全更新,但用户一直没有安装。当用户使用Electrum进行交易时,钱包将向服务器广播交易。如果交易出现问题,服务器会返回错误信息,并以弹窗的形式显示给用户。3.3.2版本之前的Electrum钱包不会校验服务器返回的错误信息,甚至会将返回信息渲染成html(参考链接4)。值得一提的是,任何人都可以架设Electrum节点服务器。如果用户连接到攻击者的服务器并发起交易,服务器可以返回任何设计的错误消息。例如返回错误信息要求用户更新Electrum钱包,如下图所示。不过图中的链接指向的是攻击者自己编写的恶意软件。一旦用户下载并安装该软件并将自己的钱包导入其中,钱包中的所有比特币将被攻击者转移。这其实本质上是钓鱼攻击,但是由于攻击者发送的钓鱼信息是通过官方Electrum钱包展示出来的,所以很多人会信以为真。在这起事件中,受害者的钱包连接到攻击者控制的服务器,导致其收到来自服务器的钓鱼信息,攻击者转移了他所有的比特币。Electrum钱包的问题早在2018年底就已被广泛讨论(参考链接4)。Electrum官方在2019年的钱包3.3.4版本中修复了这个问题,后续版本的Electrum钱包将不再直接显示服务器返回给用户的内容,也不会渲染html。另外,由于旧版钱包依然存在该问题,所有正常服务器都会对3.3之前版本的钱包进行拒绝服务(DoS)攻击,强制用户更新(参考链接5)。建议用户在使用钱包进行交易时确保钱包为最新版本,旧版本的钱包可能存在漏洞,可被黑客利用。用户在下载钱包更新时注意验证下载地址是否与官方一致,下载完成后验证钱包签名。对于钱包开发团队来说,需要找一个专业的团队来做测试工作,以免项目出现漏洞,给用户造成损失。参考链接:https://github.com/spesmilo/electrum/issues/5072https://zhuanlan.zhihu.com/p/53920688https://www.blockchain.com/btc/tx/2db616f5b4545805dc1de59bc65b21b548c0d553ab187fa1625f13e5c4https://github.com/spesmilo/electrum/issues/4968http://twitter.com/electrumwallet/status/1106479573917724672
