一、事件背景
Balancer官網上對于其具體功能的描述為『EasilyswapERC20tokens.Exchangetokenswithoutdeposits,bids/asks,andordermanagement.Allon-chain.』。簡單來說Balancer就是提供在鏈上進行tokens交換的區塊鏈智能合約應用。
2020年6月29日凌晨,Balancer項目的兩個資金池遭受攻擊。攻擊者在此次事件中獲利約46萬美元,資金池市商損失約50萬美元。
根據此次安全事件的具體過程,可以將此次事件比喻為攻擊者『偷梁換柱』。
二、抽絲剝繭還原攻擊者『偷梁換柱』經過
2.1、安全事件概述
?根據鏈上交易數據顯示:
1、攻擊者利用自建合約
對存在通縮貨幣STA的資產池
進行了攻擊;
2、攻擊者利用自建合約
對存在通縮貨幣STONK的資產池
成都鏈安:GYM Network 項目的GymSinglePool遭受攻擊:6月8日消息,據成都鏈安安全輿情監控數據顯示,GYM Network 項目的GymSinglePool遭受了攻擊。因為_autoDeposit函數未轉入抵押的代幣,攻擊者惡意調用了depositFromOtherContract函數記賬,并憑空提取了GYM token,目前2000BNB已進了Tornado Cash,3000BNB存放在攻擊賬戶中,價值70W美元的ETH轉入了以太坊。[2022/6/8 4:10:43]
進行了攻擊。
2.2、攻擊步驟簡介
攻擊者首先通過閃電貸借款大量WETH,而后使用借得的WETH將被攻擊資金池中的通縮貨幣兌換出來,僅留下1e-18個通縮貨幣。完成上述準備工作后,攻擊者開始發動攻擊,不斷使用1e-18個通縮貨幣兌換資金池內的其他代幣,以達到『偷梁換柱』的目的。直到池內資金基本被轉移完后,攻擊者將獲利存入如下地址:
0xBF675C80540111A310B06e1482f9127eF4E7469A
成都鏈安:fortress被盜金額已被轉換成1048eth并轉入了Tornado Cash:5月9日消息,據成都鏈安安全輿情監控數據顯示,fortress 遭受預言機價格操控攻擊,被盜金額已被轉換成1048eth并轉入了Tornado Cash。經成都鏈安技術團隊分析,本次攻擊原因是由于fortress項目的預言機FortressPriceOracle的數據源Chain合約的價格提交函數submit中,將價格提交者的權限驗證代碼注釋了,導致任何地址都可以提交價格數據。攻擊者利用這個漏洞,提交一個超大的FST價格,導致抵押品價值計算被操控,進而借貸出了項目中所有的代幣。
攻擊交易:0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf
攻擊者地址:0xa6af2872176320015f8ddb2ba013b38cb35d22ad
攻擊者合約:0xcd337b920678cf35143322ab31ab8977c3463a45[2022/5/9 3:00:21]
攻擊過程如下圖所示:
成都鏈安:BasketDAO遭到攻擊,導致用戶損失約120萬美元:據成都鏈安鏈必應-區塊鏈安全態勢感知平臺輿情監測顯示,BasketDAO遭到攻擊,導致用戶損失約120萬美元。通過鏈必追產品進行追蹤分析,發現大部分被盜資金都被存入了 TornadoCash,以下為受害者地址:[2022/3/30 14:27:04]
△圖1
此次事件發生后,Balancer團隊表示已對資產池進行審計,正在進行第三次審計,并將在UI界面啟用通縮貨幣黑名單,禁止用戶建立存在通縮貨幣的資產池。
2.3、漏洞原理詳細分析
在分析漏洞具體信息之前我們需要知道以下兩點:
1、Balancer項目允許個人建立資金池。資金池本質上是一個智能合約,用戶可以調用資金池的函數進行代幣兌換。資金池中可以存在多種貨幣,用戶可以使用資金池中存在的貨幣進行兌換,兌換的比例按照一種固定的算法,如圖所示:
分析 | 成都鏈安:盜竊Upbit交易所黑客開始測試向交易所充值:據成都鏈安反洗錢系統(Beosin-AML)監測顯示,Upbit攻擊者于28日下午17:08開始向0xf467816地址轉移60100ETH,并將少量ETH轉往可能隨機選取的中間地址。通過該地址,這筆小額ETH目前已經進入疑似火幣交易所錢包地址0x5401dbf7da53e1c9。目前攻擊者正在分散資金,且通過少量的ETH測試是否能夠成功進入交易所。[2019/11/28]
△圖2
我們以用STA兌換WETH為例:
?TokenAmountOut表示可以兌換出的WETH的值
?TokenBalanceOut表示當前池內的WETH的值
?TokenBalanceIn表示當前池子內的STA的值
?TokenAmountIn表示用戶輸入的STA的值
動態 | 成都鏈安面向聯盟鏈推出“一站式”安全平臺:據官方消息,成都鏈安面向聯盟鏈安全需求推出“一站式”安全解決方案,為聯盟鏈生態提供從安全設計、開發、安全檢測到運行時安全監控和管理等全方位的安全服務與支持。
?
“一站式”安全平臺主要包括:支持FISCO-BCOS、Fabric、以太坊、EOS等多個平臺的“一鍵式”智能合約自動形式化驗證工具Beosin-VaaS;Beosin-IDE智能合約開發工具;Beosin-Eagle Eye安全態勢感知系統;Beosin-Firewall防火墻;Beosin-OSINT 威脅情報系統;安全審計與檢測;安全顧問等服務。
?
成都鏈安作為最早專門從事區塊鏈安全的公司之一,核心團隊在安全領域深耕18年,申請區塊鏈安全相關軟件發明專利和著作權15項。平臺推出以來,已為微眾銀行區塊鏈、布比、云象、益鏈等多個聯盟鏈平臺提供了全套的“一站式”安全解決方案和安全防護。[2019/11/28]
?TokenweightIn表示STA的權重,為一個固定值,只能由資金池的管理者更改
?TokenweightOut表示WETH的權重,為一個固定值,只能由資金池的管理者更改
?SwapFee表示手續費,為一個固定值,只能由資金池的管理者更改
綜上所述,當一種貨幣STA在一個資金池中的存量較少時,也就是bI較小時,就可以使用STA兌換更多的WETH。
2、STA代幣是一種通縮貨幣,當進行轉賬操作時,會自動銷毀一定量的STA。如下圖所示:
△圖3
tokensToBurn即為每次交易銷毀的值,其銷毀數額是轉賬數額的1/100,如當數值為1e-18時,其銷毀值也是1e-18。銷毀值的計算源碼如下圖所示:
△圖4
△圖5
接下來我們對本次攻擊事件進行分析,以存在STA的被攻擊資金池為例。攻擊者向自建合約
發起了一筆交易
。在此筆交易中,攻擊者首先從閃電貸借出了104331個WETH,如下圖所示:
△圖6
而后使用借來的WETH兌換被攻擊資產池中的STA,因為STA是通縮貨幣,每次transfer都會使得STA銷毀轉賬金額的1/100。如下圖為一次兌換:
△圖7
這筆交易共進行了20余次兌換,使得被攻擊資金池中的STA余量為一個極小值后開始使用STA兌換其他代幣,如下圖所示:
△圖8
我們可以發現,在此筆交易中,攻擊者轉給被攻擊合約的STA個數是『0』,但卻扣除了1e-18個STA,這不符合正常兌換情況。于是我們對此進行深入分析,通過事件日志確定攻擊者發送了1e-18個STA。如下圖所示:
△圖9
由此可得出結論,在發送過程中,因為STA的通縮機制,發送給資金池的STA會被銷毀,導致被攻擊資金池無法收到STA,但資金池合約仍然會認為收到了1e-18個STA,并更新STA的存量。如下圖所示:
△圖10
如果STA的存量增加,就會使得STA能夠兌換其他代幣的比例下降,因此攻擊者又調用了gulp()方法來更新STA的余額,使得資金池的STA余額等于實際余額。如圖所示:
△圖11
每進行一次兌換,攻擊者就會調用一次gulp()對STA的余額進行更新,這樣使得STA的余額始終為1e-18個,因此每次攻擊取出余額的比例都是不變的,如下圖所示:
△圖12
攻擊者使用這種方式,將資金池中的所有代幣以每次1/2的比例進行兌換,最終幾乎將資金池中的所有代幣全部提出。
2.4、攻擊事件總結
根據我們日常智能合約安全審計經驗來看,本次事件產生的原因,可能是資金池合約對流入資金的處理方式不夠完善,并沒有考慮到通縮性代幣的情況,在計算應當輸出的值tokenAmountOut和貨幣余額inRecord.balance的增減時,都是使用由用戶控制的tokenAmountIn參數,而不是實際收到的代幣數,導致實際池中的流入資金與記錄資金不相符,如下圖所示:
△圖13
另外,用于更新代幣余額的gulp函數的權限是external,這兩點組合起來,導致了本次事件漏洞的產生,如下圖所示:
△圖14
Tags:STAETHTOKTOKEethicalstandardsETH簡介Alpha Quark TokenYFARM Token
行業資訊 據Cointelegraph報道,周二,加密貨幣公司CentraTech的創始人RobertFarkas在美國曼哈頓一家聯邦法院認罪.
1900/1/1 0:00:00經歷了數輪的洗禮,區塊鏈從草莽走向專業和成熟。我們發現區塊鏈技術作為信任機器對于數據高度信息化的金融科技行業天生契合,是數字化進程中對技術的持續探索.
1900/1/1 0:00:00比特幣、以太坊昨日區間完美預測,你跟上操作了嗎? 昨日是比特幣、以太坊周線收線,但是在昨天來看,周線的K線形態并不完整,在結合過去幾天行情一直處于盤整期,并沒有什么大的波動.
1900/1/1 0:00:00一、簡介 ConfluxStudio是一個幫助開發者快速開發Conflux智能合約的集成化開發環境.
1900/1/1 0:00:00行情分析: 比特幣現在從總體局勢來看,即將走完最后的調整的階段,目前五浪已經走完,后期跌破下支撐線則還將持續有一波空勢延續,目前四小時60日均線一直壓著,行情也是并沒有太大的向上動力.
1900/1/1 0:00:00:大家周末好,我是持幣者,專注幣市市場分析。趨勢,一定要有長遠眼光,行情,一定要有長遠規劃,而本領和技巧是關鍵.
1900/1/1 0:00:00