網頁錢包 MyCrypto 安全總監 Harry Denly 日前撰文表示,發現加密貨幣紙錢包產生器「WalletGenerator.net」所運行的代碼存在漏洞,允許批量產生器將同一組錢包私鑰 、公鑰重複發送給多名用戶,但事實上,每個人所得到的密鑰理應是獨一無二且隨機生成。
據文章所述,漏洞代碼最初於 2018 年 8 月生效,直到上週 5 月 23 日才得以修補。事實上,WalletGenerator 曾表示網站上的代碼皆為開源,並已在 GitHub 上進行審核,但經過檢測後發現,兩者存在差異,且該項目早在兩年前就已撤換所有者,因此目前無法知悉新所有者是否曾對代碼進行修改,或是服務器已被他人惡意破壞。
Denly 還發現,該網頁的 SecureRandom 功能竟從用戶的服務器中擷取輸入,而不是瀏覽器獲取。他補充道,若使用服務器的數據對其進行播種,這將有損密鑰生成的隨機性。
MyCrypto 在 5 月 18 日至 23 日測試期間,試圖使用該網站的批量生成器來製作 1,000 個密鑰。 GitHub 版本上的代碼傳回 1,000 個密鑰,但實時代碼僅傳回 120 個,就算是對其他因素進行調整後(刷新瀏覽器、更改 VPN 和用戶),批量生成器也始終僅傳回 120 個獨一無二的密鑰。
為了確保紙錢包的安全性,密鑰必須是隨機生成。正如 Denly 在文章所述,「ELI5:生成密鑰時,您將獲取一個超級隨機碼,將其轉換成私鑰,然後再轉換為公鑰(地址)。但是,如果這所謂的超級隨機碼每次都是 5,則生成出來的私鑰將始終如一。這就是為何超級隨機碼實際上必須是隨機的。」
調查過程中,MyCrypto 曾向 WalletGenerator 取得聯繫,希望對方能保護服務器並協助調查,但得到的回應是,「無法驗證這些指控」,甚至反問調查人員是否在釣魚網站上。 MyCrypto 事後發現,就在上次進行調查(5 月 22 日晚間)和收到 WalletGenerator 網站所有者的電郵回覆(5 月 23 日中午)之間的某個時段,漏洞代碼已被修改過來。
MyCrypto 最後提醒,2018 年 8 月 17 日之後生成密鑰的用戶應立即將資金轉移到另一個錢包,並建議不要使用「WalletGenerator.net」。