Ropsten
ETH 在 Ropsten 上被盜
有沒有人在 Ropsten 遇到過以下場景:
- 你在 Geth 創建一個賬戶,然後通過水龍頭將一些 ETH 轉給你自己。
- 您解鎖帳戶並繼續開始編譯和執行契約。
- 突然你發現你所有的ETH都不見了,轉移到0x6Ef57BE1168628A2bD6c5788322A41265084408a。
這發生在我和一群參與者的一次研討會上,在幾秒鐘內,我們所有的 ETH 都被盜了。
如果你在 Etherscan 中查看這個賬戶上發生的交易,它會突然執行,有少量,有時相當大量的 ETH 轉移到自己身上。
想知道這是否可以解釋。我意識到在 Rinkeby 上也找到了相同的地址 0x6Ef57BE1168628A2bD6c5788322A41265084408a。
我在專用網路上遇到了完全相同的情況,當時我在一個具有公共 IP 地址的節點上解鎖了一個帳戶以查看發生了什麼 - 所有資金都轉移到您在帳戶獲得資金後的幾秒鐘內發布的同一地址 -我對發現漏洞的速度感到驚訝,但對它被利用並不感到驚訝!
Smarx 的評論指出了鎖定對本地機器的訪問的修復:
--rpcaddr 127.0.0.1
刪除--rpccorsdomain "*"
標籤將很好地鎖定東西。如果您想擴大訪問點以啟用 web3 查詢(例如在伺服器上託管 DApp 前端)並假設您想保持本地節點執行而不使用像 infura.io 這樣的服務,有幾種可能解決方法:
- 使用Nginx(或類似的)作為反向代理來保持該接入點開放,但僅限於授權方。這與infura.io 方法並沒有太大的不同,並且安全性將與您所做的一樣好,具體取決於所應用的身份驗證方法。設置 Nginx 以將請求轉發到您的 geth RPC 埠,並將 geth 配置為僅接受本地請求
--rpcaddr 127.0.0.1
- web3.js 1.0允許您遠端簽署交易,這樣您就可以在沒有賬戶的情況下保持節點線上,並使用它直接傳播這些已簽署的交易,而無需通過 HTTP-RPC 介面對您的賬戶進行外部訪問。這不會阻止任何人使用您的節點來讀取狀態並可能會受到 DDOS 攻擊
- (風險很大,安全性要低得多,我不建議這樣做) - 保持您的資金節點帳戶鎖定並
personal
在您的 RPC 配置中啟用標籤,然後在您的程式碼中的任何交易行之前和之後立即發送web3.personal.unlockAccount(eth.accounts[0], "<password>")
和web3.personal.lockAccount(eth.accounts[0])
指令。雖然可以防止您的資金輕易從未鎖定的賬戶中被提取,但啟用personal
標籤會帶來風險,因為您在這里為許多不同的攻擊敞開了大門