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

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