以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads

深度解析:NBA的16進制合約漏洞是怎么被科學家薅禿嚕皮的?_INT:區塊鏈

Author:

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

今早一覺睡起來看群里大家都在討論昨晚NBA帶給科學家的狂歡,據說有人直接freemint了100個,按照現在0.4ETH的地板價也有一百萬人民幣了,原由是合約又出現了漏洞,所以來看看到底是怎么回事。

NBA于昨日發售了他們的NFT系列TheAssociationNFT,將240個球員各制作了75個NFT,總共供應18000個,白名單持有者可以freemint1個,這句話重點圈起來,之前的講過的Gh0stlyGh0sts的那篇文章也是freemint,只需要繳納gas費就可以mint到坐等升值,在肉眼可見的獲利空間下如果能再發現點合約漏洞,比如繞過白名單或者繞過mint1個的限制,那不得把羊毛薅禿嚕皮了,所以每當出現這種NFT項目都會有大量科學家盯著找漏洞,NBA這次整了個王炸,白名單限制和mint1個限制都被攻破了。

這次漏洞對于辛辛苦苦干白名單的用戶也是很大的打擊,沒有白名單的能mint也就算了,還可以無限mint,導致把有白名單的用戶名額都搶了,甚至很多用戶當初都是在場外花費幾千美金購買的白名單。并且在mint時涌進去一大堆科學家導致gas費飆升,白名單用戶也受了無妄之災被迫繳納更多gas,所以也有大量的用戶在維權哭訴,白名單用戶在DC哀嚎一片。

這的問題主要是兩個情況導致的:

1.用戶繞開官網,直接通過matemask用別人已經產生的16進制InputData與合約直接交互。

2.合約對于mint的白名單校驗存在漏洞。?

鏈上ChainUP WaaS聯盟與VirgoCX達成深度戰略合作:據官方消息,鏈上ChainUP WaaS聯盟宣布與VirgoCX交易所達成深度戰略合作,將為VirgoCX提供全方位的WaaS聯盟服務,包含主鏈開發接入、主鏈技術維護、主鏈資產托管等,雙方就區塊鏈技術應用落地、區塊鏈金融服務、資金安全等方面深度合作。

VirgoCX是加拿大Top5合規的數字資產交易平臺,是加拿大金融交易和報告分析中心(FINTRAC)的持牌MSB機構。VirgoCX憑借其優質的流動性、一流的技術和經驗、穩定的銀行合作關系,持續安全順暢地為用戶提供數字資產交易及法幣服務。

WaaS聯盟作為企業專享的數字資產托管及金融服務平臺,是鏈上ChainUP集團依托3年時間所服務的600多家企業客戶技術服務經驗,提供主鏈資產托管、節點服務、主鏈定制開發、熱門幣種一鍵接入、共管錢包、借貸理財等多種功能服務,聯盟內部企業轉賬 0手續費、實時轉帳,同時企業通過WaaS聯盟提供的借貸、理財等多種金融服務可有效提升資金使用效率與沉淀資金價值。目前已有超過500家企業加入鏈上ChainUP WaaS聯盟。[2021/1/6 16:32:49]

我們先來講第一個,先考大家一個知識,與智能合約進行交互mint的方式都有哪幾種?

首先大家肯定會說,不是在網站上點一個“mint”按鈕去調用智能合約來mint嗎?

這是最常規的也是所有項目方都希望我們進行的一種操作,大家應該都有蹲在屏幕前狂戳mint按鈕搶公售的經歷。

另外有經驗的同學會說,還可以直接打開區塊鏈瀏覽器如etherscan,找到項目方的合約地址,在readcontract和writecontract里對合約進行操作,很多同學都是通過這種方式搶公售的,因為你在官網里點擊mint,前端要再觸發請求去合約進行操作,合約再完成執行,而你直接在etherscan里操作合約會跳過第一步,速度更快,對于這個方式不了解的可以看我之前的文章怎么通過看懂etherscan了解NFT項目情況?

動態 | TopChain深度布局斯里蘭卡戰略資源產業:據悉,拓撲鏈TopChain于前不久赴斯里蘭卡與當地政府展開會談并達成國家戰略資源開發合作意向。本次會談中,雙方圍繞斯里蘭卡當地寶石礦產開發、房地產及特色農業等重要產業進行了合作方案討論,旨在通過拓撲鏈TOPC深度打開礦產、房產和農 業市場,面向亞洲地區廣泛招商引資。作為該國新任總統戈塔巴雅·拉賈帕克薩的朋友及重要合作伙伴,拓撲鏈創始人焦光明曾多次參與斯里蘭卡國際貿易合作和戰略資源開發,他表示TopChain將 持續推進雙方各領域的密切協作使TOPC成為上述產業投資憑證,實現取長補短、多方共贏。[2020/2/16]

但是這種方式遇到兩種情況是行不通的,一種是項目方根本沒有開源它的合約,或者是項目方在合約接口里必須要求你傳入一些如簽名等參數,而這種參數只能通過項目方的中心化服務器來生成,所以強制你必須要通過項目方的官網進行操作。

其實還有第三種,直接通過matemask錢包來和合約進行操作。

大家也許會對這一種很陌生,其實你已經在不知不覺中大量的使用了這種操作,轉賬的過程其實就是你用錢包直接交互合約的過程。

當我給某個地址轉錢時,首先點擊發送。

然后輸入收款地址,并輸入你要轉賬的金額。

這個過程大家已經非常熟悉了,這其實就是你與合約交互的過程,因為轉賬這種動作是我把錢轉給某個地址,該地址只需要收錢就好,不需要讓我輸入更多額外的信息,這時候你會問,mint可不一樣呀,至少我需要輸入mint幾個,還可能包括白名單校驗等,這些參數怎么輸入呢?

公告 | 平安銀行:各項相關業務深度借助區塊鏈等科技手段 旗下沒有陸金所:平安銀行在回復投資者提問時表示:平安銀行各項相關業務深度借助人工智能、區塊鏈、物聯網、大數據等科技手段。同時平安銀行還表示,目前沒有子公司,旗下沒有陸金所。[2019/10/17]

我們打開小狐貍錢包等設置,進入高級,然后下拉會看到有一個開關叫“顯示十六進制數據”,把它打開。

這個開關是干嘛的呢?需要先為你講清楚什么是十六進制數據。

你與任何一個合約交互都會為其輸入一定的數據,合約接收到這部分數據進行處理,這個數據定義了你要和合約的哪個接口函數交互,要給這個接口函數傳入什么參數等等,這些數據都會以16進制的形式進行壓縮。

你打開etherscan,隨意找到你曾經的一個交易記錄點擊進入詳情,然后一直下拉,你會在最下面看到inputdata,右邊有一長串字符,這就是你當時與這個合約的函數交互時輸入的數據轉成16進制后的樣子。

關鍵是這一長串無規律的數字也壓根都不懂呀,先不急,這里面是有規律的,雖然這次NBA的漏洞也不要求你讀懂16進制就可以直接用,但是本著求真的態度,我們還是要能理解這里面的含義。

首先我們可以看到開頭的0x后面有幾位字符,再往后全是0。

這幾位字符就代表著你調用的這個合約函數的編碼,每個函數會有一個自己的編碼。

動態 | 國家發改委及水利部印發行動方案,加強區塊鏈等技術與節水技術、管理及產品的深度融合:近日,國家發改委及水利部印發的《國家節水行動方案》指出,要加快關鍵技術裝備研發。推動節水技術與工藝創新,瞄準世界先進技術,加大節水產品和技術研發,加強大數據、人工智能、區塊鏈等新一代信息技術與節水技術、管理及產品的深度融合。重點支持用水精準計量、水資源高效循環利用、精準節水灌溉控制、管網漏損監測智能化、非常規水利用等先進技術及適用設備研發。[2019/4/18]

我們打開一個合約的交易記錄,你會看到調用的方法中有的是如mint、transfer這種可以理解的文字,有的是0x開頭的編碼,因為mint、transfer這種操作函數是非常標準的,所以etherscan自動幫你把它們的編碼翻譯成了文字,但是有的函數是項目方自己開發的,所以只顯示其原始編碼。

我們在測試網試一下使用這種方式和合約直接進行交互的流程,我找到了之前部署的一套合約,然后點擊進入已經完成的mint交易詳情中。

然后拉到最下面復制當時的inputdata。

將合約地址填寫進入后,并粘貼我剛才復制的inputdata,點擊下一步。

動態 | 泛融與軟銀中城科技深度合作聯手打造混合共識公鏈:泛融科技與軟銀旗下中城智慧科技于11月12日簽署了關于聯手研發全球首條多鏈+VRF+DAG混合共識的書面合同。泛融科技創始人譚宜勇博士對于此次合作表示:傳統區塊鏈共識算法與分布式技術,效率低下,資源浪費嚴重,難以滿足現實生活中的龐大業務場景。而采用VRF+DAG的方式,可以大量節省計算機資源使用,并且可以保證去中心化的安全性能之上,盡可能提高交易效率(TPS),大幅度的提高拓展性。使區塊鏈的各層效率將得到顯著提升。 此次泛融與中城聯手打造的區塊鏈公鏈,構建節點最高達2100個,將廣泛應用于區塊鏈溯源及藝術品認證行業,未來,泛融會通過自身強大的技術優勢將區塊鏈技術推廣到更多領域。[2018/11/15]

然后到了繳納gas費的步驟。

我們可以點擊數據看一下,果然這里功能類型是Mint,沒錯就是mint函數,說明我們成功的用之前的16進制inputdata調用到了合約。

然后點擊確認繳納gas費,到etherscan上看一下,成功了!

好了到這里我們已經很清楚的知道用已經存在的交易的16進制數據可以原模原樣的執行一次合約函數。

我們剛才講到這次問題出現的原因第二點是合約校驗白名單出現了漏洞。這個漏洞給了科學家用16進制手段薅到到機會。

接下來我們看合約mint到底有什么問題,看過我之前的文章的讀者應該都清楚,在mint時一般都會經過幾層校驗,主要包括是否開啟mint校驗、數量校驗、白名單校驗等,如下圖NBA的mint合約所示,它有三層校驗:

batchNumber是用來校驗第幾批mint,這個不是我們今天要講的重點可以先略過。

重點是第二層的白名單校驗和第三層的mint數量校驗。

重點來了,第二層校驗用到了一個叫verify的函數,傳入了一個info參數,這是用來校驗當前用戶是否在白名單,問題就是出在了這里。

在解釋白名單校驗的問題之前,我們有必要先了解一下常見的2種白名單校驗方式,在NFT行業初期,那時候很多項目的白名單都是一個個的錄入的,然后在mint時校驗一下當前用戶的地址是否能夠匹配到白名單,每錄入一個都要繳納一次gas費,成本投入極高,我周圍就有人僅錄入白名單就花費了數萬美金。

逐漸的有人意識到這種方法又貴又笨,于是采取了一種技術難度較高但更節省gas費的方式如梅克爾樹這種加密簽名驗證,它的原理就是將白名單不要存儲在鏈上合約中,而是放在鏈下由項目方自己保管,當用戶在官網mint時根據用戶的錢包地址用算法生成一個簽名,NBA這次使用的就是加密簽名方式的校驗。

具體的加密原理和代碼實現方式講起來就太復雜了先略過,感興趣的可以自己去學習橢圓加密算法、梅克爾樹這些內容。我們先了解原理即可,我們現在只需要知道這個驗證的方法是需要輸入一個錢包地址,校驗該地址是否存在于白名單,如果存在則返回一個簽名。

這時候你可能會隱約覺得有問題,既然校驗的方式是輸入地址返回結果,那我如果用剛才說的16進制交互的方法,我把白名單用戶已經執行的交易16進制數據輸入進去,不就可以完成“白名單mint”了嗎,這就相當于是指紋識別開門,你把有權限人的手指頭剁下來放在識別機上也一樣可以進門。

這里有個問題是如果項目方又多加了一層校驗比如mint者地址和校驗白名單地址必須是一樣的,即你解鎖的手指頭和進門的人必須得是一體的,這個漏洞也就堵住了,可偏偏NBA還就沒有堵住。

我們再回顧一下代碼,先用msg.sender獲取了當前執行合約的用戶地址,在最終執行mint時傳入的是這個地址。

而在mint前校驗的是傳入一個叫info的參數,這個info的參數里面包含的地址是官網獲取到操作官網用戶的地址后傳進來的。

明白問題所在了嗎?有白名單的張三在官網點了mint,官網把張三的地址傳入了info后給到合約校驗通過,然后合約再執行mint時再獲取一遍當前正在執行的張三地址,把NFT轉給他,但是!但是沒有去判斷此張三是否為彼張三呀!他沒有去校驗這兩個地址是否為同一個。

所以我完全可以先找到張三的交易記錄,然后把他的16進制復制粘貼到錢包里執行交易,這時候在校驗白名單時用的是張三的地址,所以會校驗通過,但是mint時用的是我的地址,因為是我正在和合約進行交互。

破案了!精不精彩!我把張三的手指頭砍下來進到了金庫!

我們看一下規規矩矩用白名單mint的用戶他們的16進制長什么樣,可以看到這個地址他mint了1個NFT成功了。

然后我們看一下16進制,有兩個關鍵點,數字1代表著他mint了1個,下面的地址就是他自己的地址,對上了。

我們再看一個昨天傳遍科學家圈的一次擼了69個的巨能擼干了點啥,以下為他的地址和mint的100個NFT。

我們來看一下他的16進制都是什么,先看到45,這是什么意思呢?這不是代表著數量嗎?可不是1也不是64呀,因為64的16進制就是45,所以這位巨能擼把1改成了45從而擼擼64個。

你會疑惑不是說有限制每人只能1個嗎?這里就又是個漏洞,我們看到代碼確實有限制,mint時你的持有量不能超過1,但是我mint的時候是0呀,我mint一萬個這個限制也管不住我....不知道這個合約工程師在想啥。

接下來我們回到16進制數據,看那個合約地址,你會發現和巨能擼的對不上,說明巨能擼是把他的手指頭砍下來解鎖了,我們來看看是哪個倒霉蛋。

進入他的地址看到這小子也挺有錢賬上躺著30個以太,被擼了也不算虧。

然后看到他的交易記錄確實在昨晚mint了一個NBA,看來巨能擼就是拿著他的16進制開鎖的。

這應該是我寫過最精彩的一篇文章,猶如破案一般層層抽絲剝繭為大家講清楚了科學家是怎么把羊毛薅干凈的,也是我寫過最累的一篇,耗時整整5個小時,寫作不易,如果對你有用麻煩大家多轉發擴散哈。

我之前的文章中多次強調,web3的世界因為其開源性使得作惡空間很多,當然科學家的行為是否是作惡有待商榷,但是作為項目方一定是有責任保障自己用戶利益的,需要對技術有敬畏之心,代碼review一定要嚴謹。

Tags:INTMINMINT區塊鏈kucointopMiner ArenaMINT幣區塊鏈專業是什么意思

歐易okex官網
Luna基金會長期將購入100億美元的比特幣 用破銅爛鐵換取真金白銀?_UNA:FairLunar

3月28日,近日,Luna基金會又高調購入了2830枚比特幣。自3月22日以來,Luna基金會增持動作頻頻,平均兩天就有約3000枚比特幣入賬.

1900/1/1 0:00:00
涉比特幣判決年增近千件 財產屬性認定難_ZIP:比特幣

幾天前,一位律師公開了北京市仲裁委近期的一次裁決。裁決書認為:“包括本案的比特幣在內的虛擬貨幣屬于虛擬財產,受到法律的保護.

1900/1/1 0:00:00
納米比亞央行計劃推出CBDC_NAN:數字貨幣和加密貨幣的區別

4月9日消息,隨著加密貨幣在全球的興起并且越來越多地被采用,納米比亞央行最近發布其金融科技監管框架,并宣布有意推出其中央銀行數字貨幣。納米比亞銀行表示,“我們不能忽視CBDC,這是一個現實.

1900/1/1 0:00:00
金色Web3.0日報 | 韓國或將出臺首個NFT監管規則_USHI:NFTPUNK幣

DeFi數據 1.DeFi代幣總市值:1303.02億美元 DeFi總市值數據來源:coingecko2.過去24小時去中心化交易所的交易量:411.

1900/1/1 0:00:00
金色觀察|Paradigm:零知識證明挖礦或媲美PoW挖礦市場_區塊鏈:Electrify.Asia

零知識密碼學是過去50年計算機科學中最顯著的創新之一。零知識證明(ZKP)提供了獨特的屬性,使其成為各種區塊鏈擴展和隱私解決方案的重要組成部分,包括像StarkNet這樣的ZKrollup、像A.

1900/1/1 0:00:00
綠色藥丸電臺:Vitalik談公共物品融資和加密生態_ITA:VIT

內容要點 二次方融資是一個自我完善的系統,要以開放的思維來調整機制,并保持其簡單性;機制的改進應以低限度微調方式進行.

1900/1/1 0:00:00
ads