看起來 @ImpermaxFinance 被駭客攻擊,損失約 110 ETH($380K)。 我的初步分析 👇 Impermax 是一個用於孤立槓桿 LP 農業的借貸協議。每個孤立市場都有幾個 imxToken,這是一個存放基礎代幣的保險庫,並接收 imxToken。漏洞存在於 "exchangeRate" 函數中,當 totalBalance 或 totalSupply 為零時,它返回初始化值 1e18。此外,mint/redeem 函數存在四捨五入問題。 除此之外,還有一個類似於策展人的合約,管理用戶的保險庫並將其分配到不同的市場。另一個漏洞是這些策展人擁有一個未受保護的分配函數,允許任何人將他們的資金重新分配到不同的市場。 此次攻擊使用了多個交易。 (1) 攻擊者首先償還市場上所有的活躍貸款,這將 totalBorrows 降至 0;同時攻擊者也將 0 分配給這個市場; (2) 攻擊者不斷從市場中 mint 和提取,直到 totalBalance 四捨五入為 0。目前,totalSupply 不是 0,且僅由攻擊者持有。 (3) 攻擊者將所有資金從策展人分配到這個市場。這筆存款的匯率將為 1e18,但攻擊者已經持有一些股份。 (4) 攻擊者在 (2) 中提取他的股份以獲利。 請儘快暫停受影響的市場 @ImpermaxFinance。請注意,只有一些保險庫受到影響,這些保險庫僅有策展人存款。如果一個保險庫有用戶的存款,似乎是安全的。 --- 這不是財務建議,這只是我的初步分析,我可能會犯錯。我已經聯繫了團隊,但團隊尚未回覆。
@ImpermaxFinance 更新,團隊已經知道這個問題並正在積極調查中
更新攻擊的 (2) 步驟不正確,實際上是: (2.1) 創建一個新的 uni v3 位置作為抵押品 (2.2) 在目標市場借入 1 wei; (2.3) 從另一對代幣市場借入最大數量; (2.4) 等待區塊;然後清算借入位置 (2.5) 調用 collateral.restructureBadDebt 這將成功從市場中提取 1 wei 的總餘額,同時總供應量保持不變。攻擊者通過多次這樣做,將總餘額減少到 0,並且總供應量不為零。
32.42K