自八月以來,Sui 生態系統的發展迅猛。根據 DefiLlama 的數據,Sui 的總鎖倉價值已經超過了 10 億美元,在過去兩個月增長了 200%,目前在 Sui 上建立的去中心化交易所 Cetus 的交易量每天超過 1.6 億美元。
10月9日,SUI的本地USDC上线了主网,将继续吸引更多的资金进入SUI生态系统。作为Move生态系统的重要成员,SUI致力于为各种区块链应用场景提供快速安全的交易服务。
在本文中,Beosin將幫助您了解SUI生態系統用戶和開發人員面臨的安全挑戰,並具有多年的安全審計經驗。
Sui使用Move作為智能合約的編程語言。Move旨在成為可執行的字節碼語言,具有內置的安全算法和字節碼驗證器,並在調用合約時使用靜態呼叫。
這個設計允許 Move 處理智能合約中常見的漏洞,例如重入攻擊、整數溢位、雙重支付和潛在的編譯器問題,但開發人員仍然有可能在合約開發中不經意地引入漏洞。為了應對這一情況,Beosin 在 2023 年推出了 Move Lint,一種靜態檢測工具,可以自動檢測合約中的潛在安全風險並找出漏洞。
除了檢測工具外,開發人員在開發Move合約時還需要特別注意以下安全問題,以提高安全性:
相比其他智能合约语言,Move 在执行整数计算操作时默认检查溢出问题,这可以避免大量的溢出问题,但仍需注意两点:
在Move語言中,位操作不會自動執行溢出檢查,因為位操作本質上是對數據進行位級操作,其行為與整數操作不同。
當 Move 的自動溢出檢查生效時,函數執行會拋出異常,如果設計不當,可能導致項目業務無法按預期執行,從而導致 DoS 攻擊。
特權對象和特權函數調用的傳遞應該經過仔細驗證,因為這些函數和對象涉及資金安全。此外,需要檢查對象的類型,以確定它們是私有對象還是共享對象。如果一個對象從私有對象錯誤轉換為共享對象,未經授權的用戶可能能夠訪問該對象,構成潛在的安全風險。
開發人員可以使用 Move Prover 來驗證該程式是否執行明確的存取控制政策。例如,在 std::offer 中,我們可以看到當收件者不在白名單中時,函數被終止:
交易排序相依性(Transaction Ordering Dependence,簡稱TOD)是指合約的行為可能因交易執行的順序不同而產生不同結果,尤其在去中心化環境中,礦工或驗證者可以選擇如何排序交易。這可能帶來前套利攻擊等風險。
在SUI中,仍然由區塊生產者執行交易順序,因此,如果MOVE合約設計為依賴交易順序進行狀態更改,它們仍可能受到此問題的影響。
在SUI鏈上,Move智能合約的Gas問題主要體現在合約執行所需的計算和存儲成本上。隨著合約複雜度和狀態變化的增加,Gas消耗也相應增加。開發者需要關注優化合約邏輯,減少不必要的計算和狀態更新,從而降低用戶的交易成本,特別是要避免合約中無法控制的迭代情況,這可能是由於Gas不足而無法正常執行業務。
目前,Move 支持的數字類型為無符號整數,不支持浮點數,因此在除法運算期間,小數部分將被截斷並向下取整,這將導致不準確的計算結果,可能影響一些重要政策,導致收入損失,甚至成為安全漏洞。
針對這個問題,通常的緩解措施是擴大準確度,但需注意的是,當獲得最終結果時,需要恢復準確度。
在SUI區塊鏈上的Move智能合約中,對象管理是一個關鍵挑戰,涵蓋對象的生命周期、所有權、並發訪問、序列化和存儲成本的多個方面。開發人員需要精確管理對象的創建、更新和銷毀,以防止資源浪費和狀態不一致。同時,合理設計合約邏輯來控制對象的所有權和訪問權,以及處理多個用戶同時訪問同一對象的情況,這些都是確保智能合約安全和高效運行的重要因素。
例如,在Sui DeFi項目中實施閃電貸款,攻擊者可以使用閃電貸款進行價格操縱等大額資金攻擊。
在常見的AMM代幣交換功能中, 開發人員可以使用Move Prover驗證代幣數量是否正確變化:
例如,借貸協議應該在一系列存款、借款和提款之後始終得到充分的安全保障。在下單後,如果取消了鏈上永續合約交易協議的訂單簿,帳本等方面不應該有任何變化,需要由開發人員進行檢查和驗證。
目前,DeFi和SUI的Memecoins蓬勃发展,交易量和TVL吸引了爆炸性增长。随之而来,用户需要避免越来越多种类的欺诈和垃圾交易。
今年,一個名為Suisses的空投詐騙在Sui Eco中出現,許多用戶的資產被盜取。當用戶連接到Suisses網站上的錢包並點擊Claim時,會出現一個轉賬請求,要求轉移用戶的資產。如果用戶簽署該交易,他們將發現他們錢包裡的所有資產都已被轉移。
由於 SUI 的特性:一切皆為客體,不僅用戶錢包中的代幣是客體,NFT 也是客體,用戶參與 DeFi 挖礦、流動性抵押和其他憑證也是客體。如果發生釣魚攻擊,駭客可能一次性轉移 SUI 生態系統內用戶的所有資產。
Sui 生態系統中存在許多假幣和陷阱。尤其是在 Sui 生態系統中交易 memecoins 時,用戶可能會意外被捕捉到。
在 SUI 創建代幣時,如下所示,黑客可以定義與熱門或主要代幣相同的圖標和名稱,使它們對一般用戶來說難以辨識。因此,使用者在購買代幣時需要檢查代幣的數據格式是否正確。
此外,黑客還可以向代幣合約添加一個DenyList功能,使購買該代幣的用戶無法出售,從而導致用戶損失。
MEV代表最大可提取價值。MEV最初是指礦工可提取價值,比特幣網絡中的礦工通過重新排序區塊中的交易,獲得超出區塊和網絡費用的獎勵。MEV與區塊鏈網絡的類型無關。MEV存在於所有區塊鏈中,Sui也不例外。
Sui使用獨角鯨作為記憶池,將未完成的交易分配給節點,並使用Bullshark算法作為共識引擎來排序交易。
對於SUI交易的排序規則是基於燃氣費用。此外,由於SUI採用了並行和順序相結合的交易執行方案,因此共享相同AMM交易池狀態的交易只能按順序執行。因此,三明治攻擊/預先交易是可行的。攻擊者可以通過更高的燃氣費用發動三明治攻擊,使參與DeFi交易的用戶遭受損失。
自八月以來,Sui 生態系統的發展迅猛。根據 DefiLlama 的數據,Sui 的總鎖倉價值已經超過了 10 億美元,在過去兩個月增長了 200%,目前在 Sui 上建立的去中心化交易所 Cetus 的交易量每天超過 1.6 億美元。
10月9日,SUI的本地USDC上线了主网,将继续吸引更多的资金进入SUI生态系统。作为Move生态系统的重要成员,SUI致力于为各种区块链应用场景提供快速安全的交易服务。
在本文中,Beosin將幫助您了解SUI生態系統用戶和開發人員面臨的安全挑戰,並具有多年的安全審計經驗。
Sui使用Move作為智能合約的編程語言。Move旨在成為可執行的字節碼語言,具有內置的安全算法和字節碼驗證器,並在調用合約時使用靜態呼叫。
這個設計允許 Move 處理智能合約中常見的漏洞,例如重入攻擊、整數溢位、雙重支付和潛在的編譯器問題,但開發人員仍然有可能在合約開發中不經意地引入漏洞。為了應對這一情況,Beosin 在 2023 年推出了 Move Lint,一種靜態檢測工具,可以自動檢測合約中的潛在安全風險並找出漏洞。
除了檢測工具外,開發人員在開發Move合約時還需要特別注意以下安全問題,以提高安全性:
相比其他智能合约语言,Move 在执行整数计算操作时默认检查溢出问题,这可以避免大量的溢出问题,但仍需注意两点:
在Move語言中,位操作不會自動執行溢出檢查,因為位操作本質上是對數據進行位級操作,其行為與整數操作不同。
當 Move 的自動溢出檢查生效時,函數執行會拋出異常,如果設計不當,可能導致項目業務無法按預期執行,從而導致 DoS 攻擊。
特權對象和特權函數調用的傳遞應該經過仔細驗證,因為這些函數和對象涉及資金安全。此外,需要檢查對象的類型,以確定它們是私有對象還是共享對象。如果一個對象從私有對象錯誤轉換為共享對象,未經授權的用戶可能能夠訪問該對象,構成潛在的安全風險。
開發人員可以使用 Move Prover 來驗證該程式是否執行明確的存取控制政策。例如,在 std::offer 中,我們可以看到當收件者不在白名單中時,函數被終止:
交易排序相依性(Transaction Ordering Dependence,簡稱TOD)是指合約的行為可能因交易執行的順序不同而產生不同結果,尤其在去中心化環境中,礦工或驗證者可以選擇如何排序交易。這可能帶來前套利攻擊等風險。
在SUI中,仍然由區塊生產者執行交易順序,因此,如果MOVE合約設計為依賴交易順序進行狀態更改,它們仍可能受到此問題的影響。
在SUI鏈上,Move智能合約的Gas問題主要體現在合約執行所需的計算和存儲成本上。隨著合約複雜度和狀態變化的增加,Gas消耗也相應增加。開發者需要關注優化合約邏輯,減少不必要的計算和狀態更新,從而降低用戶的交易成本,特別是要避免合約中無法控制的迭代情況,這可能是由於Gas不足而無法正常執行業務。
目前,Move 支持的數字類型為無符號整數,不支持浮點數,因此在除法運算期間,小數部分將被截斷並向下取整,這將導致不準確的計算結果,可能影響一些重要政策,導致收入損失,甚至成為安全漏洞。
針對這個問題,通常的緩解措施是擴大準確度,但需注意的是,當獲得最終結果時,需要恢復準確度。
在SUI區塊鏈上的Move智能合約中,對象管理是一個關鍵挑戰,涵蓋對象的生命周期、所有權、並發訪問、序列化和存儲成本的多個方面。開發人員需要精確管理對象的創建、更新和銷毀,以防止資源浪費和狀態不一致。同時,合理設計合約邏輯來控制對象的所有權和訪問權,以及處理多個用戶同時訪問同一對象的情況,這些都是確保智能合約安全和高效運行的重要因素。
例如,在Sui DeFi項目中實施閃電貸款,攻擊者可以使用閃電貸款進行價格操縱等大額資金攻擊。
在常見的AMM代幣交換功能中, 開發人員可以使用Move Prover驗證代幣數量是否正確變化:
例如,借貸協議應該在一系列存款、借款和提款之後始終得到充分的安全保障。在下單後,如果取消了鏈上永續合約交易協議的訂單簿,帳本等方面不應該有任何變化,需要由開發人員進行檢查和驗證。
目前,DeFi和SUI的Memecoins蓬勃发展,交易量和TVL吸引了爆炸性增长。随之而来,用户需要避免越来越多种类的欺诈和垃圾交易。
今年,一個名為Suisses的空投詐騙在Sui Eco中出現,許多用戶的資產被盜取。當用戶連接到Suisses網站上的錢包並點擊Claim時,會出現一個轉賬請求,要求轉移用戶的資產。如果用戶簽署該交易,他們將發現他們錢包裡的所有資產都已被轉移。
由於 SUI 的特性:一切皆為客體,不僅用戶錢包中的代幣是客體,NFT 也是客體,用戶參與 DeFi 挖礦、流動性抵押和其他憑證也是客體。如果發生釣魚攻擊,駭客可能一次性轉移 SUI 生態系統內用戶的所有資產。
Sui 生態系統中存在許多假幣和陷阱。尤其是在 Sui 生態系統中交易 memecoins 時,用戶可能會意外被捕捉到。
在 SUI 創建代幣時,如下所示,黑客可以定義與熱門或主要代幣相同的圖標和名稱,使它們對一般用戶來說難以辨識。因此,使用者在購買代幣時需要檢查代幣的數據格式是否正確。
此外,黑客還可以向代幣合約添加一個DenyList功能,使購買該代幣的用戶無法出售,從而導致用戶損失。
MEV代表最大可提取價值。MEV最初是指礦工可提取價值,比特幣網絡中的礦工通過重新排序區塊中的交易,獲得超出區塊和網絡費用的獎勵。MEV與區塊鏈網絡的類型無關。MEV存在於所有區塊鏈中,Sui也不例外。
Sui使用獨角鯨作為記憶池,將未完成的交易分配給節點,並使用Bullshark算法作為共識引擎來排序交易。
對於SUI交易的排序規則是基於燃氣費用。此外,由於SUI採用了並行和順序相結合的交易執行方案,因此共享相同AMM交易池狀態的交易只能按順序執行。因此,三明治攻擊/預先交易是可行的。攻擊者可以通過更高的燃氣費用發動三明治攻擊,使參與DeFi交易的用戶遭受損失。