日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Parity 錢包合約漏洞

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Parity 錢包合約漏洞 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

還記得今年 7 月 Parity 錢包合約被找到漏洞,結(jié)果駭客偷走了將近 150,000 個(gè)以太幣,會(huì)發(fā)生是因?yàn)橹悄芎霞s的 callback 裡使用了 delegatecall(msg.data),這個(gè)函數(shù)會(huì)呼叫 data 中的函數(shù)並將 msg.sender 設(shè)為原呼叫函數(shù)的地址,駭客利用這一點(diǎn)呼叫了?initWallet,這時(shí)你們可能會(huì)以為 Parity 應(yīng)該有在 initWallet 設(shè)置條件阻擋駭客就不能呼叫,結(jié)果竟然是沒有!所以駭客就成功並改變合約的擁有者,最後再把以太幣轉(zhuǎn)走,細(xì)節(jié)的部分可以看這篇文章。

Parity 也在幾天後修復(fù)了這個(gè)問題,修復(fù)的方式就是在 init* 函數(shù)加上 only_uninitialized modifier 判斷,當(dāng) m_numOwners > 0 時(shí)這個(gè)函數(shù)就不能使用,這時(shí)應(yīng)該會(huì)想說不會(huì)再有漏洞了吧,畢竟智能合約能操作以太幣,誰知道……

就在前幾天有人發(fā)布了新?issue?說他不小心刪除了錢包的合約,因?yàn)橹挥泻霞s的擁有者可以刪除,那麼他到底怎麼刪除合約?可以看到錢包合約被刪除前共有兩筆交易,第一筆交易呼叫 initWallet 並將合約的擁有者設(shè)為自己。

function initWallet(address[] _owners, uint _required, uint _daylimit) only_uninitialized {initDaylimit(_daylimit);initMultiowned(_owners, _required); }

交易結(jié)果:

Function: initWallet(address[] _owners, uint256 _required, uint256 _daylimit) MethodID: 0xe46dcfeb [0]:0000000000000000000000000000000000000000000000000000000000000060 [1]:0000000000000000000000000000000000000000000000000000000000000000 [2]:0000000000000000000000000000000000000000000000000000000000000000 [3]:0000000000000000000000000000000000000000000000000000000000000001 [4]:000000000000000000000000ae7168deb525862f4fee37d987a971b385b96952

第二筆交易呼叫了 kill 函數(shù),而 kill 函數(shù)呼叫了 suicide (selfdestruct?函數(shù)的別稱,功能是將合約程式從區(qū)塊鏈移除,並將合約剩餘的以太幣轉(zhuǎn)給參數(shù)的位置),錢包的程式就從區(qū)塊鏈上移除了。

function kill(address _to) onlymanyowners(sha3(msg.data)) external {suicide(_to); }

交易結(jié)果:

Function: kill(address _to) MethodID: 0xcbf0b0c0 [0]:000000000000000000000000ae7168deb525862f4fee37d987a971b385b96952

因?yàn)楹芏嗍褂眠@個(gè)錢包的合約引入位置都寫死導(dǎo)致很多合約不能運(yùn)作,在?Polkadot?裡第 451 行就將錢包合約地址寫死:

address constant _walletLibrary = 0x863df6bfa4469f3ead0be8f9f2aae51c91a907b4;

因?yàn)樗羞壿嬇袛喽荚阱X包合約中,所以其他相依於錢包合約的現(xiàn)在以太幣都被凍結(jié),且看起來像這樣 (無法提款):

contract Wallet {function () payable {Deposit(...)} }

Parity 官方還在了解可行的解決方案,如果想查詢自己有沒有被影響可以到這個(gè)網(wǎng)站。

如何預(yù)防

這次的事件 Parity 說明有兩種預(yù)防方式。一種是智能合約不該有自殺的函數(shù),這樣即便黑客獲得了權(quán)限也無法把合約移除。一種是有新的建議及改善時(shí),要及時(shí)更新線上的合約或是找尋線上合約可能的漏洞,因?yàn)樵谶@問題發(fā)生前,就有網(wǎng)友提議在合約部屬時(shí)要自動(dòng)呼叫 initWallet(pr) 加強(qiáng)合約的安全。

如何取得凍結(jié)的資金

目前沒有其他方式可以取得凍結(jié)的資金,只能期待未來有相關(guān)的改善建議實(shí)作在以太坊,或是以太坊實(shí)行硬分叉回復(fù)狀態(tài)到錢包合約刪除之前。

參考

Security Alert - Parity Technologies
Winter may be coming but the moment you've all been waiting for has finally arrived: Parity Tech is excited to announce…paritytech.io Parity Wallet Hack 2: Electric Boogaloo
Postmortem: The what, when, and how of the Nov 6th Parity Wallet Hackhackernoon.com

https://paritytech.io/blog/security-is-a-process-a-postmortem-on-the-parity-multi-sig-library-self-destruct.html

原文地址:https://medium.com/taipei-ethereum-meetup/parity-%E9%8C%A2%E5%8C%85%E5%90%88%E7%B4%84%E6%BC%8F%E6%B4%9E-43ed412ebcd2

總結(jié)

以上是生活随笔為你收集整理的Parity 錢包合約漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。