WF曲速未來 安全課堂| Soildity安全之交易順序依賴區塊鏈
WF曲速區:Soildity作為編寫智能合約的語言,已經被廣泛的應用。但同時,開發者和用戶也得到了慘痛的教訓,智能合約的安全問題層出不窮。因此,我們總結了一些常見的Solidity安全問題。前車之鑒,后車之師,希望后來者能有所警惕。
區塊鏈安全公司WF曲速未來 安全開課:
Soildity作為編寫智能合約的語言,已經被廣泛的應用。但同時,開發者和用戶也得到了慘痛的教訓,智能合約的安全問題層出不窮。因此,我們總結了一些常見的Solidity安全問題。前車之鑒,后車之師,希望后來者能有所警惕。
交易順序依賴
一筆交易被傳播出去并被礦工認同包含在一個區塊內需要一定的時間,如果一個攻擊者在監聽到網絡中對應合約的交易,然后發出他自己的交易來改變當前的合約狀態,例如對于懸賞合約,減少合約回報,則有一定幾率使這兩筆交易包含在同一個區塊下面,并且排在另一個交易之前,完成攻擊。這意味著,如果某個用戶正在揭示拼圖或其他有價值的秘密的解決方案,惡意用戶可以竊取解決方案并以較高的費用復制其交易,以搶占原始解決方案。
攻擊模型:
攻擊者提交一個有獎競猜合約,讓用戶找出這個問題的解,并允諾給予豐厚的獎勵。
攻擊者提交完合約后就持續監聽網絡,觀察是否有人提交了答案的解
有人提交答案,此時提交答案的交易還未確認,攻擊者就馬上發起一個交易降低獎金的數額使之無限接近0。
攻擊者提供較高的Gas,是的自己的交易先被礦工處理。
礦工先處理提交答案的交易時,答案提交者所獲得的獎勵將變得極低,攻擊者就能幾乎免費的獲得正確答案。
相關事件
ERC20
ERC20標準是相當知名的關于Ethereum建設令牌。這個標準有一個潛在的超前漏洞,這個漏洞是由于這個approve()功能而產生的。
該標準規定的approve()功能如下:

攻擊情景如下
1.Alice允許Bob通過調用approve方法傳輸N個Alice的令牌(N> 0)在Token智能合約上傳遞Bob的地址和N作為方法參數;
2.過了一段時間,Alice決定從N改為M(M> 0)的數量Alice的令牌Bob被允許轉移,所以她再次呼叫批準方法,這個時間傳遞Bob的地址和M作為方法參數;
3. Bob在開采并快速發送之前注意到Alice的第二筆交易調用transferFrom方法轉移N 個Alice的令牌的事件;
4.如果Bob的交易將在Alice交易之前執行,那么Bob將會執行成功轉移N個 Alice的代幣并獲得轉移另一次M個代幣的能力;
5.在Alice注意到出現問題之前,Bob調用了transferFrom方法,這次轉移M個愛麗絲的代幣。
區塊鏈安全公司WF曲速未來 觀點:
對于交易順序依賴這個問題,如果智能合約的開發者不小心,這種情況會導致實際的和毀滅性的前端攻擊。因此開發者要綜合運用gas限制以及披露方案,從而保障交易信息在合理的環節以合理的形式呈現。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。