本文由Certik原創,授權金色財經首發。
自DeFi興起以來,在短短9個月時間內迅速風靡全球。
BSC憑借低廉的gas和高速壯大的生態應用建立起了日漸完整的生態系統,成功成為了領先的公鏈平臺之一。
數據來源:https://bscscan.com/
如今每天,都有數百個項目在BSC上進行數千萬的交易。
圖片來自https://twitter.com/BinanceChain/status/1395060714390315008
但是鏈上交易的熱度將另外一個隱患帶到了我們面前——安全隱患。
目前可被黑客所利用的不同級別漏洞越來越多。
CertiK安全專家將這些漏洞分為四大類?,下文將為各位讀者帶來DeFi相關安全風險講解。
在智能合約中,某些功能受到函數修改器(modifier)的保護——只有特定的操作者才能調用特定的功能。
在大多數情況下,這些功能是用于修改合約配置或管理智能合約中持有的資金。因此如果攻擊者破壞了管理密鑰,他們可以完全控制智能合約,調用該功能從而竊取用戶資產。
LBANK藍貝殼于3月22日18:00首發 DORA,開放USDT交易:據官方公告,3月22日18:00,LBANK藍貝殼首發DORA(Dora Factory),開放USDT交易,現已開放充值。
資料顯示,Dora Factory 是基于波卡的 DAO 即服務基礎設施,基于 Substrate 的開放、可編程的鏈上治理協議平臺,為新一代去中心化組織和開發者提供二次方投票、曲線拍賣、Bounty 激勵、跨鏈資產管理等可插拔的治理功能。同時,開發者可以向這個 DAO 即服務平臺提交新的治理模塊,并獲得持續的激勵。[2021/3/22 19:07:06]
密鑰泄露的原因
第一種可能性是計算機木馬程序。?
攻擊者可以使用木馬程序來竊取存儲在計算機上的私鑰,或者進行網絡釣魚攻擊,以誘騙用戶將其私鑰發送給攻擊者。
對DeFi合約來說,往往是幾個人共享一個管理密鑰。
這就意味著如果有內部人員心懷不軌,那么他可以調用管理功能將項目的代幣轉移到自己的錢包地址中。
這里有兩個案例:2021年3月5日,PAID Network因其私鑰管理不當而遭受“鑄幣”攻擊,經推測攻擊者很可能是通過網絡釣魚攻擊從管理員的計算機中竊取了密鑰。
PAID代幣合約位于可升級代理服務器之后,這意味著代幣合約可以被代理服務器的所有者替換。
這類惡意代碼有鑄幣功能,攻擊者銷毀6000萬個PAID代幣,然后為自己鑄造了5900萬枚代幣。
當時2,501,203美元的PAID代幣(約為2,040ETH)在Uniswap上被出售,代幣價格也從2.8美元暴跌為0.3美元。
首發 | 歐科云鏈推出“天眼方案”推動鏈上安全系統再升級:8月28日,區塊鏈產業集團歐科云鏈宣布推出區塊鏈“天眼方案”,主要通過鏈上數據追蹤系統研發、對外技術支持、凝聚企業眾力等途徑,全面助力區塊鏈安全提升和產業平穩健康發展。
據了解,在“天眼方案”下,歐科云鏈集團將打造鏈上數據追蹤系統,通過溯源數字資產、監控非法交易等手段,全力遏制洗錢等非法行為;協助執法機關辦案,并為打造法務等區塊鏈系統提供技術支持;為聯盟鏈和基于各類業務的鏈上數據提供區塊鏈+大數據的解決方案。[2020/8/28]
2021年4月19日,EasyFi創始人聲稱該黑客為獲取管理密鑰對管理員進行了針對性的攻擊。298萬個EASY代幣(當時價值約7500萬美元)被從EasyFi官方錢包中轉移到了幾個未知錢包中。
因此安全存儲私鑰對于項目安全的重要性可見一斑,管理者切忌將未加密的管理員密鑰存儲在電腦設備上,或將其無防備的放置于Metamask熱錢包中。
CertiK安全專家建議管理者使用硬件錢包創建賬戶。
如果多人團隊的每位管理者均使用硬件錢包,一旦其中一位管理者試圖進行特權交易,也需獲取大部分成員的簽署同意,這樣可以防止攻擊者僅獲取一個密鑰訪問權時就可以調用所有特權功能。
代幣合約應盡可能避免鑄造新代幣的功能。如果需要鑄造新代幣,應使用DAO合約或時間鎖合約,而非EOA帳戶。
《精靈達人3D》正式首發 Cocos-BCX 主網:據官方消息,近日,由生態合伙人 DAPPX 參與開發的《精靈達人3D》正式首發于游戲公鏈 Cocos-BCX 主網。《精靈達人3D》是一款以精靈寶可夢為題材的抓寵游戲,游戲美術采用全3D 制作。用戶可通過 CocosWallet , DAPPX 或 IMCOCOS 登錄 COCOS 主網賬號即可體驗。截至目前,Cocos-BCX 主網已上線《加密騎士團》《惡龍必須死》《XPEX怪獸世界》《Go Block》《可可奪幣》《熊貓運動會》等多款玩法多樣的趣味性鏈游,游戲公鏈生態在逐步壯大和完善。[2020/8/20]
大家一提到DeFi漏洞,往往會認為漏洞必然是很復雜的,其實并非總是如此。
有時一個小小的編碼錯誤,就可以導致數百上千萬美元的資產一朝蒸發。
一些常見的編碼錯誤示例:
1. 函數權限, 修改器(modifier)缺失
2. 錯別字
3. 數字位數不正確
4. 變量值分配缺失/不正確
有一個非常典型的例子就是Uranium Finance曾發生的受攻擊事件:黑客攻擊了Uranium Finance未受審計的合約,項目因此損失了5700萬美元。
管理員在交換前后比較池中兩個代幣余額的乘積時使用了不一致的乘數,這使得攻擊者可以僅用1 Wei就從池中換出大量代幣。
Uranium finance的代碼:
首發 | 百度財報體現區塊鏈 BaaS平臺成為新戰略重點:金色財經報道,2020年2月28日,百度(股票代碼BAIDU)公布財報,其中將區塊鏈BaaS平臺相關的進展進行了單獨敘述,依托于百度智能云的區塊鏈平臺有望成為技術創新方向的新增長引擎。在AI服務上,百度與上海浦東發展銀行達成合作,共建區塊鏈聯盟,在百度區塊鏈服務(BaaS)平臺上實現跨行信息驗證。[2020/2/28]
正確的代碼:
另一個例子是Value DeFi,被黑客攻擊導致損失了1000萬美元。
此次事件發生的原因在于Value DeFi合約中的初始化函數缺少“initialized = true”,這意味著任何人都可以將資金池初始化并將自己設置為管理員。
2021年5月5日,攻擊者將資金池初始化,將自己設置為管理員,然后使用“governanceRecoverUnsupported()”函數耗盡了已抵押的代幣。
Value DeFi中的易受攻擊的代碼:
解決方法:
公告 | 火幣全球站6月29日16:00全球首發 Project PAI:火幣全球站定于新加坡時間6月29日16:00 Project PAI (PAI) 充值業務。7月2日16:00在創新區開放PAI/BTC, PAI/ETH交易。7月6日16:00開放 PAI提現業務。[2018/6/29]
只需通過適當的同行評審、單元測試和安全審計,這一類型的代碼錯誤往往極易避免。
閃電貸可以在無需提供任何抵押的情況下進行貸款,當然所有操作必須在一個交易區塊內完成。
開發人員可以從Aave或dYdX等協議中借貸,條件是在交易結束之前將流動資金返還到資金池中。
如果資金未能及時返回,則交易將被撤回,從而確保儲備池的安全。
閃電貸的一般運行步驟如下:
1. 使用閃電貸借入大量代幣A
2. 在DEX上將代幣A交換為代幣B(代幣A的價格下降,代幣B的價格上升)
3. 攻擊一個依賴A/B價格的DeFi項目
4. 償還閃電貸
上周PancakeBunny遭受了閃電貸攻擊,攻擊者竊取了11.4萬BNB和69.7萬Bunny(當時價值約為4000萬美元)。
攻擊者利用閃電貸操縱PancakeSwap?USDT-BNB V1池的價格,導致大量的BNB流入BNB-Bunny池,這使得該合約能夠以虛高的BNB/Bunny的價格鑄造Bunny。
PancakeBunny使用了以下函數來計算Bunny的價格:
大量的BNB流入BNB-Bunny池造成變量“ reserve0”變得更大,且價格計算公式存在缺陷,因此導致攻擊者非法獲取了69.7萬Bunny。
閃電貸攻擊的受害者很多,包括DeFi領域的一些知名項目:PancakeBunny(4000萬美元損失),Harvest?Finance(2500萬美元損失),Yearn(1100萬美元損失),Value DeFi(700萬美元損失),AKROPOLIS(200萬美元損失),Cheese Bank,XToken,bZx?等等。
從這些實例中不難看出——項目方應著重預防價格被閃電貸惡意操縱。
為了防止這種情況的發生,CertiK安全專家建議①使用時間加權平均價格(TWAP,代表了指定時間段內代幣的平均價格),因為攻擊者只能在一個區塊中操縱價格,因此平均價格并不會被影響,從而規避相關惡意操縱,②或使用可靠的鏈上價格預言系統,例如Chainlink。
許多項目,例如PancakeSwap和UniSwap都是獨立運行的,用戶并不與其他第三方協議進行交互。
在PancakeSwap中,用戶可以通過提供流動性以獲得獎勵代幣或將一個代幣交換為另一個代幣。
但其他項目(例如Yearn Finance)的運作方式并不同。
比如Yearn Finance是收集用戶資金并將其放入第三方合約,通過投資用戶代幣以獲取收益的。
第三種情況則是一些項目會從其他項目“借用”代碼。
后兩種情況下,如果第三方代碼的來源安全風險較大,那么所有使用該代碼的項目也會受到攻擊。
假如項目的開發人員不熟悉他們使用的第三方代碼,一旦代碼存在漏洞,所導致的后果將是災難性的。
2021年5月8日,Value DeFi vSwap AMM的非50/50池被攻擊,損失總額約為1100萬美元。
為了實現非50/50池,Value DeFi從屬于Bancor協議的“ BancorFormula.sol”中復制了“ power()”函數。
在power()函數的用法說明中,已寫明該函數并不支持“ _baseN <_baseD”的情況。
但Value DeFi并未注意到此注釋,因此攻擊者成功利用此漏洞,通過往函數中傳入特定的參數來用少量的代幣A交換代幣B。
Value DeFi的代碼:
DeFi領域中還有許多其他類似的情況。
2021年5月8日,一名攻擊者通過利用集成在Rari Capital V2中的Alpha Homora V1的ibETH池Bank合約的功能,從Rari Capital Ethereum Pool中消耗了大約2600個ETH。
Bearn Finance使用BUSD的提款金額在其“ BvaultsStrategy”合約中提取ibBUSD,從而讓攻擊者輕易轉移了池中10,859,319 枚BUSD。
這類問題較難檢測,因此項目管理者應謹慎與任何第三方協議進行交互,更不應盲目地復制并部署開發人員不了解的代碼。
CertiK安全專家建議:
1. 開發人員在集成第三方協議并將部署到生產運行過程中之前,應充分了解其及其分支項目的運行情況。
2. 開發人員應在項目上線前,先將其部署在測試網上進行測試并及時檢查交易記錄中的異常情況。
總體而言,盡管項目難以保證100%的安全,但是以下幾點可以盡可能提高項目的安全性:
1. 安全存儲管理員密鑰
2. 避免簡單的編碼錯誤
3. 參考可靠的鏈上價格
4. 進行安全審計并做好審計前的準備
對于終端用戶來說,在使用個人資產與項目進行交互之前,有時很難找到有關項目的詳細信息。
為了方便用戶獲取項目的安全性信息,CertiK開發了全球首個公開透明展示區塊鏈項目安全數據的安全排行榜。
通過查看公開的安全數據,終端用戶可以實時了解項目安全情況。
https://www.certik.org
除以上防范方式以外,所有項目均應意識到安全審計的重要性。
那么審計前為了充分利用發揮安全審計的作用,應該如何準備資料和代碼?
以下有幾個小tips:
1. 定義審計的確切范圍并設定審計目標
2. 制作全面的審計代碼文檔
3. 確保良好的代碼質量
4. 審計前測試代碼
5. 凍結代碼并在審核之前指定代碼的commit hash
Tags:ANCDEFDEFIEFITardigrades FinanceDefend Animals FoundationDEFILANCERVerify DeFi
Swarm 1.0已經主網上線,這意味著以太坊上的DApp已經可以在Swarm中存儲用戶數據、用戶狀態或DApp代碼本身.
1900/1/1 0:00:00致Dematrix社區:經過Dematrix團隊的不懈努力和守候,Dematrix前端產品開發進展非常順利,多個DeFi礦池已完成開發和內部測試,我們正在等待合適的時機與大家見面.
1900/1/1 0:00:00當(市場動蕩)壓力發生時在傳統世界中,會有許多防護措施確保市場的有序性。這些“護欄”是在吸取了已發生的慘痛教訓(市場波動引發的滾雪球效應)后設置的.
1900/1/1 0:00:001.金色硬核|23個鏈上數據分析比特幣本輪周期 結束了嗎金色財經推出金色硬核(Hardcore)欄目,為讀者提供熱門項目介紹或者深度解讀.
1900/1/1 0:00:00在6月11日舉行的第十三屆陸家嘴論壇上,博鰲亞洲論壇副理事長、中方首席代表,中國金融學會會長周小川在談及金融科技發展為什么要強調服務實體經濟時用加密貨幣舉例稱,加密貨幣從原理、設計思想來講.
1900/1/1 0:00:00區塊鏈技術本身我認為是一項能推動社會發展,改變人們生活觀念,非常有發展應用前景的一項技術。但自從區塊鏈技術被一些人應用到虛擬數字貨幣上,就被一些不明真相的人誤認為區塊鏈就是虛擬數字貨幣,虛擬數字.
1900/1/1 0:00:00