中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

互聯(lián)網(wǎng)公司排名100太原百度快速優(yōu)化排名

互聯(lián)網(wǎng)公司排名100,太原百度快速優(yōu)化排名,比較好的網(wǎng)站建設(shè)平臺(tái),商標(biāo)設(shè)計(jì)費(fèi)用一般是多少智能合約安全分析,針對(duì) ERC777 任意調(diào)用合約 Hook 攻擊 Safful發(fā)現(xiàn)了一個(gè)有趣的錯(cuò)誤,有可能成為一些 DeFi 項(xiàng)目的攻擊媒介。這個(gè)錯(cuò)誤尤其與著名的 ERC777 代幣標(biāo)準(zhǔn)有關(guān)。此外,它不僅僅是眾所周知的黑客中常見的簡(jiǎn)單的重入問(wèn)題。 這篇文章對(duì) …

智能合約安全分析,針對(duì) ERC777 任意調(diào)用合約 Hook 攻擊

Safful發(fā)現(xiàn)了一個(gè)有趣的錯(cuò)誤,有可能成為一些 DeFi 項(xiàng)目的攻擊媒介。這個(gè)錯(cuò)誤尤其與著名的 ERC777 代幣標(biāo)準(zhǔn)有關(guān)。此外,它不僅僅是眾所周知的黑客中常見的簡(jiǎn)單的重入問(wèn)題。

這篇文章對(duì) ERC777 進(jìn)行了全面的解釋,涵蓋了所有必要的細(xì)節(jié)。深入研究 ERC777 代幣的具體細(xì)節(jié)的資源很少,這篇文章對(duì)于有興趣深入了解 ERC777 代幣的人來(lái)說(shuō)是一個(gè)有價(jià)值的詳細(xì)指南。
在文章的最后部分,將解釋我們最近的發(fā)現(xiàn)。

簡(jiǎn)短描述攻擊載體

這個(gè)漏洞利用了 ERC777 的特性,能夠設(shè)置一個(gè) Hook 接收函數(shù)。通過(guò)利用在目標(biāo)合約中進(jìn)行任意調(diào)用的能力,惡意調(diào)用者可以調(diào)用 ERC777 注冊(cè)表合約,并為目標(biāo)合約分配一個(gè)特定的 Hook 地址。因此,只要目標(biāo)合約在未來(lái)收到 ERC777 代幣,攻擊者的 Hook 合約就會(huì)被觸發(fā)。這個(gè) Hook 可以以各種方式加以利用:要么用于重入攻擊以竊取代幣,要么只是回退交易,從而阻止目標(biāo)合約發(fā)送或接收 ERC777 代幣。

ERC777 和它的 Hook

什么是 ERC777

ERC777 是帶有轉(zhuǎn)賬 Hook 的代幣標(biāo)準(zhǔn)之一。
這里是 EIP 描述:https://eips.ethereum.org/EIPS/eip-777 , 這里是一篇 ERC777 實(shí)踐。
實(shí)現(xiàn) ERC777 代幣的主要?jiǎng)訖C(jī)在于希望能夠模仿原生代幣轉(zhuǎn)賬的行為。通過(guò)在代幣接收時(shí)觸發(fā)智能合約,開發(fā)人員可以執(zhí)行特定的邏輯,以增強(qiáng)功能并創(chuàng)建更多動(dòng)態(tài)的代幣交互。
然而,這些在轉(zhuǎn)賬過(guò)程中的額外調(diào)用使 ERC777 與 ERC20 代幣不同。這些 Hook 引入了一個(gè)新的攻擊載體,可能會(huì)影響到那些沒有設(shè)計(jì)時(shí)考慮到在代幣轉(zhuǎn)賬過(guò)程中處理額外調(diào)用的智能合約。這種出乎意料的行為會(huì)給這些合約帶來(lái)安全風(fēng)險(xiǎn)。
以下是以太坊主網(wǎng)上一些具有一定流動(dòng)性的 ERC777 代幣的列表:
VRA:https://etherscan.io/address/0xf411903cbc70a74d22900a5de66a2dda66507255
AMP:https://etherscan.io/address/0xff20817765cb7f73d4bde2e66e067e58d11095c2
LUKSO:https://etherscan.io/address/0xa8b919680258d369114910511cc87595aec0be6d
SKL:https://etherscan.io/address/0x00c83aecc790e8a4453e5dd3b0b4b3680501a7a7
imBTC:https://etherscan.io/address/0x3212b29e33587a00fb1c83346f5dbfa69a458923
CWEB:https://etherscan.io/address/0x505b5eda5e25a67e1c24a2bf1a527ed9eb88bf04
FLUX:https://etherscan.io/address/0x469eda64aed3a3ad6f868c44564291aa415cb1d9

當(dāng) Hook 發(fā)生時(shí)

ERC20 代幣只是在轉(zhuǎn)賬過(guò)程中更新余額。但 ERC777 代幣是這樣做的:

  1. 對(duì)代幣發(fā)起者的地址進(jìn)行 Hook 調(diào)用
  2. 更新余額
  3. 對(duì)代幣接收方地址進(jìn)行 Hook 調(diào)用

這在 VRA 代幣中得到了很好的說(shuō)明:

源碼: https://etherscan.io/address/0xf411903cbc70a74d22900a5de66a2dda66507255
現(xiàn)在,讓我們檢查一下這些調(diào)用的代碼:

正如你所看到的:

  1. 這個(gè)函數(shù)從_ERC1820_REGISTRY 中讀取稱為 implementer(實(shí)現(xiàn)者)的合約
  2. 如果該函數(shù)找到了一個(gè)實(shí)現(xiàn)者,那么這個(gè)實(shí)現(xiàn)者就會(huì)被調(diào)用。

讓我們研究一下這個(gè)注冊(cè)表,看看什么是實(shí)現(xiàn)者。

注冊(cè)表和實(shí)現(xiàn)者

所有 ERC777 代幣都與注冊(cè)表(Registry)的合約有關(guān):https://etherscan.io/address/0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24。
這個(gè)地址被 ERC777 代幣用來(lái)存儲(chǔ)設(shè)定的 Hook 接收者。這些 Hook 接收者被稱為 “接口實(shí)現(xiàn)者”。
這意味著 Alice 可以選擇 Bob 作為她的接口實(shí)現(xiàn)者。如果 Alice 接收或發(fā)送 ERC777 代幣,Bob 將收到 Hook。
Alice 可以管理不同的 Hook 類型。因此,當(dāng) Alice 發(fā)送代幣時(shí),她可以選擇 Bob 作為接口實(shí)現(xiàn)者,而只有當(dāng) Alice 收到代幣時(shí),她選擇 Tom 作為實(shí)現(xiàn)者。
在大多數(shù)情況下,她也可以為不同的代幣選擇不同的接口實(shí)現(xiàn)者。
這些偏好設(shè)置被存儲(chǔ)在這個(gè)映射的注冊(cè)表中:

_interfaceHash 是 Alice 為一個(gè)事件選擇接口實(shí)現(xiàn)者的標(biāo)識(shí)。
而任何人都可以用這個(gè)函數(shù)讀取 Alice 的接口實(shí)現(xiàn)者:

正如你所看到的,這就是我們之前在 VRA 代碼中遇到的函數(shù)。
變量_TOKENS_SENDER_INTERFACE_HASH 被用作_interfaceHash,它可以是任何字節(jié)。但是 VRA 代幣使用這些字節(jié)來(lái)識(shí)別這種類型的 Hook:

接收 Hook

設(shè)置一個(gè) Hook 接收函數(shù),Alice 只需在注冊(cè)表上調(diào)用這個(gè)函數(shù)并輸入 Bob 的地址作為_implementer 參數(shù)。

她還必須指定一個(gè)_interfaceHash。她會(huì)從 VRA 代幣代碼中獲取這個(gè)_TOKENS_SENDER_INTERFACE_HASH。
還有一個(gè)重要的細(xì)節(jié)。
在為上面的 VRA 設(shè)置實(shí)現(xiàn)者后,Alice 也將會(huì)意識(shí)到,即使其他 ERC777 代幣被轉(zhuǎn)賬,Bob 也會(huì)收到調(diào)用。
比如 imBTC, imBTC 在發(fā)送的代幣上有相同的_interfaceHash。
這是由于所有 ERC777 代幣共享相同的注冊(cè)表合約來(lái)存儲(chǔ) Hook 的偏好設(shè)置。但這取決于 ERC777 代幣為他們的 Hook 指定名稱,雖然有時(shí)它們是相似的,但并不總是如此。

如何找到 ERC777 代幣

調(diào)用注冊(cè)表是所有 ERC777 都具有的特征。
因此,我們可以嘗試dune.com來(lái)調(diào)用所有調(diào)用注冊(cè)表的智能合約。

我們可以使用這個(gè) SQL 腳本。事實(shí)上,我們應(yīng)該另外過(guò)濾出代幣地址,但至少我們有一個(gè)完美的開始,結(jié)果有 78 個(gè)地址。
譯者備注:dune traces 表 會(huì)記錄交易內(nèi)部調(diào)用記錄。

這個(gè)注冊(cè)表是唯一可能的嗎?

理論上,沒有人能夠保證某些代幣恰好使用這個(gè) 0x1820 合約作為注冊(cè)表。
但我們可以用dune.com來(lái)檢查。

它返回這些地址

0x1820a4b7618bde71dce8cdc73aab6c95905fad24
0xc0ce3461c92d95b4e1d3abeb5c9d378b1e418030
0x820c4597fc3e4193282576750ea4fcfe34ddf0a7

我們檢查過(guò),0x1820 是唯一擁有有價(jià)值的 ERC777 代幣的注冊(cè)表。其他注冊(cè)表的代幣并不那么有價(jià)值。

可 Hook 代幣的普遍情況

ERC777 不僅是一個(gè)帶有 Hook 的標(biāo)準(zhǔn)。還有 ERC223、ERC995 或 ERC667。
它們并不那么稀奇。你一定聽說(shuō)過(guò)實(shí)現(xiàn) ERC667 的LINK 代幣。

使用任意調(diào)用的攻擊載體

這是最近為Safful的客戶發(fā)現(xiàn)的攻擊載體。
研究人員通常認(rèn)為 ERC777 代幣會(huì)對(duì)調(diào)用發(fā)起者和接收者進(jìn)行調(diào)用。但實(shí)際上,發(fā)起者和接收者可選擇任意 “Bob” 作為 Hook 接收者。
因此,想象一下結(jié)合那些具有任何數(shù)據(jù)對(duì)任何地址進(jìn)行任意調(diào)用的合約會(huì)發(fā)生什么?
就有任意調(diào)用功能的可以廣泛存在于 DEX 聚合器、錢包、multicall 合約中。
譯者注:任意調(diào)用功能是指在合約中存在類似這樣的函數(shù):
function execute(address target, uint value, string memory signature, bytes memory data, uint eta) public payable;
它可以調(diào)用任何的其他的方法。
攻擊方法:

  1. 攻擊者找到一個(gè)允許任意調(diào)用的函數(shù)的目標(biāo)合約(Target)
  2. 攻擊者在目標(biāo)(Target)上調(diào)用:
  3. registy1820.setInterfaceImplementer(Target, hookHash, Attacker)
  4. 現(xiàn)在,我們的 Attacker 是 Target 的實(shí)現(xiàn)者
  5. Attacker 會(huì)隨著 ERC777 代幣中使用的 hookHash 而被調(diào)用。
  6. 每當(dāng)目標(biāo)合約(Target)收到 ERC777 代幣時(shí),Attacker 就會(huì)收到一個(gè) Hook 調(diào)用。
  7. 下面的攻擊,取決于 Target 代碼 而不同:
    • Attacker 可以在一些用戶執(zhí)行目標(biāo)合約中的函數(shù)時(shí)進(jìn)行重入
    • Attacker 可以直接回退,這樣用戶的交易就直接被還原了

如果 DEX 聚合器計(jì)算最佳兌換路徑是通過(guò)某個(gè)有 ERC777 代幣的 DEX 交易對(duì)時(shí),那么可能會(huì)遇到問(wèn)題。

保護(hù)

經(jīng)過(guò)與客戶數(shù)小時(shí)的討論,我們找到了一個(gè)不會(huì)破壞任意調(diào)用的解決方案。
項(xiàng)目方最好限制使用 Registry1820 作為任意調(diào)用的地址。因此,沒有攻擊者能夠利用任意調(diào)用來(lái)設(shè)置接口實(shí)現(xiàn)者。

經(jīng)驗(yàn)之談

項(xiàng)目和審計(jì)人員必須注意到 ERC777 中描述的 Hook 行為。這些代幣不僅對(duì)接收者和發(fā)起者進(jìn)行調(diào)用,也對(duì)其他一些 Hook 接收者進(jìn)行調(diào)用。
在這個(gè)意義上,允許任意調(diào)用的項(xiàng)目必須特別注意,并考慮 ERC777 的另一個(gè)攻擊載體。

http://m.risenshineclean.com/news/64198.html

相關(guān)文章:

  • 用adsl做網(wǎng)站備案網(wǎng)站一年了百度不收錄
  • 四六級(jí)查成績(jī)網(wǎng)站怎么做百度最貴關(guān)鍵詞排名
  • 公司微網(wǎng)站建設(shè)方案網(wǎng)絡(luò)營(yíng)銷的基本流程
  • 農(nóng)行網(wǎng)站不出動(dòng)畫怎么做電腦培訓(xùn)學(xué)校排名
  • 怎么攻擊php做的網(wǎng)站嗎如何建立自己的網(wǎng)絡(luò)銷售
  • 臨沂哪家做網(wǎng)站最好seo關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 巴中哪里做網(wǎng)站杭州優(yōu)化公司多少錢
  • 網(wǎng)站國(guó)外空間站長(zhǎng)工具中文精品
  • 網(wǎng)站推廣預(yù)期達(dá)到的目標(biāo)泰安網(wǎng)絡(luò)推廣培訓(xùn)
  • 萬(wàn)網(wǎng)域名注冊(cè)網(wǎng)站網(wǎng)頁(yè)制作模板的網(wǎng)站
  • 商城網(wǎng)站開發(fā)視頻東莞網(wǎng)站建設(shè)排名
  • 怎么做網(wǎng)站地圖的樣式惡意點(diǎn)擊軟件有哪些
  • 購(gòu)物網(wǎng)站開發(fā)的描述幽默軟文廣告經(jīng)典案例
  • 昆明seo網(wǎng)站建設(shè)濟(jì)寧百度競(jìng)價(jià)推廣
  • 公關(guān)公司屬于什么行業(yè)北京網(wǎng)站seo設(shè)計(jì)
  • 建網(wǎng)站用什么發(fā)票創(chuàng)建軟件平臺(tái)該怎么做
  • pc網(wǎng)站建設(shè)需要提供哪些資料愛客crm
  • wordpress建站過(guò)程線上推廣的渠道有哪些
  • 十堰網(wǎng)站設(shè)計(jì)公司成都網(wǎng)多多
  • 新余網(wǎng)站制作關(guān)鍵詞seo優(yōu)化排名公司
  • 代理網(wǎng)頁(yè)游戲要多少錢福州seo網(wǎng)站管理
  • 青海網(wǎng)站建設(shè)公司軟文通
  • 網(wǎng)站開發(fā)名詞解釋百度問(wèn)答兼職怎么做
  • matlab做網(wǎng)站爬蟲廣東疫情最新數(shù)據(jù)
  • 網(wǎng)站在線客服管理系統(tǒng)哈爾濱網(wǎng)站優(yōu)化
  • 網(wǎng)站的測(cè)試和網(wǎng)站上線宣傳渠道和宣傳方式有哪些
  • 廣州凡科公司是外包嗎seo免費(fèi)外鏈工具
  • 網(wǎng)站開發(fā)制做seo搜索引擎優(yōu)化工作內(nèi)容
  • 關(guān)于做問(wèn)卷星網(wǎng)站的畢業(yè)論文安裝百度到手機(jī)桌面
  • wordpress u-degin優(yōu)化軟件刷排名seo