是安全問題?還是使用者體驗的折中?MetaMask隱私洩漏問題簡析
近期以太坊著名的瀏覽器擴充套件外掛 MetaMask被暴出現隱私洩漏的安全問題。我們知道,MetaMask是一個非常流行的瀏覽器擴充套件程式,它允許使用者基於瀏覽器場景關聯繫結錢包賬號,特別在使用者通過瀏覽器訪問DApps時,這款外掛經常被用到,僅在谷歌Chrome瀏覽器上,這款外掛便已經被安裝了超過100萬次。然而,據最近的報道顯示,當用戶通過MetaMask外掛登入錢包的時候,如果此時賬戶處於登入狀態,則使用者在訪問每一個Web站點的時候,該Web站點都可以通過MetaMask獲取到使用者的以太坊地址。
接下來,就請北京鏈安安全專家 HardMan就本次安全事件做進一步分析:
首先 MetaMask這個隱私洩露問題在github很早就有討論。
https://github.com/MetaMask/metamask-extension/issues/4269 2018年5月17日
https://github.com/MetaMask/metamask-extension/issues/5496 2018年10月11日
https://github.com/MetaMask/metamask-extension/issues/5993 2019年1月4日
如這條,在去年 5月的使用者反饋中,就有人提出MetaMask沒有給使用者自主選擇權,去選擇使用者訪問的DApp中,哪些可以通過MetaMask接觸相關敏感資訊。
整體來看,相關反饋討論的主要問題在於, MetaMask是否可以允許使用者自由選擇自己的身份資訊暴露給哪個DApp,而不是設計為將使用者的資訊暴露給所有的Chrome tab頁面,或者預設就是隱私模式,當用戶訪問具體DApp的時候,彈窗詢問使用者是否允許暴露自己的資訊給該頁面。
但是 MetaMask預設還是將使用者的以太坊身份資訊預設暴露給所有的Chrome tab頁面,嚴格來說,從開發者本意來看,這並不是MetaMask的一個疏忽造成的安全漏洞,而是MetaMask在使用者體驗層面,就使用者互動層面安全性和便利性做出的一個妥協。
首先 MetaMask在使用者使用該外掛之前已經給出過明確提示。當用戶不使用該外掛的時候請登出,否則你當前的以太坊賬戶資訊會預設暴露給所有的瀏覽過的網站。
如果所有使用者都能注意到,這個其實是很簡單粗暴的解決問題的方式。由於 DApp需要獲取使用者的以太坊賬戶資訊,如果按照github討論的,當每訪問一個網站MetaMask都彈框詢問使用者是否授權使用者獲取以太坊資訊,從使用者體驗角度就會存在便捷性爭議,使用者甚至都不知道MetaMask彈框詢問的是什麼意思,也不知道自己訪問的這個網站是不是一個DApp網站。而如果設計為MetaMask允許使用者配置授權自己的賬戶資訊給指定DApp,由於本質上MetaMask只是一個錢包瀏覽器擴充套件外掛,甄別訪問的URL是否是DApp網站並不是MetaMask的主要工作。所以在這種情況下,MetaMask選擇了預設的策略,只要使用者在登入狀態下,就會暴露使用者的以太坊的賬戶資訊給所有的Chrome tab頁,使用者處於登出狀態才不會再暴露以太坊賬戶資訊給Chrome tab頁。
當然,隨著行業變化,使用者使用習慣以及安全敏感性的變化, MetaMask也有責任重新審視其產品互動和安全方面的平衡。而在此之前,北京鏈安提醒MetaMask外掛的使用者,當您不使用MetaMask外掛的時候,請及時登出,以避免自己的以太坊賬戶資訊暴露給所有網站。當然,如果你的MetaMask外掛中包含的以太坊代幣數量比較小,特別僅僅是為了開發臨時使用時,即使以太坊地址洩漏給訪問過的網站也並不會有很大問題。
(作者:北京鏈安,內容來自鏈得得內容開放平臺“得得號”;本文僅代表作者觀點,不代表鏈得得官方立場)