前言
昨晚突然看到群里的一個消息,揭秘uniswap-defi項目漏洞-割韭菜新手法,心想還有這事?而且還是中英文介紹。
到底什么是DeFi?網絡上有很多關于?DeFi的定義,目前通用的定義是這樣的:DeFi是自己掌握私鑰,以數字貨幣為主體的金融業務這個定義包含三個層面的意思:
自己掌握私鑰
以數字貨幣為主體
金融業務
DeFi是DecentralizedFinance的縮寫,也被稱做OpenFinance。它實際是指用來構建開放式金融系統的去中心化協議,旨在讓世界上任何一個人都可以隨時隨地進行金融活動。
在現有的金融系統中,金融服務主要由中央系統控制和調節,無論是最基本的存取轉賬、還是貸款或衍生品交易。DeFi則希望通過分布式開源協議建立一套具有透明度、可訪問性和包容性的點對點金融系統,將信任風險最小化,讓參與者更輕松便捷地獲得融資。
幾年前區塊鏈行業還沒有DeFi這個概念,從默默無聞,一躍成為區塊鏈行業的熱門話題,DeFi只用了短短幾年時間。Uniswap作為完全部署在以太坊鏈上的DEX平臺,促進ETH和ERC20代幣數字資產之間的自動兌換交易,為DeFi發展提供了良好的支持。
DeFi 協議unshETH完成330萬美元種子輪融資:金色財經報道,旨在重塑新興流動性質押行業的去中心化金融協議unshETH已完成 330 萬美元的種子輪投資,該輪融資獲得了Soma Capital、MH Ventures和ICONIQ Capital的大量支持,種子輪投資者還包括EFENT、922 Capital、Electric Ant、Backend Capital、The LAO等。
據悉,unshETH 開發了一種新穎的 DeFi 原語,促進 ETH 流動質押協議之間的競爭,以促進驗證者去中心化,資金將用于加速 unshETH 的開發工作,最終目標是為用戶提供更佳的流動質押體驗。[2023/8/8 21:30:31]
作者抓住當下區塊鏈熱門話題DeFi作為文章主題介紹如何利用?uniswap-defi項目漏洞割韭菜。很顯然經過精心思考。
分析
打開教程鏈接,原文教程提醒
Full?open?source?code----only?for?research?and?testing,?don't?cheat?using?this?method
作者特別提醒:完全開放源碼----僅用于研究和測試,不要使用這種方法作弊。
區塊鏈游戲孵化器Seedify與DeFi黑客攻擊緩解工具Lossless達成合作:3月12日,據官方消息,區塊鏈游戲孵化器和Launchpad Seedify與DeFi黑客攻擊緩解工具Lossless達成合作。
通過與Lossless的合作,Seedify將通過其平臺孵化和推出的新區塊鏈游戲項目引導至Lossless。通過使用Lossless協議部署其代幣,這些項目將能夠保護自己以及代幣持有者避免因惡意攻擊行為而造成的潛在財務損失。Lossless還將利用其服務向Seedify引入孵化和啟動階段的區塊鏈游戲項目,使他們能夠利用Seedify生態系統的優勢,包括孵化、咨詢、合作伙伴、營銷和啟動服務。[2022/3/13 13:53:19]
教程中提到合約代碼可以在如下鏈接下載
Click?to?enter?edit?mode?and?copy?the?code?into?it?(download?address?of?the?contract?code:https://wwr.lanzous.com/i4MJOg6f2rg)
根據教程提供的鏈接,下載代碼查看
首先看到onlyOwner函數,而且條件判斷中的address是硬編碼的,這里說一下以太坊中的地址
DeFi協議Compound借款總量突破95億美元創歷史新高:金色財經報道,據最新數據顯示,DeFi借貸協議Compound總借款量突破95億美元創下歷史新高,本文撰寫時為9,501,084,426美元,24小時清算量達到539,856美元,總用戶數為385,346。[2021/9/4 22:59:45]
以太坊地址
以太坊中的地址的長度為20字節,一字節等于8位,一共160位,所以address其實亦可以用uint160來聲明。以太坊錢包地址是以16進制的形式呈現,我們知道一個十六進制的數字占4位,160/4=40,所以錢包地址ca35b7d915458ef540ade6068dfe2f44e8fa733c的長度為40。
很明顯,攻擊者特意使用uint160來編碼地址,起到了障眼法作用。如果不認真看,不會注意到這個address函數轉換后的地址。
通過對地址進行轉換
即:address(724621317456347144876435459248886471299600550182)?對應地址:0x7eed24C6E36AD2c4fef31EC010fc384809050926,這個地址即位合約實際控制賬戶地址。
DeFi基準利率今日為3.33%:金色財經報道,據同伴客數據顯示,08月04日DeFi去中心化金融基準利率為3.33%,較前一日下跌0.08。同期美國國債抵押回購率(Repo Rate)為0.05%,二者利率差為3.25%。
DeFi基準利率代表了DeFi融資難易程度,利率越高說明融資成本越高,利率越低說明融資成本越低。其與Repo Rate的利率差則便于DeFi與傳統市場作進行同類比較。[2021/8/4 1:33:31]
繼續往下看原文教程
首先部署合約
然后添加到?Uniswapv1?資金池
這里介紹下?Uniswap
UniswapV1
UniswapV1基于以太坊區塊鏈為人們提供去中心化的代幣兌換服務。UniswapV1提供了ETH以及ERC20代幣兌換的流動性池,它具有當前DeFi項目中最引人注目的去中心化、無須許可、不可停止等特性。
UniswapV1實現了一種不需要考慮以上特點的去中心化交易所。它不需要用戶進行掛單,不需要存在需求重疊,可以隨買隨賣。得益于ERC20代幣的特性,它也不需要用戶將資產存入特定的賬戶。UniswapV1模型的優點在于根據公式自動定價,通過供需關系實現自動調價。
BM:構建復雜高性能的DeFi EOS會是更好的選擇:今日,BM發推表示:“構建復雜高性能的DeFi,EOS會是更好的選擇。以太坊上的DeFi需要使用許多難用的組合來彌補交易延遲、gas攻擊、重組以及缺乏有序數據庫等缺陷。”[2020/8/15]
UniswapV1的運行機制的關鍵在于建立了供給池,這個供給池中存儲了A和B兩種貨幣資產。用戶在用A兌換B的過程中,用戶的A會發送到供給池,使供給池中的A增多,同時,供給池的B會發送給用戶。這里的關鍵的問題在于如何給A和B的兌換提供一個匯率。UniswapV1定價模型非常簡潔,它的核心思想是一個簡單的公式x*y=k。其中x和y分別代表兩種資產的數量,k是兩種資產數量的乘積。
假設乘積k是一個固定不變的常量,可以確定當變量x的值越大,那么y的值就越小;相反x的值越小,y的值就越大。據此可以得出當x被增大p時,需要將y減少q才能保持等式的恒定。為了做一些更實用的工作,將x和y替換為貨幣儲備金的儲備量,這些儲備金將被存儲在智能合約中。
即用戶可以把部署的合約可以添加到UniswapV1中,通過充入資產提供流動性,獲得該資金池產生的交易手續費分紅,過程完全去中心化、無審核上幣。
接著
You?don't?have?to?worry?that?you?will?lose?money,?because?other?people?can?only?buy?and?can't?sell?it??in?this?contract.?When?the?trading?pair?is?created,?you?can?change?for?another?wallet?(the?wallet?address?of?the?contract?can?be?bought?and?sold)?to?buy?it,?and?then?test?whether?it?can?be?sold.?Here's?the?information?for?selling`
這是為什么?看看代碼
合約代幣101行,require(allow==true),即轉賬地址from需要在allow這個mapping中為布爾值true。
而修改allow在addAllow函數中,且需要合約Owner權限。
通過合約Ownable代碼第13行可知,onlyOwner屬性中,只有地址為724621317456347144876435459248886471299600550182即前面提到的0x7eed24C6E36AD2c4fef31EC010fc384809050926用戶可以通過校驗,而且是硬編碼。這也是原文攻擊者為什么使用了以太坊地址的uint160格式來編碼地址,而不是直觀的十六進制地址。
最終部署的合約SoloToken直接繼承了Ownable合約
即只要用戶部署該合約,合約Owner權限都在攻擊者0x7eed24C6E36AD2c4fef31EC010fc384809050926手中。攻擊者可以隨時轉移合約權限。
在教程中攻擊者還提到
如果你想吸引買家,資金池必須足夠大,如果只投入1-2個ETH,其他人將無法購買它,因為基金池太小。即希望部署合約的用戶在資金池中添加更多的eth數量。攻擊者為什么要單獨Notice呢?
合約代碼第124行,mint函數,Owner權限用戶可以直接增發代幣。這是合約最關鍵部分。即攻擊者可以直接在合約中給指定地址增發代幣,然后利用增發得來的代幣去UniswapV1直接兌換合約部署用戶存放在?UniswapV1?資金池中的?eth?。這也是為啥教程作者著重提示多添加?eth?數量的根本原因。
截止目前,攻擊者地址0x7eed24C6E36AD2c4fef31EC010fc384809050926中已經獲利大約36eth。
總結
Uniswap?因無需訂單薄即可交易的模型創新引來贊譽,也因投機者和詐騙者的涌入遭到非議,在業內人士看來,Uniswap?的自動做市商機制有著特別的價值,作惡的不是Uniswap,但惡意與貪婪正在這個去中心化協議中一覽無余。
流動性挖礦點燃DeFi烈火,火勢燒到去中心化交易所Uniswap。它憑借支持一鍵兌幣、做市可獲手續費分紅,迅速成為最炙手可熱的DeFi應用之一。
財富故事在這里上演,某個新幣種可能在一天之內制造出數十倍的漲幅,讓參與者加快實現「小目標」;泡沫和罪惡也在此滋生,完全去中心化、無審核上幣,讓Uniswap成了人人可發幣割韭菜的溫床。
DeFi作為當下區塊鏈熱門話題,很容易吸引人們的注意。攻擊者利用人們貪圖便宜的好奇心理。使用所謂的?uniswap-defi項目漏洞?教程一步一步帶用戶入坑。以當下區塊鏈中最火的DeFi類為主題,分享了?揭秘uniswap-defi項目漏洞-割韭菜新手法?教程。如果用戶不注意看合約代碼,很容易掉入攻擊者精心構造的陷阱中去。成為真正的韭菜。
REF
UNISWAPissuingtokens-enhancingtokens(consumerscanonlybuybutcannotsell)
https://note.youdao.com/ynoteshare1/index.html?id=a41d926f5bcbe3f69ddef765ced5e27b&type=note?auto
代幣合約
https://wwr.lanzous.com/i4MJOg6f2rg
親愛的BKEXer:? ?? 今日數據:?2020年9月13日第四期DeFi挖礦寶收益率如下,收益幣種為USDT,請于17:30~18:00在您的個人賬戶查收今日收益.
1900/1/1 0:00:00親愛的CoinW用戶:幣贏跑腿計劃第二期“單個幣價保險”中承諾“針對跑腿計劃單個幣種,上線3日內,若一直處于破發狀態,直接補回該幣種成本差價”.
1900/1/1 0:00:00親愛的庫幣用戶 為了慶祝庫幣成立3周年,我們在9月5日開啟了以“三生萬物”為主題的三周年慶典月活動,與全球用戶一同分享這一特殊時刻.
1900/1/1 0:00:00鏈聞消息,DeFi合成資產協議LinearFinance已于新加坡時間9月14日上午8:00開放公開發售注冊,將分兩輪出售總共47,222,222LINA,第一輪以0.004美元的價格出售25.
1900/1/1 0:00:00金色財經訊9月14日消息,bZx官方發推特稱,針對bZx協議被攻擊一事,沒有資金有風險,債務將被清除,協議將不受阻礙地向前發展.
1900/1/1 0:00:00尊敬的LOEx用戶:由于PRC項目升級發展,應項目方要求,PRC將進行合約更換,從ERC20更換成TRC20,持有ERC20舊合約代幣的用戶將自動映射成TRC20新合約代幣,映射比例1:1.
1900/1/1 0:00:00