原文:xToken
翻譯:Agua
美國東部標準時間5月12日上午9:44分,DeFi 質押和流動性策略平臺 xToken遭到攻擊,xBNTa Bancor池以及xSNXa Balancer池立即被耗盡,造成約 2500 萬美元損失。事件發生以後,xToken團隊第一時間釋出宣告,就遭受攻擊的原因及後續應對措施,作出迴應。
我們對資金的損失深表遺憾,並正在探索最佳的發展道路。在Bancor和Balancer流動性池中損失的總價值約為2500萬美元,涉及多項資產。直接在xSNXa合約上損失的總價值為416ETH。xBNTa合約沒有直接損失。
雖然攻擊者鑄造了大量的xBNT和xSNX供應以耗盡流動性池,但所有的BNT和SNX仍然在xToken合約中。也就是說,416個ETH是從xSNXa合約中提取的(xSNXa合約持有ETH是債務對沖策略的一部分)。
xBNTa的開採
我們的xBNTa合約允許投資者用ETH鑄造xBNT。該合約在Bancor上將ETH換成BNT,並使用獲得的BNT計算出正確的xBNT鑄造量。我們透過mint函式中的一個引數傳遞一個交易 "路徑",指示合約將ETH換成BNT。不幸的是,我們沒有驗證交易路徑是否以BNT結束,攻擊者兌換了一個名為SPD的代幣來欺騙交易的BNT對合約持有量的貢獻,允許無限的鑄幣。攻擊者隨後在Bancor xBNTa/BNT池上出售了所有xBNTa。
xBNTa的補救措施
幸運的是,沒有人直接從xBNTa合約中提取價值。但這並不能彌補LP所遭受的巨大損失,我們應該為xBNTa的持有者恢復被攻擊前的全部價值。因此我們正在對向Bancor上的xBNTa/BNT流動性池捐款的xBNTa持有者進行快照。我們將在未來幾天內提供更多關於如何申請新xBNT的資訊。我們希望您對我們有耐心,因為這是一個複雜的過程,我們打算把它做好。
xSNXa的漏洞
xSNXa是我們最複雜的合約,因為它持有SNX、ETH、ETHRSI6040和sUSD債務。我們需要對資產進行估值,以計算淨資產價值。因此,合約中的資產是以ETH為單位進行估值的。
我們允許投資者用ETH來鑄造xSNX。在某些情況下,ETH被兌換成SNX,在某些情況下,ETH被保留為對沖組合的一部分。在像這樣的情況下,ETH被轉換為SNX,我們透過比較使用者的ETH貢獻和獲得的SNX數量(xSNXa合約路徑透過Kyber的聚合器交易)來計算ETH/SNX比率(用於估值目的)。
我們沒有在xSNXa合約中使用鏈上預言機。我們的方法顯然容易被操縱,我們對該漏洞承擔全部責任。攻擊者在使用ETH以大幅降低的SNX價格鑄造xSNXa之前,使用了閃電貸來操縱SNX的價格。這使得攻擊者能夠鑄造出不成比例的xSNXa,這些xSNXa被立即在Balancer池中以SNX和ETH出售。
xSNXa的補救措施
大約有416個ETH從xSNXa中被提取出來,佔該合約淨資產價值的7-8%。其他90%以上的價值仍然在xSNXa合約中,並將被持有人贖回。我們正在探索將ETH價值恢復到合約中的方法,但鑑於損失的規模,我們可能需要一段時間。
我們將對xSNXa餘額進行快照(包括持幣人和流動性提供者),並提供一個新的代幣,以允許持幣人贖回他們的資產。同樣,xSNXa是一個複雜的合同,所以請允許我們有時間來仔細做這件事。
寫在最後
在我們確認其他基金不會出現類似的漏洞之前,所有合約的造幣功能將繼續被禁用。
我們將在未來幾天公佈更詳細的計劃,讓持幣人恢復他們的代幣。
我們已經在即將推出的產品中引入了一項安全功能,可以防止這類攻擊。但我們很遺憾,因為我們還沒有在整個產品系列中引入這一功能。
我們認為駭客掩蓋了他們的蹤跡,但如果他們沒有這樣做(比如透過使用FlashBots API洩露了資料),請聯絡我們,提供相關資訊。
我們希望隨著時間的推移,我們能重新獲得你們的信任。