比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > DAI > Info

USD:閃電貸攻擊的深層原因:價格預言機操縱攻擊

Author:

Time:1900/1/1 0:00:00

作者:Samczsun

編譯:Savage

進入11月以來,連著有兩起閃電貸攻擊被報道,ValueDeFi協議和BSC上的CHEESE項目方都遭遇了類似攻擊,損失了數百萬美元。隨著時間的增加,可以預見閃電貸攻擊事件可能會越來越多。閃電貸攻擊是如何發生的?背后的機制是什么?如何防范類似的攻擊呢?

這篇文章中,知名白帽黑客、Paradigm研究合伙人Samczsun指出,價格預言機操縱漏洞是閃電貸等攻擊事件的根本原因,并給出了五個相關漏洞案例和六個防御建議,建議DeFi開發者收藏。

2019年年底,我發表了一篇題為"如何從抵押不足的貸款產品中獲得盈利和樂趣"的文章,文中,我描述了對以太坊dApp的經濟攻擊,這些攻擊依賴于一個或多個代幣精確的價格數據。而現在已經到2020年末了,讓人嘆息的是,許多項目還是在犯同樣的錯誤,最近HarvestFinance遭黑客閃電貸攻擊事件,就是典型的案例,這一事件,導致協議用戶集體損失3300萬美元。?開發者對重入等漏洞一般比較熟悉,但預言機操縱則不太被人關注。

目前,基于重入性的漏洞出現頻率有所下降,而價格預言機操縱的漏洞現在卻在頻頻增加。?是時候該發表一篇關于價格預言機操縱漏洞的文章了。?本文分為三部分。?第一部分小白科普,介紹預言機和預言機價格操縱的基本概念和原理;第二部分中級進階,回顧過去跟預言機相關的漏洞案例;第三部分是對開發者的建議,看看可以應用哪些技術防止項目受到價格預言機操縱的影響。

預言機基本概念和原理

發生在現實生活類似預言機操縱的故事

回到2015年12月1日,星期三,假設你的名字叫DavidSpargo,你正在澳大利亞墨爾本,PekingDuk演唱會上,你想跟樂隊來個近距離接觸,但后臺通道有兩個保安,他們不可能讓無關人員直接走進去。?這時候你會想知道,如果你表現出你跟這里很熟,保安們會有什么反應。樂隊成員的親屬肯定會被允許到樂隊后臺參觀,所以你要做的就是讓保安們相信你是親屬。?你想了一下,想出了一個只能用天才或絕對瘋狂來形容的計劃。?迅速布置好一切后,你自信地走到保安面前,自我介紹說,自己是DavidSpargo,PekingDuk樂隊成員的家人。當保安要求你提供證據時,你向他們展示了無可辯駁的證據--維基百科。?

上海文旅局局長:將在文旅元宇宙新賽道打造一批龍頭企業和獨角獸企業:金色財經報道,6月1日上午,上海市文化和旅游局黨組書記、局長方世忠率隊赴上海機遇星球網絡科技有限公司專題調研,實地察看《風起洛陽》VR全感劇場。方世忠說,上海市文化和旅游局會全力支持以“重現華夏文明想象力世界·打造數實融合超感元宇宙”為宗旨,堅持數實融合交互體驗,專注打造“沉浸穿越·時空之旅”為特點的“多主題·全場景·真感知·強互動”系列化元宇宙文娛產品,依托“線上線下一體化運營體系+數實融合場景化產品體系”實現內容快速迭代和企業可持續發展的探索實踐。

下一步,上海市文化旅游局將主動把握新沉浸引發的體驗變革、新時空帶來的場景變革和新技術推動的產業變革,從上海最有資源、最有優勢的地方出發,全力推動文旅行業切入元宇宙新賽道,提升上海文旅業引領未來發展的核心競爭力。[2023/6/3 11:55:55]

?保安向你招手,讓你等等。一分鐘過去了,兩分鐘過去了...五分鐘后,你在想是否應該在執法部門出現前逃走。當你準備放棄,樂隊成員之一的ReubenStyles走過來做了自我介紹,隨后你和他一起走進后臺休息室,樂隊對你的聰明才智印象深刻,最后你們一起喝了幾杯啤酒。再后來,他們在自己的Facebook頁面上分享了那晚發生的事情。?

什么是價格預言機?

價格預言機,通俗來說,就是任何你可以查詢價格信息的東西。?在美劇《TheOffice》中,Pam向Dwight詢問SchruteBuck的現金價值時,Dwight的作用就是一個價格預言機。

?在以太坊上,一切都是智能合約,價格預言機也是如此。因此,區分價格預言機如何獲取價格信息很必要。其中一種方式,你可以簡單地從價格API或交易所獲取現有的鏈下價格數據,并將其帶到鏈上;另一種方式,你可以通過查詢鏈上去中心化交易所來計算即時價格。

這兩種方式各有優劣。?

鏈下數據對價格波動的反應一般較慢,這個特性有好有壞,取決于你想用它來做什么。不過,它通常需要少數特權用戶來推送鏈上數據,所以你必須相信他們不會變壞,不會被脅迫推送不良更新。?鏈上數據不需要任何特權訪問,而且總是最新的,但這意味著它很容易被攻擊者操縱,這就可能造成災難性的失敗。

Maple Finance推出現金管理池,可幫助鏈上參與者投資美國國庫券:4月19日消息,加密借貸協議 Maple Finance 發文宣布推出現金管理池(Cash Management Pool)。Maple 表示,現金管理池是一個鏈上現金管理解決方案,該池支持鏈上參與者投資美國國庫券,以滿足客戶的流動性、風險和會計要求。

注:美國國庫證券(United States Treasury securities)是美國財政部發行短期債券,期限不超過一年。[2023/4/19 14:14:16]

跟預言機相關的漏洞案例

可能出現什么問題呢?

讓我們來看看幾個案例,在這些案例中,因為集成了糟糕的價格預言機,一些DeFi項目出現重大的財務損失。?

案例一:SynthetixsKRWOracle故障?

Synthetix是一個基于以太坊的衍生品流動性協議,允許用戶合成其他貨幣資產。為了實現這一目標,Synthetix依靠定制的鏈下喂價機制,從一組秘密喂價核算出總價格,并以固定的時間間隔發布在鏈上。然后,依據計算出來的價格,允許用戶針對資產進行多頭或空頭交易。?2019年6月25日,Synthetix所依賴的其中一個喂價渠道錯誤的報告了韓元價格,報價比真實匯率高出1000倍,再加上價格預言機系統出現的額外錯誤,這個價格被系統接受并發布在了鏈上。一個交易機器人迅速在sKRW市場上進行了買入和賣出。?

?這個機器人本可以賺取超過10億美元的利潤,不過Synthetix團隊最后跟交易員協商,將交易員將資金返還,換取bug賞金。?Synthetix團隊正確地實施了價格預言機合約,從多個來源提取價格,以防止交易者在鏈上發布價格變化之前預測價格變化。然而,由于上游價格源發生故障,導致這個案例中出現了毀滅性的攻擊。?這說明了使用使用鏈下數據的價格預言機的風險:你不知道價格是怎么計算出來的,所以你的系統必須精心設計,使所有潛在的故障模式都能得到妥善處理。?

zkSync 2.0 新里程碑 Fair Onboarding Alpha 即將上線:2月1日消息,基于 ZK Rollup 的以太坊二層網絡 zkSync 發布推文稱,zkSync 2.0 的 下一個里程碑——Fair Onboarding Alpha 即將上線,其允許開發者在封閉環境中測試代碼,新的費用模型可以確保交易和區塊擴容考慮系統整體成本,改善證明生成性能并修復所有審計發現。

據悉,Fair Onboarding Alpha 的持續時間將與生態系統項目一起確定。在 Fair Onboarding Alpha 期間,系統將對外部用戶關閉,完成后將進入 Full Launch Alpha 階段并對外部用戶開放。[2023/2/1 11:40:27]

低抵押借貸?

上文說到,我在2019年9月發表了一篇文章,概述了依賴鏈上數據的價格預言機的相關風險。雖然我強烈建議閱讀原帖,但文章比較長,技術細節也很多,可能會讓人難以消化。因此,我在這里提供一個簡化版的解釋。?想象一下,你想把去中心化的借貸帶到區塊鏈上。允許用戶存入資產作為抵押品,借出其他資產,最高金額由他們存入的資產價值決定。假設用戶想用ETH作為抵押品借入美元,ETH當前價格為400美元,抵押率為150%。?當用戶存入375個ETH,等于他們存入了15萬美元的抵押品。每1.5美元的抵押品可以借到1美元,所以他們最多可以從系統中借到10萬美元。?

?在區塊鏈系統中,不是簡單地宣布1個ETH值400美元就可以了。惡意用戶完全有可能宣布1個ETH值1000美元,然后從系統中拿走所有的錢。因此,對于項目開發者來說,去尋找接近真實價格的價格預言機就變得很有必要,比如Uniswap、Kyber或其他去中心化交易所的當前現貨價格。?

乍一看,這似乎是正確的做法。畢竟,只要你想買入或賣出ETH,Uniswap的價格總是大致正確的,因為任何偏差都會被套利者迅速糾正。然而,事實證明,在交易過程中,去中心化交易所的現貨價格也可能會出現瘋狂的錯誤,就像下面這個案例所示。?首先需要考慮Uniswap的儲備金是如何運作的。價格是根據儲備持有的資產數量計算的,隨著用戶在ETH和美元之間進行交易,儲備持有的資產會發生變化。如果有惡意用戶在從你的平臺貸款前/后進行交易,怎么辦??

Fantom部署智能合約監控系統Watchdog:10月27日消息,Fantom 部署了一個名為 Watchdog 的自動化智能合約監控系統,以加強其區塊鏈上去中心化應用程序的安全性。Fantom 基金會在一份聲明中表示,該系統是與區塊鏈安全公司 Debaub 合作開發。Watchdog 將自動掃描 Fantom 生態系統中智能合約的問題。一旦發現漏洞,安全公司 Dedaub 將通知項目方,并協助項目方分析風險,支持項目組及時修復漏洞。[2022/10/27 11:50:04]

?Uniswap的ETH/USD池子里有8000個ETH和320萬個USD,假設在用戶貸款前,用200萬美元購買5,000個ETH。Uniswap交易所計算出的價格是1ETH=1,733.33美元,與此同時,用戶借的375個ETH可以作為價值433,333.33美元資產的抵押品,最后,用戶用5000ETH換回他原來的200萬美元,從而重置價格。最終的結果是,貸款平臺只是讓用戶在沒有投入任何抵押物的情況下,多借了333,333.33美元。?這個案例說明,使用去中心化交易所作為價格預言機時,出現的最常見錯誤——攻擊者在交易過程中幾乎完全控制了價格,而試圖準確地讀出這個價格,就像在一個秤上讀出它完成結算前的重量一樣,很有可能會得到錯誤的數字。可能會讓你損失很多錢。?

案例二:SynthetixMKR價格操縱

2019年12月,Synthetix再次遭遇攻擊,原因是價格預言機操縱。值得注意的是,這次它跨越了鏈上價格數據和鏈下價格數據之間的障礙。?

?Reddit用戶u/MusaTheRedGuard觀察到,一名攻擊者針對sMKR和iMKR進行了一些非常可疑的交易。攻擊者首先購買sMKR來做多MRK,然后從UniswapETH/MKR對中購買大量的MKR,等待一段時間后,攻擊者將他們的sMKR賣出換成iMKR空頭倉位,并將他們的MKR賣回Uniswap。一直重復這個過程。?這個操作背后的邏輯是,攻擊者通過Uniswap交易,這使他們可以隨意移動Synthetix上MKR的價格。深層原因,很可能是Synthetix所依賴的鏈下喂價實際上是依賴于MKR的鏈上價格,MKR沒有足夠的流動性讓套利者將市場價格設置成最佳狀態。?這一事件說明,即使你認為你使用的是鏈下價格數據,但實際上你可能仍然在使用鏈上價格數據,你仍然可能暴露在使用這些數據的復雜性中。?

郵件營銷服務Mailchimp再次禁止加密公司進行營銷:金色財經報道,在使用時事通訊服務四年后,Decrypt 的時事通訊周二被Mailchimp 禁止。該通訊主要涵蓋以加密貨幣為重點的新聞,并且似乎符合 Mailchimp 封禁的標準。

自 2018 年以來,這家電子郵件營銷公司和服務提供商以“高于平均水平的濫用投訴”為由,禁止數字資產公司使用其平臺進行營銷。

(blockworks)[2022/8/10 12:14:14]

案例三:bZx黑客事件

?2020年2月,bZx在幾天內被黑了兩次,損失約100萬美元,這里我們只看第二次攻擊事件。?在第二個攻擊事件中,攻擊者首先用ETH購買了Kyber平臺上幾乎所有的sUSD,sUSD價格短時升高,然后,攻擊者自己從Synthetix購買了第二批sUSD,并將其存放在bZx上。攻擊者用這些sUSD作為抵押品,借到了bZx平臺允許的最大數額的ETH。最后,攻擊者再將sUSD賣回給Kyber平臺。?如果你足夠用心的話,你會認識到這本質上是相同的低抵押貸款攻擊,只是使用了不同的抵押品和不同的去中心化交易所而已。?

案例四:yVault漏洞?

2020年7月25日,我向yEarn報告了一個關于他們新上線的yVault合約的bug,我在這里簡單總結一下。?

yVault系統允許用戶存入代幣賺取收益,而不需要自己管理。在內部,金庫會跟蹤yVault代幣的總發行量以及存入的基礎代幣總量。單個yVault代幣的價值由鑄造的代幣與存入的代幣的比例得出。金庫賺取的所有收益都會分攤到所有已發行的yVault代幣上,因此,也就分攤到所有yVault代幣持有人身上。?第一個yVault允許用戶通過向BalancerMUSD/USDC池提供流動性來賺取USDC的收益率。當用戶向Balancer池子提供流動性,作為回報,他們會收到BPT代幣,BPT可以兌換池子的一部分。因此,yVault根據可以用其BPT贖回的MUSD/USDC的數量來計算其持有的價值。?這似乎是正確的實現方式,但不幸的是,與之前給出的原理相同--交易過程中Balancer流動池的狀態并不穩定,不能被信任。在這種情況下,由于Balancer選擇的粘合曲線,用戶從USDC換成MUSD時,不會得到1:1的匯率,事實上會在池子里留下一些MUSD。這意味著BPT的價值可以暫時被夸大,這使得攻擊者可以隨意操縱價格,隨后將金庫流動性耗盡。?這一事件表明,價格預言機并不總能被方便地貼上標簽,開發者需要警惕預言機攝取的是什么樣的數據,并考慮這些數據是否能被無權用戶輕易操縱。?

案例五:HarvestFinance攻擊事件

2020年10月26日,一個不知名的用戶入侵了HarvestFinance的流動池,使用的技術你現在可能已經猜到了。你可以去閱讀官方的事后報告,但我在這里簡單總結一下:攻擊者執行交易,將Curve池中USDC的價格壓低,在這時用較低的價格進入Harvest池,然后逆轉之前的交易恢復USDC價格,并以較高的價格退出Harvest池。這個最終導致超3300萬美元的用戶損失。?

給開發者的建議

該如何保護協議不被攻擊?

現在,我希望讀者已經認識到上文這些案例共同點——如果不做適當的預防措施,攻擊者可能會欺騙協議,讓其把錢交到他們手里。雖然目前沒有萬能的解決方法,但這里有一些過去對其他項目有效的解決方案,也許其中一個也會適用于你。?

建議一:不要跳入深度不足的市場

就像跳入游泳池的淺灘一樣,跳入深度不足的市場也是痛苦的,有可能會造成足以永遠改變你生活的重大損失。因此,在考慮使用的具體復雜的價格預言機前,請考慮代幣的流動性是否有跟你的平臺相匹配的充足流動性。?

建議二:一鳥在手勝于雙鳥在林

在Uniswap上看到潛在的兌換匯率可能會令人著迷,但在真正完成交易、代幣放在你的錢包里之前,沒有什么是最終確定的。同樣,確定兩種資產之間匯率的最好方法是直接交換資產。這種方法很好,因為不能回撤,也沒有萬一。但是,對于借貸平臺等需要持有原始資產的協議來說,可能就不適用了。?

建議三:在去中心化預言機中引入人為的延遲

依賴鏈上數據預言機所出現的問題,可以簡單總結為,預言機的時效性太強。既然如此,為什么不引入一點人為的延遲呢?寫一個合約,它可以用Uniswap這樣的去中心化交易所的最新價格來更新自己,但只有少數特權用戶提出請求時才會更新。現在即使攻擊者可以操縱價格,他們也無法讓你的協議真正使用它。?這種方法實現起來真的很簡單,而且見效很快,但存在一些缺點--在區塊鏈擁堵時,你可能無法像你希望的那樣快速更新價格,而且你仍然容易受到三明治攻擊。另外,現在你的用戶需要相信你真的會保持價格更新。?

建議四:增加交易延遲

操縱價格預言機是一個對時間敏感的操作,因為套利者總是在觀察,并希望有機會優化任何次優市場。如果攻擊者想把風險降到最低,他們會希望在單筆交易中完成操縱價格預言機所需的兩筆交易,這樣就不會有套利者跳到中間作梗。作為協議開發者,如果你的系統支持的話,可能只需要將用戶進出系統之間的時間間隔,增加至少1個區塊的延遲就可以了。?當然,這可能會影響到可組成性,并且礦工與交易員的合作正在增加。在未來,不良行為者可能會在多筆交易中進行價格預言機操縱,因為他們知道與他們合作的礦工會保證沒有人可以跳到中間,從他們的收益中分一杯羹。?

建議五:時間加權平均價格(TWAP)

UniswapV2引入了一個TWAP預言機,供鏈上開發者使用。有文檔詳細地介紹了該預言機提供的具體安全保障。一般來說,對于長期沒有鏈上擁堵的大型資產池來說,TWAP預言機對預言機操縱攻擊有很強的抵抗力。不過,由于其實施的性質,在市場波動較大的時刻,它的響應速度可能不夠快,而且只適用于鏈上已經有流動性的代幣資產。?

建議六:M-of-N報告者機制

有時候人們會說,如果你想把一件事做好,你就自己去做。如果你召集N個值得信賴的朋友,讓他們提交他們認為合適的鏈上價格,最好的M個答案匯聚成當前的價格,那會怎么樣??如今很多大型項目都在使用這種方法。Maker運行了一組由可信實體運營的喂價來源,Compound創建了OpenOracle,并擁有Coinbase等報告者,Chainlink聚合了Chainlink運營商的價格數據,并在鏈上公開。只要記住,如果你選擇使用這些解決方案之一,你現在已經將信任委托給第三方,你的用戶也必須這樣做。要求記者在鏈上手動發布更新也意味著在市場高度波動和鏈上擁堵的時候,價格更新可能無法及時到達。?

結語

價格預言機是DeFi安全性的一個重要組成部分,但往往被忽視。安全地使用價格預言機是很難的,而且有很多方法可以讓你和你的用戶都吃虧。

在這篇文章中,我們介紹了過去操縱價格預言機的例子,并確定在交易過程中讀取價格信息可能是不安全的,可能會導致災難性的財務損失。我們還討論了一些其他項目過去用來打擊價格預言機操縱的技術。不過最后,每一種情況都是獨特的,你可能會發現自己不確定自己是否正確使用了價格預言機。如果是這種情況,請隨時聯系我們尋求建議。?特別感謝DanRobinson和GeorgiosKonstantopoulos對這篇文章的評論,感謝@zdhu_和mongolsteppe指出的錯誤。?

附2020年閃電貸黑客事件

Tags:USDETHSYNTHEusdc幣是什么意思beth幣值錢嗎syn幣發行價The Vault

DAI
BLOC:火星一線 | 加密資產安全公司Fireblocks完成3000萬美元B輪融資,Paradigm、Galaxy Digital等參投

文|梁雨山 火星財經APP一線11月19日報道,加密資產安全公司Fireblocks宣布完成3000萬美元B輪融資,由Paradigm領投.

1900/1/1 0:00:00
穩定幣:good全新來襲

一些看不見的改變,正在發生。good作為全球化數字資產交易平臺,自2018年7月上線以來,歷經三年的發展和積淀,用戶規模現已達到百萬級別.

1900/1/1 0:00:00
比特幣:比特幣升破18000美元大關!年內暴漲154%,投資者還能進場嗎

一枚比特幣,目前值18204美元,按目前的匯率換算相當于11.92萬元人民幣,一枚虛擬幣可以買下一輛家用緊湊型小轎車。而幣圈從業者還堅定看漲:“漲到2萬美元只是時間問題”.

1900/1/1 0:00:00
ETH:?陸百川11.20以太坊早間行情分析及操作策略

?耐心之樹,結黃金之果,忍耐和堅持是痛苦的,但它會逐給你好處,不經歷風雨,長不成大樹,不受百煉,難以成鋼。我是陸百川,如果你近期無法掌控方向,或者虧損嚴重想東山再起,都可以提供幫助.

1900/1/1 0:00:00
PHI:大唐財金11.18BTC晚間 二連走出提醒及后續操作策略

再次恭喜第一波止盈后續跟上晚間第二波操作的朋友,再次達到完美止盈點位,一波下跌到達了17772.晚間兩單共獲取450點左右的利潤,做10手的話就是4500U的利潤穩健的朋友可以先行離場.

1900/1/1 0:00:00
NFT:選擇雷達生態七大理由?

第一雷達生態承諾前期面向全國甚至全球招募合作商家并且平臺不收取任何傭金不與雷達商家建立任何推廣關系第二商家入駐上架產品價格由商家自己定每單送多少pyc自己定Cardano鏈上NFT銷售總額突破6.

1900/1/1 0:00:00
ads