时间:2023-06-15|浏览:209
在2020年2月19日,我们深入分析了IOTA官方披露在status.iota.org上的线索,并开始独立调查此严重安全事故的具体原因。
通过对IOTA官方钱包Trinity的新版本进行分析,我们在GitHub上进行了版本比对,注意到第三方组件MoonPay被移除,且我们也注意到Trinity桌面钱包是基于Electron开发的。安全经验告诉我们,这可能存在隐患。
因此,我们在2020年2月19日发布推测: IOTA用户Trinity钱包被盗币攻击。我们相信这是一个被低估的经典攻击。虽然官方没有披露具体攻击细节,但我们根据分析,可以做出以下几个推测:
1.问题不是IOTA区块链协议,而是IOTA的Trinity桌面钱包 (官方已经确认)
2.该桌面钱包是基于JavaScript写的框架Electron
3.我们分析了该钱包的新旧版本代码的差异,发现内置的交易所功能模块MoonPay被移除,去除了一段可怕的代码。那么,如果第三方JavaScript被黑作恶,就可以认为钱包已经完全被攻陷了。
到这里,我们很有理由相信这是个很大的定时炸弹。如果这个定时炸弹炸了,官方提出的一些解决方案,如尽快升级新版本的Trinity桌面钱包、立即更改密码、尽快转移资产到安全种子等,都会非常合理和必要。
2020年2月22日,我们注意到官方公布了一些细节,基本证实了我们的推测。攻击者是在2019年11月27日开始使用DNS窃听和CloudflareAPI密钥,重写api.moonpay.io端点,拦截所有发往api.moonpay.io的数据。攻击者在一个月后又开展了另一项长期的实验,即在2019年12月22日。2020年1月25日,攻击者开始针对Trinity展开积极攻击,通过Moonpay的DNS服务提供商在Cloudflare上分发非法代码。
攻击者利用MoonPay的CloudflareAPI密钥进行后续一系列劫持攻击,预估被盗的IOTA达到了8.55Ti(855万个MIOTA)。根据历史经验,如果Web服务方使用了Cloudflare,但Cloudflare账号权限被攻击者控制,就可以实现完美的中间人攻击,并注入恶意JavaScript。而Trinity桌面钱包又是基于Electron构建的,于是一个完美的JavaScript执行环境就呈现在攻击者面前。不需要任何特别权限,JavaScript就可以完成用户或Trinity钱包可以完成的任何事情,包括密码和种子的窃取。
由于我们不像IOTA和MoonPay官方拥有足够的日志记录来监控整个攻击过程,我们只能根据我们所能接触到的信息完成以上推测与相关分析工作。
在这里,我们需要说明的一些安全看法和建议:
第一,第三方是可以有邪恶的行为,因此,在软件安全开发过程中一定要警惕第三方依赖,包括第三方组件和第三方JavaScript链接。
第二,第三方CDN/WAF服务,如Cloudflare等非常优秀和强大,但如果使用者没有安全管理好自己的账户权限,其Web服务将会遭受完美的中间人攻击。
第三,在公链官方钱包中出现的一个致命缺陷可能会破坏整个公链的安全性。
最后,为了自己的资产安全,建议尽快按照官方的指导完成安全加固工作。
相关链接:TrinityAttackIncidentPart1:Summaryandnextsteps,TrinityAttackIncidentPart2:TrinitySeedMigrationPlan,TrinityAttackIncidentPart3:KeyLearnings&Takeaways,IOTAStatusPage,如何看待NPM包event-stream被黑客篡改,发现包含恶意代码?
热点:iota