巨爆乳肉感一区二区三区视频动漫-67194线路一直接进入骚逼-亚洲精品无码一区二区三区四虎-亚洲国产精品有码-国产精品99无码一区二区视频-免费观看A黄色

慢霧:AAVE V2 安全審計手冊

訪客 10個月前 (02-13) 閱讀數(shù) 275 #區(qū)塊鏈
文章標(biāo)簽 前沿文章

引言

隨著去中心化金融(DeFi) 生態(tài)系統(tǒng)的迅速發(fā)展,AAVE V2 作為領(lǐng)先的去中心化借貸協(xié)議之一,在提供創(chuàng)新借貸與流動性管理解決方案方面始終處于行業(yè)前沿。其獨特的無信任機制和高效的資本利用率吸引了大量用戶和機構(gòu)的參與。然而,隨著其應(yīng)用的普及及所涉及的資金規(guī)模逐步擴大,安全審計和風(fēng)控措施的重要性日益凸顯。本手冊將深入探討 AAVE V2 協(xié)議的核心設(shè)計、關(guān)鍵功能及相關(guān)審計要點。

項目背景概述

AAVE V2 是一個基于以太坊區(qū)塊鏈構(gòu)建的開放式借貸平臺,允許用戶存入各種 ERC-20 代幣并從中賺取利息,同時也允許以支付利息的形式借用市場中的代幣。通過引入“利率市場”的概念,AAVE V2 實現(xiàn)了去中心化的資金池管理和自動化的利率調(diào)整機制。此外,AAVE V2 還提供了閃電貸、抵押貸款和代幣交換等高級功能,以滿足用戶的多樣化需求,進(jìn)一步鞏固了其在 DeFi 領(lǐng)域的領(lǐng)先地位。

項目架構(gòu)分析

AAVE V2 的整體架構(gòu)設(shè)計圍繞用戶、資金流動管理、抵押機制、清算流程以及利率策略等關(guān)鍵功能展開,旨在提供高效且安全的去中心化借貸服務(wù)。以下是綜合分析:

用戶操作流程

用戶:用戶可以進(jìn)行存款、借款、償還、提取、借貸利率模式交換、閃電貸以及委托信用等多種操作。用戶與協(xié)議交互時,會根據(jù)其操作自動鑄造或銷毀相應(yīng)的 aTokens,代表其在協(xié)議中的存款權(quán)益,并根據(jù)利率策略獲得收益。

委托信用:用戶可以將自己的信用額度委托給其他用戶,擴展了協(xié)議的靈活性和使用場景。

核心組件

LendingPool:作為核心模塊負(fù)責(zé)處理所有用戶的操作請求,包括存款、借款、償還、借貸利率模式交換、閃電貸和清算,并更新利率和狀態(tài)。

Collateral Manager:管理抵押資產(chǎn),確保用戶借款行為安全可控。當(dāng)?shù)盅嘿Y產(chǎn)不足時,會觸發(fā)清算流程來保護(hù)系統(tǒng)的整體流動性。

Libraries:封裝儲蓄金邏輯,驗證邏輯,通用功能邏輯,如清算和借貸操作的計算,為 LendingPool 提供支持。

GenericLogic 計算并驗證用戶狀態(tài),包括資產(chǎn)評估、抵押品價值計算、健康系數(shù)等操作。

ReserveLogic 用于管理儲備金池,追蹤和更新每種資產(chǎn)的存款量、借款量以及當(dāng)前利率情況。

ValidationLogic 負(fù)責(zé)驗證用戶的操作是否符合協(xié)議規(guī)則,在用戶進(jìn)行存款、借款、還款、清算、閃電貸、切換債務(wù)模式等操作時,對抵押品和負(fù)債進(jìn)行嚴(yán)格檢查。

債務(wù)與代幣化

Debt Tokens:用來跟蹤用戶的借款負(fù)債,與貸出資金數(shù)額 1:1。債務(wù)代幣分別有固定利率和可變利率選項(如 DebtDAI Stable、DebtDAI Variable 等),且債務(wù)代幣不可轉(zhuǎn)移。

aTokens:用戶存入資產(chǎn)時會生成 1:1 的 aTokens 錨定底層資產(chǎn),這些 aTokens 會不斷增值以反映存款所賺取的利息。其中由此引入與本金余額一起存儲為一個比率,稱為縮放余額 scaled balance (ScB)。

公式如下:

價格和利率

Oracles Proxy:依賴外部預(yù)言機 (Chainlink) 提供資產(chǎn)市場價格數(shù)據(jù),用于評估用戶抵押資產(chǎn)的價值,確保借貸行為的定價準(zhǔn)確性和系統(tǒng)的穩(wěn)定性。

Lending Rate Oracle:根據(jù)系統(tǒng)的狀態(tài)和市場情況,提供動態(tài)的借貸利率,優(yōu)化資本利用率和流動性。

配置與管理

Configurator:用于配置系統(tǒng)參數(shù),如不同資產(chǎn)的風(fēng)險參數(shù)和借貸限額,管理儲備金的各種操作,包括激活、借款、抵押、凍結(jié)、更新參數(shù)及在緊急情況下啟用或禁用功能。確保協(xié)議可以根據(jù)市場變化進(jìn)行動態(tài)調(diào)整。

其他關(guān)鍵功能

Liquidation Manager:當(dāng)用戶抵押品價值下降至清算門檻以下時,管理清算操作,保護(hù)系統(tǒng)的資金安全。清算人可以通過清算操作獲得獎勵。

Reserves Balances:存儲系統(tǒng)的儲備資金數(shù)據(jù),用于計算和調(diào)整利率策略。

利率策略

Interest Rate Strategy:根據(jù)市場和用戶需求,動態(tài)調(diào)整利率以實現(xiàn)最佳資本配置,同時考慮流動性風(fēng)險,確保系統(tǒng)在不同市場條件下的靈活性和穩(wěn)定性。

盡管存在兩種利率模型(穩(wěn)定型和浮動型),但是其模型計算都類似于一個拐點型模型。在拐點最優(yōu)利用率下的 slope1 和超過最優(yōu)利用率的 slope2 分段計算,且在這個條件下也分為固定利率模型和可變利率模型。

公式如下:

流程梳理

存款

用戶通過調(diào)用 LendingPool 合約的 deposit 函數(shù)進(jìn)行存款,該函數(shù)接受四個參數(shù):資產(chǎn)地址、存款金額、接收方地址及推薦碼。首先驗證合約未處于啟用狀態(tài),然后通過 ValidationLogic.validateDeposit 驗證存款金額必須大于 0,同時確認(rèn)儲備處于激活狀態(tài)且未被凍結(jié)。接著系統(tǒng)會更新儲備狀態(tài),調(diào)用 reserve.updateState() 更新流動性累積指數(shù)和可變借款指數(shù),并計算時間段內(nèi)產(chǎn)生的利息,其中一部分利息會被鑄造并轉(zhuǎn)入?yún)f(xié)議國庫。

公式如下:

隨后通過 reserve.updateInterestRates 根據(jù)最新的供需關(guān)系動態(tài)調(diào)整流動性利率、穩(wěn)定借款利率和可變借款利率(都由 DefaultReserveInterestRateStrategy.calculateInterestRates 函數(shù)計算更新)。資產(chǎn)轉(zhuǎn)移環(huán)節(jié),系統(tǒng)將用戶的基礎(chǔ)資產(chǎn)轉(zhuǎn)入 aToken 合約,同時鑄造等額 aToken 給用戶所提交的 onBehalfOf 地址。其中,aToken 采用縮放機制 (scaled balance) 處理利息累積。如果是用戶首次存款,系統(tǒng)會自動將該資產(chǎn)標(biāo)記為用戶的抵押品。

與 Compound 相比,AAVE V2 的存款過程有以下主要特點:

支持指定接收方地址(onBehalfOf)。

通過 ValidationLogic 合約進(jìn)行存款驗證。

更新流動性累積指數(shù)和可變借款指數(shù)計算并分配協(xié)議國庫利息。

同時調(diào)整流動性、穩(wěn)定借款和可變借款三種利率。

使用 aToken 的縮放機制(scaled balance) 處理利息。

首次存款自動標(biāo)記為抵押品。

提現(xiàn)

用戶通過調(diào)用 withdraw 函數(shù)進(jìn)行提現(xiàn)操作。首先取指定資產(chǎn)的儲備數(shù)據(jù),包括對應(yīng)的 aToken 地址,檢查此用戶在 aToken 中的余額。接下來,調(diào)用 ValidationLogic.validateWithdraw 函數(shù)來驗證提現(xiàn)請求,包括檢查提現(xiàn)金額是否有效、用戶余額是否足夠、儲備是否處于活動狀態(tài)等。其中通過 GenericLogic.balanceDecreaseAllowed 對用戶的健康系數(shù)以及提現(xiàn)是否影響抵押品進(jìn)行檢查,類似于 compound 中 getHypotheticalAccountLiquidityInternal 函數(shù)的作用。在 balanceDecreaseAllowed 函數(shù)中,calculateUserAccountData 和 calculateHealthFactorFromBalances 函數(shù)計算取出資金后的清算閥值并檢查用戶總抵押,總借貸數(shù)額以及用戶當(dāng)前的健康系數(shù),以此來判斷是否用戶健康系數(shù)處于流動性閥值的安全狀態(tài)。

HF 計算公式如下:

隨后更新儲備的狀態(tài),并更新利率,將提現(xiàn)金額傳遞給函數(shù)。若用戶請求的提現(xiàn)金額等于其當(dāng)前余額,則更新用戶配置,將該儲備標(biāo)記為不再作為抵押使用。最后銷毀用戶的 aToken,并將提現(xiàn)的資產(chǎn)轉(zhuǎn)賬到指定的地址。

與 Compound 相比,AAVE V2 的提現(xiàn)過程有以下主要特點:

使用 aToken 代表用戶在協(xié)議中的存款,提現(xiàn)實際上是銷毀 aToken。

允許用戶提現(xiàn)到指定地址(通過 to 參數(shù)),增加了靈活性。

提供了部分提現(xiàn)和全額提現(xiàn)的選項。

在提現(xiàn)驗證中,AAVE 使用了更復(fù)雜的 balanceDecreaseAllowed 函數(shù)來檢查提現(xiàn)對用戶整體抵押品狀況的影響。

AAVE 的提現(xiàn)過程直接更新了利率,而不是像 Compound 那樣通過 accrueInterest 函數(shù)來更新。

借貸

用戶通過 borrow 函數(shù)進(jìn)行借貸,執(zhí)行借款會先從價格預(yù)言機獲取資產(chǎn)的當(dāng)前價格,將借款金額轉(zhuǎn)換為 ETH 等價。隨后通過 ValidationLogic.validateBorrow 檢查以及 GenericLogic.calculateUserAccountData 用戶借款是否合法,計算包括 onBehalfOf 地址的總抵押資產(chǎn)、總債務(wù)、當(dāng)前貸款價值比率(LTV)、清算閾值和健康因子以及市場的穩(wěn)定性等(類似于 Compound 的 getHypotheticalAccountLiquidityInternal),是否有足夠的抵押資產(chǎn)借貸。reserve.updateState 更新儲備狀態(tài),如利率和借款指數(shù)(這一步類似于 Compound 中的 accrueInterest),用于計算并更新利息。

隨后根據(jù)用戶選擇進(jìn)行的 interestRateMode(穩(wěn)定利率或浮動利率)生成債務(wù),選擇不同的利率模型的代幣合約來鑄造代幣。同時,鑄造代幣時也會進(jìn)行檢查,如果 onBehalfOf 地址不是調(diào)用者,則會在代幣合約中減去其對調(diào)用用戶的借貸授權(quán)。如果是用戶的首次借款,會將其配置為活躍借款者。DebtToken 鑄造給用戶后,協(xié)議會通過 updateInterestRates 更新借款利率,反映借款后的新利率和儲備池的變化。如果用戶請求釋放借款的底層資產(chǎn),協(xié)議會將資產(chǎn)直接轉(zhuǎn)移給用戶。

與 Compound 相比,AAVE V2 的借貸過程有以下主要特點:

支持穩(wěn)定和可變兩種利率模式。

使用單獨的驗證邏輯合約進(jìn)行借貸驗證。

使用債務(wù)代幣(DebtToken) 來表示用戶的借款。

支持信用委托,允許用戶代表其他地址進(jìn)行借款。

還款

用戶通過 repay 函數(shù)進(jìn)行還款,首先獲取用戶的當(dāng)前債務(wù)(包括穩(wěn)定債務(wù) stableDebt 和浮動債務(wù) variableDebt)。根據(jù)用戶選擇的利率模式(穩(wěn)定或浮動),由 ValidationLogic.validateRepay 驗證用戶的還款操作合法性,包括用戶的債務(wù)余額是否足夠進(jìn)行還款。根據(jù)用戶選擇的利率模式來確定還款的具體債務(wù)類型(穩(wěn)定利率或浮動利率)。如果用戶要還的金額小于當(dāng)前債務(wù)余額,系統(tǒng)會使用用戶提供的還款金額進(jìn)行部分還款;否則,將償還所有債務(wù)。更新儲備的狀態(tài) updateState,用于計算并更新協(xié)議中的利息、借貸量以及借貸指數(shù)。隨后燃燒相應(yīng)的穩(wěn)定債務(wù)代幣,并通過 updateInterestRates 更新借款利率。此時,如果用戶的所有債務(wù)(包括穩(wěn)定和浮動債務(wù))在還款后為零,則會將該用戶的借款狀態(tài)標(biāo)記為 false,表示用戶不再借款。最后用戶將還款金額從其賬戶轉(zhuǎn)移到協(xié)議的 aToken 合約地址。

與 Compound 相比,AAVE V2 的還款過程有以下主要特點:

支持穩(wěn)定和浮動兩種利率模式的還款。

使用 DebtToken 來表示和管理債務(wù),還款時燃燒對應(yīng)債務(wù)代幣。

支持部分還款和全額還款,并分別處理穩(wěn)定債務(wù)和浮動債務(wù)。

支持用戶通過信用委托為其他地址還款。

清算

用戶通過 lendingpool 的 liquidationCall 函數(shù)進(jìn)行清算,函數(shù)通過代理模式調(diào)用 LendingPoolCollateralManager 的 liquidationCall 函數(shù),確保函數(shù)的成功執(zhí)行。首先 GenericLogic.calculateUserAccountData 獲取抵押品資產(chǎn)及債務(wù)資產(chǎn)的儲備數(shù)據(jù)和用戶的配置信息,計算用戶的健康因子,并通過 getUserCurrentDebt 獲取用戶的當(dāng)前穩(wěn)定和可變負(fù)債。

ValidationLogic.validateLiquidationCall 函數(shù)驗證清算調(diào)用的合法性,包括檢查用戶的健康因子、債務(wù)狀態(tài)和抵押品配置。若健康因子小于閥值,已作為抵押品,且兩種債務(wù)都不為 0 則驗證通過。接著計算用戶的最大可清算債務(wù),并確定實際需要清算的債務(wù)數(shù)量。如果清算的債務(wù)超過用戶的可用抵押物,將調(diào)整清算金額。

如果清算人選擇接收被清算人抵押的底層資產(chǎn),需要確保抵押物儲備中有足夠的流動性。更新債務(wù)儲備的狀態(tài),并根據(jù)清算人是否接收 aToken 情況,燃燒相應(yīng)數(shù)量的可變和穩(wěn)定債務(wù)代幣。更新債務(wù)的利率,反映清算后的市場情況。清算人獎勵如果選擇接收 aToken,清算人將獲得相應(yīng)數(shù)量的 aToken。如果不接受 aToken,則更新其抵押狀態(tài)和抵押物的利率,從用戶賬戶中燃燒掉對應(yīng)數(shù)量的 aToken ,將底層資產(chǎn)轉(zhuǎn)移給清算人。最后,將清算所需的債務(wù)資產(chǎn)從清算人轉(zhuǎn)移到相應(yīng)的儲備 aToken 中,完成清算過程。

與 Compound 相比,AAVE V2 的清算過程有以下主要特點:

支持多種抵押品和債務(wù)資產(chǎn)的組合清算。

允許清算人選擇接收 aToken 或 底層資產(chǎn)。

清算過程更加模塊化,將驗證邏輯、計算邏輯等分離到不同的函數(shù)中。

支持穩(wěn)定利率和可變利率兩種債務(wù)類型的清算。

閃電貸

用戶通過 lendingpool 的 flashLoan 函數(shù)進(jìn)行閃電貸。作為借貸協(xié)議的閃電貸,可以允許當(dāng)前閃電貸立刻還款或是作為債務(wù)來后續(xù)還款,其中以傳入的 modes 參數(shù)不同而決定。0 為立刻還款,1 為作為穩(wěn)定型債務(wù),2 為浮動型債務(wù)。

函數(shù)首先通過 ValidationLogic.validateFlashloan 檢查輸入?yún)?shù)匹配,計算閃電貸所需的溢價成本,并直接將所需的 aToken 轉(zhuǎn)給接收者地址。調(diào)用接受者的 executeOperation 操作實現(xiàn)預(yù)設(shè)的閃電貸。AAVE 實現(xiàn)的閃電貸操作已包括了兌換,兌換清算,以及兌換償還操作。在 executeOperation 完成以上操作后,記錄需償還的閃電貸金額和相應(yīng)的費用。如果用戶選擇以非債務(wù)模式歸還資金:系統(tǒng)更新儲備狀態(tài),累積儲備流動性以及更新流動性指數(shù)。最后再從請求者轉(zhuǎn)移資金和費用至儲備池。若用戶選擇以債務(wù)模式處理,則調(diào)用 _executeBorrow,開啟相應(yīng)的債務(wù)頭寸。

轉(zhuǎn)換債務(wù)模式

在 AAVE V2 中,用戶可以通過 swapBorrowRateMode 函數(shù)在穩(wěn)定利率模式和浮動利率模式之間切換。首先通過 getUserCurrentDebt 函數(shù)獲取用戶在目標(biāo)資產(chǎn)上的當(dāng)前穩(wěn)定利率債務(wù)和浮動利率債務(wù),確定用戶的債務(wù)狀況。接著調(diào)用 ValidationLogic.validateSwapRateMode 函數(shù)驗證切換操作是否合法。其中檢查用戶是否有足夠的穩(wěn)定或浮動債務(wù)以支持模式切換,確保切換目標(biāo)模式符合資產(chǎn)的配置和用戶的債務(wù)情況。調(diào)用 reserve.updateState 更新資產(chǎn)儲備的狀態(tài),確保儲備數(shù)據(jù)最新。隨后就是對于兩種債務(wù)代幣的相互轉(zhuǎn)換,燃燒穩(wěn)定債務(wù)代幣鑄造浮動債務(wù)代幣或是燃燒浮動債務(wù)代幣鑄造穩(wěn)定債務(wù)代幣。轉(zhuǎn)換完成后,reserve.updateInterestRates 更新目標(biāo)資產(chǎn)利率,確保反映當(dāng)前市場狀態(tài)和用戶債務(wù)的變化。

安全漏洞 Checklist

空市場導(dǎo)致的舍入漏洞

在 AAVE 和 Compound 中,都存在空市場中精度損失而造成的漏洞問題。如果在一個空市場的情況(即沒有用戶在市場中進(jìn)行借貸),由于 cumulateToLiquidityIndex 函數(shù)中 liquidityIndex 的值依賴于合約對應(yīng)的底層資產(chǎn)代幣的數(shù)量,所以攻擊者可以通過閃電貸向合約存入大量的底層資產(chǎn)代幣來操縱 aToken 的價格。

與之前 Compound fork 項目 Hundred Finance 第一次被黑相似,在 HopeLend 事件中,攻擊者先操縱 liquidityIndex 將 hETHWBTC 兌 WBTC 的價值控制為 1:1,通過兌換底層資產(chǎn)以及借貸的方式又提高 liquidityIndex 的值。隨后通過循環(huán)的閃電貸不斷調(diào)用 _handleFlashLoanRepayment 函數(shù)。

在 cumulateToLiquidityIndex 函數(shù)中,rayDiv 的精度損失會再次放大 reserve.liquidityIndex 的數(shù)值,最終放大了能兌換出的 WBTC。(攻擊交易:https://etherscan.io/tx/0x1a7ee0a7efc70ed7429edef069a1dd001fbff378748d91f17ab1876dc6d10392)

審計要點:在審計時,需要關(guān)注兌換率的計算方式是否容易被操控以及舍入的方式是否恰當(dāng),同時可以建議項目團隊在新的市場創(chuàng)建后立刻鑄造 aToken,以防止市場為空進(jìn)而被操控。

ERC677 / ERC777 代幣導(dǎo)致的重入漏洞

與之前 Compound fork 項目 Hundred Finance 第二次被黑相同,在 Agave 攻擊事件中,攻擊者在沒有任何負(fù)債的情況下調(diào)用了 liquidateCall 函數(shù)來清算自己。而清算的代幣是 Gnosis Chain 鏈上使用的 ERC-677 標(biāo)準(zhǔn)代幣, 該類代幣轉(zhuǎn)賬時會外部調(diào)用接收地址的函數(shù), 所以使得清算合約調(diào)用了攻擊合約,攻擊合約在此過程中存入了 2728 個通過閃電貸獲取的 WETH,鑄造出 2728 aWETH,并以此為抵押,借出了 Agave 項目中所有可用資產(chǎn)。外部調(diào)用結(jié)束后,liquidationCall 函數(shù)直接清算了攻擊者之前存入的 2728 aWETH,并將其轉(zhuǎn)給清算者。

(參考來源:https://x.com/danielvf/status/1503756428212936710;?攻擊交易:https://gnosis.blockscout.com/tx/0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e)

審計要點:在審計中,需要關(guān)注借貸功能的相關(guān)代碼是否符合 CEI (Checks-Effects-Interactions) 規(guī)范或者是否存在防重入鎖,并且需要考慮具有回調(diào)功能的代幣造成的影響。

不恰當(dāng)?shù)念A(yù)言機機制導(dǎo)致的價格操控風(fēng)險

在 Blizz Finance 項目被黑事件中,由于當(dāng)時 LUNA 的價格持續(xù)暴跌,協(xié)議使用的 Chainlink 價格信息變得不準(zhǔn)確,導(dǎo)致可以用價格高昂的 LUNA 抵押品借入資金。同時項目沒有現(xiàn)有的故障安全機制,盡管看起來已經(jīng)提前發(fā)出警報,但并沒有及時建立預(yù)防措施來防止損失。當(dāng)價格跌破該水平時,使得任何人都可以按市場價格購買(遠(yuǎn)低于 0.10 美元的價格)大量 LUNA,并將其作為抵押品(價值 0.10 美元)從平臺借出資金。

(參考來源:https://x.com/BlizzFinance/status/1524911400992243761)

審計要點:在審計時,需要關(guān)注計算抵押品價值時采用的預(yù)言機喂價機制是否容易被外部操控,可以建議項目方采用多種價格來源進(jìn)行綜合評估,以規(guī)避單一價格來源造成的風(fēng)險。同時也需要注意項目是否存在合理的暫停機制,來預(yù)防此類突發(fā)情況。

外圍合約外部調(diào)用引入的非預(yù)期問題

在 AAVE 協(xié)議與 Para Swap 協(xié)議的交互中,Aave Collateral Repay Adapter V3 合約的 _buyOnParaSwap 函數(shù)存在多個安全隱患。該函數(shù)通過調(diào)用 safeApprove 方法,在 tokenTransferProxy 上設(shè)置 assetToSwapFrom 的限額為 maxAmountToSwap,但未考慮未進(jìn)行兌換或部分兌換的情況,導(dǎo)致在未完全使用限額的情況下,存在剩余額度保持不變。此外,函數(shù)依賴外部合約調(diào)用 (augustus.call(buyCalldata)) 執(zhí)行兌換,并且未對 paraswapData 傳參進(jìn)行充分驗證與限制,從而允許攻擊者通過惡意構(gòu)造的 paraswapData 操控解碼后的 buyCalldata 和 augustus 合約地址,繞過預(yù)期的兌換邏輯或完全避免兌換。由于該函數(shù)在兌換后未減少或檢查 assetToSwapFrom 的代幣限額,即使兌換失敗或被繞過,攻擊者仍可利用未變化的高額限額提取合約中的代幣,從而實現(xiàn)未經(jīng)授權(quán)的資金轉(zhuǎn)移。出現(xiàn)因缺乏對輸入數(shù)據(jù)和交換結(jié)果的驗證,以及未能有效管理代幣限額的情況,導(dǎo)致合約被攻擊者利用。

(攻擊交易:https://etherscan.io/tx/0xc27c3ec61c61309c9af35af062a834e0d6914f9352113617400577c0f2b0e9de)

審計要點:在審計時,需特別關(guān)注與外部第三方協(xié)議的交互代碼。重點評估外部合約的輸入和輸出是否經(jīng)過嚴(yán)格限制,交互邏輯是否對協(xié)議核心模型或資金安全產(chǎn)生潛在影響,輸入數(shù)據(jù)是否經(jīng)過清理和驗證,防止惡意數(shù)據(jù)引發(fā)安全問題。通過嚴(yán)格審查外部交互的代碼邏輯以及數(shù)據(jù)驗證機制,可有效降低此類漏洞風(fēng)險。

代幣與利率策略兼容問題

在 Polygon 鏈上,AAVE 部署過程中,由于 InterestRateStrategy 設(shè)置不兼容的問題導(dǎo)致功能異常,錯誤地為 WETH 設(shè)置了不兼容的利率策略。

錯誤設(shè)置的 InterestRateStrategy 合約中的 interface 如下:

Y5uQqL5vSUyoPddm6C9YyDL4OXT42UzWdiiF9xF0.png

而 AAVE V2 的 LendingPool 實現(xiàn)的代碼如下:

(參考來源:https://x.com/mookim_eth/status/1659589328727859205)

由于接口不兼容,新 InterestRateStrategy 無法正常被 LendingPool 調(diào)用,直接導(dǎo)致 AAVE V2 的 WETH 池功能中斷,用戶無法存入或提取 ETH。

審計要點:在審計時,需確保代碼(或 fork)中關(guān)鍵組件的接口完全兼容。同時,盡管以上問題并不是由多鏈特性導(dǎo)致的原因,但是審計時仍需要注意不同鏈的特性下是否會造成非預(yù)期的結(jié)果。

Dust 代幣問題

AAVE 的存款和取款會通過 setUsingAsCollateral 函數(shù)設(shè)置 usingAsCollateral 來實現(xiàn),從而靈活地管理抵押策略。當(dāng)外部協(xié)議或合約通過 AAVE 借貸函數(shù)第一次借入資金時,借貸函數(shù)會將 usingAsCollateral 設(shè)置為 true。當(dāng)外部協(xié)議或合約從 AAVE 完全提取資金時,AAVE 中協(xié)議處理程序的 usingAsCollateral 狀態(tài)將被設(shè)置為 false。但實際上,AAVE 在計算取款需要燒掉的 aToken 數(shù)量時,此時如果由于算術(shù)精度誤差,協(xié)議處理程序中可能還有極少的 aToken 剩余。因此,當(dāng)協(xié)議處理程序下次向 AAVE 存款時,usingAsCollateral 將不會變動,依然設(shè)置為 true,由于協(xié)議處理程序合約中沒有調(diào)用 setUserUseReserveAsCollateral 函數(shù)的接口,這可能導(dǎo)致協(xié)議處理程序無法再執(zhí)行借款操作。

審計要點:在審計時,需要對所調(diào)用的協(xié)議有充分的熟悉度,充分了解其特性的情況下,判斷是否對于其與外部協(xié)議交互存在一定的兼容性問題,如代幣兼容性、調(diào)用實現(xiàn)邏輯兼容性等。

寫在最后

本手冊深入探討了 AAVE V2 協(xié)議的核心設(shè)計、關(guān)鍵功能及相關(guān)審計要點,我們希望該手冊可以更好地幫助開發(fā)人員和安全研究人員識別潛在風(fēng)險并確保協(xié)議的安全運行。由于篇幅限制,本文省略了部分代碼和圖片,讀者可點擊文末的閱讀原文跳轉(zhuǎn)至 GitHub 閱讀完整版(https://github.com/slowmist/AAVE-V2-Security-Audit-Checklist)。

熱門
精品国产乱码久久久| 亚洲瘦老头同性70tv| 亚洲欧美在线成人| 日韩成人免费av| 久久99影视| 激情国产一区| 国产免费拔擦拔擦8x在线播放| 亚洲国产99| 麻豆国产一区| 免播放器亚洲| 日本不卡123| 理论片一区二区在线| 91日韩在线| 96视频在线观看欧美| 久久资源中文字幕| 欧美日韩免费观看视频| 亚洲精品小区久久久久久| 牛夜精品久久久久久久99黑人| 日韩网站中文字幕| 日韩成人一区二区三区在线观看| 亚洲激情偷拍| 麻豆成人久久精品二区三区红| 人人香蕉久久| 91p九色成人| 一区二区精彩视频| 91日韩在线| 午夜日韩影院| 国产精品麻豆久久| 欧美人妖在线| 色狮一区二区三区四区视频| 国产精品色婷婷在线观看| 狠狠综合久久av一区二区老牛| 欧美一区高清| 亚洲婷婷免费| 日韩精品国产欧美| 在线日韩欧美| 麻豆91在线播放免费| 九九综合在线| 青青草国产成人av片免费| 成人vr资源| 久久资源综合| 久久不射中文字幕| 国产中文精品久高清在线不| 免费视频最近日韩| 精品国产鲁一鲁****| 日韩一区二区在线免费| 精品黄色一级片| 精品三级在线| 仙踪林久久久久久久999| 一区二区毛片| 亚洲免费婷婷| 天堂va欧美ⅴa亚洲va一国产| 日韩欧美少妇| 九一成人免费视频| 欧美专区一区| 黑人精品一区| 日韩精品首页| 亚洲天堂免费| 91综合久久一区二区| 91欧美日韩在线| 欧美亚洲一级| 三级一区在线视频先锋| 日韩最新av| 麻豆精品国产91久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 一区二区三区视频免费视频观看网站| 日日夜夜天天综合| 亚洲精品a级片| 九九99久久精品在免费线bt| 精品三级在线| 免费日本视频一区| 99成人超碰| 国内精品视频| ww久久综合久中文字幕| 欧美日韩日本国产亚洲在线| 秋霞一区二区三区| 日本在线不卡一区| 欧美高清视频手机在在线| 99国产精品免费视频观看| 国产不卡精品在线| 日韩av免费| 亚洲免费网站| 欧美亚洲色图校园春色| 国产aⅴ精品一区二区四区| 国产一区二区主播在线| 男人的天堂亚洲| 伊人久久综合影院| 日韩 欧美一区二区三区| 欧美aaa在线| 色资源二区在线视频| 婷婷亚洲综合| 大香伊人久久精品一区二区| 中文一区一区三区免费在线观看| 欧美日韩免费观看视频| 久久综合影视| 女人色偷偷aa久久天堂| 精品欧美午夜寂寞影院| 五月国产精品| 综合一区二区三区| 日韩欧美三区| 日韩免费一区| 丝袜亚洲另类丝袜在线| 欧美国产91| 天天做夜夜做人人爱精品| 久久久精品区| 欧美国产亚洲精品| 看片网站欧美日韩| 日韩在线电影| 日本综合字幕| 三级在线观看视频| 成人影院天天5g天天爽无毒影院| 婷婷亚洲五月| 欧美码中文字幕在线| 久久福利综合| 美女主播精品视频一二三四| 麻豆一区二区| 欧美日韩尤物久久| 欧美偷拍综合| 视频福利一区| 亚洲精品在线a| 日本成人精品| 1313精品午夜理伦电影| 国产麻豆精品久久| 亚洲视频电影在线| 亚洲三级毛片| 亚洲久久视频| 一区二区在线影院| 欧美日韩影院| 只有精品亚洲| 国产精品一区二区美女视频免费看| 亚洲国产婷婷| 国产成人久久精品一区二区三区| 国内久久精品| 欧美国产先锋| 国产伦一区二区三区| 婷婷亚洲成人| 日韩激情综合| 国产成人高清精品免费5388| 精品99在线| 久久成人福利| 99久久这里只有精品| 国产综合激情| 999亚洲国产精| 石原莉奈一区二区三区在线观看| 美国欧美日韩国产在线播放| 成人黄色小视频| 第84页国产精品| 亚洲va中文在线播放免费| 国产精品传媒麻豆hd| 日本欧美一区二区| 国产精品成人**免费视频| 国产在视频线精品视频www666| 无码日韩精品一区二区免费| 欧美视频不卡| 欧美成人午夜| 免费在线看一区| 午夜精品久久久久久久久久蜜桃| 国产精品亲子伦av一区二区三区 | 久久精品国产精品亚洲红杏| 日本不卡免费在线视频| 国产亚洲字幕| 一区二区三区免费在线看| 欧美日韩一二三四| 亚洲欧洲日本mm| av免费不卡| 久久久久伊人| 国产欧美亚洲精品a| 精品72久久久久中文字幕| 精品欧美激情在线观看| 亚洲欧美网站| 91精品美女| 国产传媒欧美日韩成人精品大片| 999久久精品| 狠狠色丁香久久综合频道| caoporn视频在线观看| 国产精品久久777777毛茸茸 | 久久这里有精品15一区二区三区| 国产一区二区三区亚洲综合| www国产精品| 先锋a资源在线看亚洲| 国产福利一区二区三区在线播放| 欧美大片91| 久久社区一区| 国产伦子伦对白在线播放观看| 麻豆成人久久精品二区三区红 | 日本人妖一区二区| 欧美日韩高清| 激情亚洲影院在线观看| www.久久热| 久久久天天操| 在线天堂资源www在线污| 欧美国产另类| 亚洲韩日在线| 天天综合网天天| 日韩高清影视在线观看| 亚洲国产一成人久久精品| 国产成人免费| 韩国女主播一区二区三区| 日韩影院精彩在线| 综合久久亚洲|