時間:2023-06-15|瀏覽:289
在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