Vulnerability
Wallet Griefing 攻擊是否仍然存在?
我在以下連結中閱讀了有關 Wallet Griefing 攻擊的資訊:
[Ethereum Griefing Wallets][1]
‘send’ 被選中,但合約使用 throw。程式碼如下:
for (uint i=0; i<investors.length; i++) { if (investors[i].invested == min_investment) { // Refund, and check for failure. // This code looks benign but will lock the entire contract // if attacked by a griefing wallet. if (!(investors[i].address.send(investors[i].dividendAmount))) { throw; } investors[i] = newInvestor; } }
這種攻擊仍然可以通過將 throw 替換為 revert 來發生嗎?
有人請指導我嗎?祖爾菲。
是的,我看到這個漏洞仍然是一個相當常見的錯誤。實際上,我幾週前剛剛寫了一篇關於它的文章:https ://medium.com/consensys-diligence/provable-fair-ransom-1547ba894d0 。
是
throw
,require
還是revert
無所謂。關鍵是,如果一個收件人可以導致交易恢復,那麼沒有人可以得到報酬。