近日,CertiK監測到兩起針對FETA以及BEVO反射機制的通縮幣項目的閃電貸攻擊事件。為幫助讀者對此類攻擊事件有更全面的了解,本文將對此類通縮幣項目的背景、攻擊過程、攻擊原理以及防范方法進行具體分析并總結,期望各位讀者能對該類型攻擊有較為深入的理解和啟發。
背景
通縮幣是一種隨著交易進行不斷有token被銷毀,發行總量因此不斷減少進而實現潛在升值的數字貨幣。
隨著2021年Safemoon項目的一炮而紅,通縮幣項目在當時幾乎橫掃主流的ERC20項目,備受矚目。
對于通縮機制本身,大部分項目都使用了Reflect這一最經典的通縮獎勵分配機制。Reflect機制即“反射”機制,可以將通縮產生的收益讓所有的持幣者根據持幣量平均分配。在該機制下,用戶手里的token有了兩種計量方式,即:“反射”前的實際token數量,和“反射”后的反射token數量。
數據:ETH代幣供應趨于通縮至合并前的水平:10月22日消息,鏈上數據顯示,ETH代幣供應趨于通縮至合并前的水平。自10月8日以來,XEN的引入與圍繞新memecoins的大量交易促成了交易量的擴大和交易費用的增加,進而導致了銷毀的ETH的增加。(The Block)[2022/10/23 16:35:40]
該機制中,通縮的來源是對于token交易者的懲罰性稅收,在每次交易時對交易賬戶“反射”后的token數量進行一定比例的收稅和銷毀,從而改變了“反射”的比率,使得每個普通持幣者都可以獲得更多的“反射”前的token作為獎勵。
由此可見,Reflect是一種靜態獎勵機制,為了鼓勵長期持幣者而懲罰頻繁交易者,使得更多用戶愿意持有和參與,最終促使幣價趨于穩中有升的態勢。
有趣的是,包含Reflect機制的智能合約很多都會加入一個函數,即`deliver()`。該函數的作用是調用者以“犧牲自我”的方式,直接銷毀自己的token,從而改變“反射”機制的比率,使每一位持幣者得到獎勵。
V神:目前距離以太坊通縮還差800多枚ETH:9月5日消息,對于9月3日為ETH首個通縮日,銷毀量比區塊獎勵多352枚ETH,V神(Vitalik Buterin)表示,從技術上講,不完全是這樣。如果考慮每日PoS獎勵的1200 ETH,目前距離通縮還有超800 ETH。[2021/9/5 23:01:12]
這種犧牲自我利益為所有持幣者謀福利的做法不失為一種“慈善捐贈”,調用這個函數的人就好像“天使”一般。然而,天使的背后也有可能是魔鬼。CertiK最近監測到的兩起攻擊事件,正是利用了`deliver()`函數改變“反射”機制的比率,對通縮幣在去中心化交易所的交易對地址發起了閃電貸攻擊,盜走交易對中的大額WBNB。
攻擊案例分析
2023年1月31日,CertiK監測到通縮幣項目FETA遭受到閃電貸攻擊。攻擊者通過閃電貸借到18.5個WBNB后,通過調用FETA的`deliver()`函數以及去中心化交易所中FETA-WBNB交易對合約的`skim()`函數,在歸還閃電貸借款之后仍獲利10.34個WBNB。
彭博社:通縮前景或將對一些比特幣投資者造成打擊:4月20日,彭博社發布的一份新報告顯示,由于通縮的持續作用,大宗商品價格和美國國債收益率的下降可能會持續下去。通縮前景可能會對一些將比特幣視為對沖通脹和貨幣貶值的對沖工具的加密貨幣投資者造成打擊。(CoinDesk)[2021/4/20 20:38:33]
無獨有偶,在前一日,CertiK還監測到另外一起類似的閃電貸攻擊事件,被攻擊對象是通縮幣項目BEVO,攻擊者通過類似的方法獲利144個WBNB。
這兩起攻擊事件看上去仿佛只需調用兩個十分普通的函數就可以攻擊成功,那么這種“魔法”究竟是怎么施展的呢?
我們不難發現,對于普通用戶地址而言,反射機制的邏輯以及`deliver()`函數的邏輯都是沒有問題的,甚至是非常高明的獎勵機制,否則通縮幣項目也不可能如此受到認可。問題恰恰在于“不那么普通”的地址——下面我們看看如果對去中心化交易所的交易對地址使用了“反射”機制究竟會發生什么。
共識實驗室吳少康:全球貨幣貶值能夠反襯出比特幣的通縮價值:4月14日 20:00,共識實驗室首席分析師吳少康做客MXC抹茶社區,就《減半利好已盡?比特幣能否帶動加密市場走出獨立行情》闡述精彩觀點。
吳少康認為:“美國進行無限量QE政策,實質上就是通過國債、MBS和商業票據三個渠道進行發錢,對全球各個國家進行一波收割,因為各個國家的美元儲備都不值錢了。那么各個國家也通過印鈔的方式,來抵御美元的貶值。全球貨幣貶值能夠反襯出比特幣的通縮價值,但價值并不等于價格,長期來看,比特幣的價值是提高的,而短期價格取決于現在人為操縱性較高的市場。“[2020/4/14]
首先,根據“反射”機制的代碼可知,在“反射”前后,用戶的token數量是通過乘以一個比率rate來相互轉化的,若我們設“反射”前的token數量為tAmount,“反射”后的token數量為rAmount,則有
聲音 | 火幣七爺:HT將實現絕對通縮:2月19日,火幣全球站CEO七爺在媒體直播中表示,銷毀非流通盤的做法有助于提升市場對于流通盤不再增加的心理預期,是一種通證模型的改進,火幣不會忽視任何一次改進的機會。關于HT非流通盤的銷毀,火幣已形成銷毀的具體方案,HT將實現絕對通縮。
七爺認為,平臺幣的內生價值來源于平臺的盈利能力和真金白銀的投入。對非流通盤的考量固然重要,但更本質性的做法應是提升平臺基本面,加大對流通盤的通縮力度。HT從2020年1月起銷毀周期將由季度調整為月度,可進一步加大對流通盤的通縮力度。火幣1月份幣幣+合約整體交易量月環比2019年12月提升 65%;火幣1月份銷毀405萬枚HT,比上季度月均銷毀水平提高51%,如果月均通縮率穩定在這一水平,年內HT實際流通盤通縮率將超過15%。[2020/2/19]
其中rate系兩種計量方式的總量之比,即
把rate帶入,我們可以得到用戶的實際token數量
對于所有加入“反射”機制的地址,由于每次有交易者在交易時都會交稅并通過銷毀減少一些rTotal,根據公式,在rAmount、tTotal不變的情況下,tAmount將會增加,即實現了靜態持有時的增值。
`deliver()`函數可以直接減少rTotal,同時保持tTotal不變,此時rate將會極具下降。若此時關注該token在去中心化交易所的交易對地址pair,則pair對應的balance,即用tAmount衡量的token數量會大幅增長。
而去中心化交易所的交易對智能合約作為數字貨幣的交換池,存儲了大量該交易對的兩種token,例如BEVO-WBNB。該智能合約提供了一個函數`skim()`,可以讓用戶把合約中token的balance數值和交換池中實際存儲的token數量reserve的差值取出來,正是這個方法讓攻擊者發現了套利空間。
根據上文所述,當調用`deliver()`函數時,rTotal減少會帶動pair的balance,即用tAmount衡量的token數量的大幅增長,然而pair里面實際存儲的token數量reserve并沒有發生變化,此時,兩部分的差值全部會被攻擊者調用`skim()`全部取出來。
然而想要調用`deliver()`函數,即完成初始的“捐款”,是需要啟動資金的。對于攻擊者來說,方法總比困難多——方法即為我們平時經常聽說的閃電貸。
也就是說,攻擊者只需在一個區塊之內將錢還上,就可以借到大量的錢用`deliver()`函數操縱交易對的balance。最終,只要通過`skim()`取出來并換成WBNB的錢比借到的錢多,攻擊者就完成了一次無風險套利。
總攻擊過程如下圖所示:
攻擊防御
知道了原理,那又該怎么預防呢?
能夠帶來嚴重損失的漏洞,或許在事情發生前就進行預防,并不十分復雜。根據CertiK安全專家的分析,攻擊者要想鉆空子,需要能夠改變合約中rTotal的數量,進而操縱合約中交易對的balance。
在此,CertiK專家建議:
要么在設計合約的時候直接剔除有風險的`deliver()`函數,要么直接將交易對地址剔除Reflect機制,即在代碼中或合約部署后,調用`excludeFromReward()`將pair地址填入,使其剔除反射獎勵機制即可。此時pair的balance將無法被攻擊者通過`deliver()`函數所操縱。
寫在最后
CertiK通過兩起最近發生的通縮幣閃電貸攻擊事件,詳細講述了包含Reflect機制的通縮幣被攻擊的原理和預防方法,希望能給各位讀者有所啟示。
通縮幣作為最常見也是最經典的數字貨幣類型之一,至今仍然能被攻擊者抓住漏洞進行攻擊,主要原因也是項目方在智能合約設計時僅考慮到數字貨幣自身的智能合約邏輯,卻并未深入研究與去中心化交易所合約交互的過程,才釀成了如此的損失。
Tags:TOKETOKKENTOKENUpTokenHello Art TokenMeong TokenAlphaCar Token
Gate.io新用戶專享USDT鎖倉福利理財已上線,本期新增3天USDT鎖倉理財,活動期間註冊的新用戶參與理財.
1900/1/1 0:00:00親愛的用戶: 您好!CoinMark將於2022年2月16日20:00上線UMEE,並開通UMEE/USDT交易對,邀您體驗! 關於UMEE Umee是一個以DeFi跨鏈平臺為定位的底層區塊鏈.
1900/1/1 0:00:00本周BUSD的fud,以及之前美國監管部門提到的對穩定幣發行商的各種可能監管,中心化穩定幣面臨著不確定的市場預期.
1900/1/1 0:00:00Gate.io將延遲至2023年2月15日02:30AM開啟Blur(BLUR)交易。關于Blur(BLUR)Listing延期事宜:因為項目方官方發布關于用戶空投認領延遲,Gate.io將配合.
1900/1/1 0:00:00?親愛的用戶:您好!CoinMark為慶祝2周年,并將品牌升級2.0,現開啟“幣瑪2周年,交易狂歡送”活動.
1900/1/1 0:00:00簡單來說Cardano上的鯨魚交易量激增,平均每天有1,700筆交易,價值100,000美元或更多。ADA的積極指標包括主要利益相關者的積累,由于最近的價格調整而降低了投資者的風險.
1900/1/1 0:00:00