前言
2020 年 7 月 1 日,VETH 合約遭遇黑客攻擊。慢霧安全團隊在收到情報后對本次攻擊事件進行了全面的分析,下面為大家就這次攻擊事件展開具體的技術分析。
攻擊細節
本次攻擊交易如下 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224
通過交易概覽可以看到攻擊者在 Uniswap 中使用 0.9 ETH 兌換成 VETH,然后使用 VETH 在 Vether 合約中進行操作,最終盜走巨額的 VETH。
Bitroo平臺上線,并推出BTC算力租賃產品:據官方消息,Bitroo平臺今日上線并推出BTC算力租賃產品,用戶可以購買螞蟻礦機S19 Pro 45天和90天的算力套餐,10TH/s起售,靜態收益率可達8%-12%。
Bitroo是一個專注于讓普通用戶更輕松地參與比特幣挖礦的平臺,提供便捷的比特幣算力租賃和轉售服務,專業的比特幣礦機售賣、維護和托管服務,以及相關數字資產金融服務。[2023/7/13 10:52:06]
現在使用 OKO 合約瀏覽器對具體的攻擊細節進行分析(下圖只展示一部分)https://oko.palkeo.com/0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224/
地址0xC333向Binance存入了31500枚COMP:金色財經報道,據Lookonchain監測,地址0xC333剛才向Binance存入了31,500枚COMP(價值124萬美元)。而地址0xC333在12小時前COMP價格暴漲后立即將9201枚COMP(價值35.8萬美元)存入交易所。這些COMP是從Robinhood的錢包收到的,由Jump Trading托管。[2023/6/26 21:59:59]
通過分析交易內具體的細節可以發現:攻擊者先創建了一個合約0x47Ed415006C6F8052Fff05fe983f31D6D24B8fDB 通過此合約對 Vether 合約中的 changeExcluded(unknown37217349) 函數與 transferFrom 函數進行了調用。
外媒:Circle向NYDFS舉報稱Binance沒有足夠儲備支持其BUSD代幣:金色財經報道,Circle在2022年秋季向紐約金融服務部(NYDFS)舉報,抱怨區塊鏈數據顯示Binance沒有足夠的儲備來支持其通過Paxos發行的BUSD代幣。NYDFS發言人告訴路透社,Paxos沒有以“安全可靠”的方式管理BUSD,因此“違反了其對Binance和Paxos發行的BUSD客戶進行量身定制的定期風險評估和盡職調查更新的義務”防止不良行為者使用該平臺。”NYDFS指示Paxos停止鑄造BUSD。Paxos同意停止鑄造新的BUSD代幣,但在周一發布的新聞稿中表示,其發行的所有BUSD代幣均由以美元計價的儲備完全支持。另據報道,Paxos否認了關于聯邦銀行監管機構的美國貨幣監理署(OCC)可能會要求Paxos撤回其對完整銀行牌照的申請(Paxos在2021年收到了OCC的臨時銀行牌照)的傳聞。(彭博社)[2023/2/14 12:04:58]
接下來對這兩個函數的具體代碼進行分析:
CoinShares:上周數字資產投資產品凈流出680萬美元:金色財經報道,據CoinShares報告顯示,上周數字資產投資產品凈流出680萬美元。其中,比特幣投資產品凈流出1080萬美元,以太坊投資產品凈流入510萬美元,做空比特幣的投資產品凈流出350萬美元。[2023/2/13 12:04:24]
可以看到在 transferFrom 函數中,先對 mapAddress_Excluded[msg.sender] 進行了 if 判斷,具體邏輯是mapAddress_Excluded[msg.sender]為 false 時,將會檢查對攻擊者合約的授權額度,然后調用_transfer函數進行轉賬。而這個邏輯顯然走不通,攻擊者合約是沒有任何授權額度的。因此mapAddress_Excluded[msg.sender]只能為 true ,然后直接調用_transfer函數進行轉賬。
ICO發起人Ian Balina被控違反聯邦證券法:金色財經報道,加密貨幣發起人伊恩·巴利納(lan Balina)被指控違反聯邦證券法,因為他在推廣和隨后轉售與2018年首次硬幣發行(ICO)相關的代幣。(Coindesk)[2022/9/20 7:07:04]
接下來具體分析該如何將mapAddress_Excluded[msg.sender]設置為 true:
通過查看合約可以發現:
合約在初始化時只將address(this)和burnAddress的mapAddress_Excluded置為 true,那么可以肯定還有其他邏輯可以設置mapAddress_Excluded,通過分析 Vether 合約可以發現changeExcluded函數可以實現對mapAddress_Excluded的設置。
通過分析changeExcluded函數可以發現其可見性為external,因此攻擊者合約可以直接調用changeExcluded函數,此時攻擊者合約的mapAddress_Excluded為 false,所以會進入 if 的邏輯中。
接下來對 if 邏輯內的代碼進行具體分析:
在進行 if 邏輯后需要先支付手續費,具體為上方代碼塊中的第 3 行,那這個手續費是從哪里來呢?答案就是攻擊者最初轉入合約中的 0.9 ETH。
圖中可以看到,通過 0.9 ETH 兌換成約 138 VETH。
通過計算代碼中的mapEra_Emission/16我們可以得到攻擊者需要支付的手續費:我們讀取合約中的 mapEra_Emission可以知道 mapEra_Emission為 2048。
此時計算mapEra_Emission/16可得手續費為 2048/16 = 128 VETH,而攻擊者兌換了約138 VETH 是足夠用來支付手續費的,因此便可以通過上方代碼塊中的第 4 行將攻擊者合約的mapAddress_Excluded置為 true。
創建攻擊合約,通過 Uniswap 將 0.9 ETH 兌換成約138 VETH(此處換幣為了后續支付手續費)
調用 Vether 合約中的changeExcluded函數并利用先前在 Uniswap 兌換的約 138 VETH 支付 128 VETH 的手續費,然后將mapAddress_Excluded置為 true
調用 transferFrom 函數,利用mapAddress_Excluded為 true,直接進行轉賬操作
拿錢走人
0xfa2700e67065bc364136b5e7f57112083cb2a0cd
0x75572098dc462f976127f59f8c97dfa291f81d8b
修復建議
此次攻擊主要利用 Vether 合約中changeExcluded函數的可見性為external且未有權限限制,用戶可以直接進行外部調用為攻擊創造了必要的條件。因此應做好對changeExcluded函數的權限或可見性的限制,從而避免任意用戶可以直接外部調用changeExcluded函數。
最近 DeFi 概念風靡區塊鏈世界,拉動了大量 DeFi 項目市值的暴漲。而作為所有 DeFi 項目都離不開的預言機,也迎來了大漲.
1900/1/1 0:00:00在數字經濟的不斷滲透下,以區塊鏈為代表的新一代信息技術正加速向實體經濟融合滲透,并催生發展新動能、釋放發展新活力。7月14日,人民網正式發布《中國移動互聯網發展報告(2020)》.
1900/1/1 0:00:00自從 5 月份比特幣區塊獎勵減半塵埃落定之后,我們可以看到整個加密行業的目光焦點轉移到了 ETH 2.0、IPFS 以及 DeFi 上.
1900/1/1 0:00:00本文結構: 比特幣最大的謊言是什么?為什么會出現這樣一種論斷?為什么錯誤:金融左派的理想主義后市行情的重要參考指標:納斯達克100指數 總結 關于比特幣長期價值的各種論點在市場上已經有很多年.
1900/1/1 0:00:00王永利:作者系中國銀行原副行長、深圳海王集團首席經濟學家“數字貨幣一本賬”或是央行數字貨幣最可能實現且最有價值的模式突破。那樣,央行才能全方位全流程監控全部數字貨幣,又不影響金融體系的基本穩定.
1900/1/1 0:00:00暴走時評:區塊鏈技術可以幫助建立一個自我主權的金融體系,而捍衛這種體系至關重要的隱私權則應當歸屬于人民。與流行的看法相反,隱私并不是為那些試圖遮遮掩掩的人準備的,而是為那些失去一切的人準備的.
1900/1/1 0:00:00