EduCoin智慧合約transferFrom任意轉賬漏洞

FLy_鵬程萬里發表於2018-07-15

先來看影響情況

更多詳情可以到這裡檢視

可以看到今日(2018,5,24)發生了三比大量轉賬的記錄,這些都是這個漏洞所造成的,其中有個比較搞笑的事情:

看第1、2筆紅框過的交易,攻擊者0x4205....從0xeee28...使用者裡竊取了660459561個token。

然而,沒過幾分鐘攻擊者0x4205竊取來的token全部都被0xc713使用者給轉走了。

......

這說明什麼?攻擊者可以從任意使用者中盜幣!

可以預見的是此幣種過不了幾天就會市值跌至近0,可以說是一洞回到解放前了。


漏洞成因

原始碼在這裡可以直接看到。

我們直接將目光瞄準到transferFrom函式:


看這行程式碼

allowed[_from][msg.sender] -= _value;

這裡沒有做任何檢查也沒有使用SafeMath

因此可以選擇任意令牌持有者作為_from來轉賬


應該怎麼寫?

正確的做法這裡可以參考大名鼎鼎的EOS的實現方法,如下:



相關文章