買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > MANA > Info

DIT:以Kadena智能合約為例 簡析如何規避重入攻擊和跨函數攻擊_RED

Author:

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

在這篇文章中,我們將簡要地解釋重入和跨函數重入之間的區別,以及圖靈不完備性如何能夠防止一些這樣的攻擊。

其中我們將提供一個跨函數重入利用的案例,該案例中Kadena區塊鏈使用的是編程語言Pact,但圖靈不完備性并未防止該惡意利用的發生。

Kadena區塊鏈旨在實現比其他L1鏈更高的可擴展性、安全性和可用性。其開發了一種新的語言用以編寫智能合約:Pact。

這種語言是人類可讀的,且易于形式化驗證,并具備可提高安全性的圖靈不完備性。

這里提到的圖靈不完備性意味著Pact無法做到圖靈完備編程語言(如Solidity或Haskell)所能做到的那些事——看起來好像是個劣勢,但其實智能合約編程,哪怕是最復雜的DeFi協議也很少會需要用到圖靈完備性。

圖靈不完備性最重要的一點是沒有無界遞歸。雖然這確實大大減少了攻擊面,但一些「經典」攻擊是無法被100%避免的,接下來我們就會講述跨函數重入的問題。

韓國檢方查獲并搜查涉嫌參與WEMIX大規模清算的兩家公司:8月4日消息,韓國首爾南部地方檢察廳于8月3日至4日兩天內,以上市游戲公司WeMade發行的虛擬資產WEMIX流通量欺詐等罪名,查獲并搜查了兩家曾參與WEMIX大規模清算的公司,但未透露具體是哪兩家公司。檢方發現WeMade通過這兩家公司出售了大量WEMIX,據悉正在調查這是否是在未告知用戶細節的情況下進行的交易。[2023/8/4 16:18:31]

重入攻擊是非常常見的安全問題。這個問題不僅很難被開發者發現,也很難被審計師審查出其會導致的所有潛在后果。

重入攻擊取決于函數在進行外部調用之前和之后執行的特定任務的順序。

如果一個合約調用了一個不受信任的外部合約,攻擊者可以讓它一次又一次地重復這個函數調用,形成一個遞歸調用。而如果重新輸入的函數執行重要的任務(如更新賬戶的余額),那這可能就會導致災難性的后果。

下方是一個簡化的例子。

Stride已成功過渡為Cosmos Hub的鏈間安全(ICS)機制:金色財經報道,Stride是Cosmos生態系統中的流動質押代幣提供商,已在區塊4616678成功過渡到Cosmos Hub的鏈間安全 (ICS) 機制,這一變化是在 4月份成功提出提案后發起的,這意味著在Stride區塊鏈上執行共識的整個驗證器集立即全部切換到Cosmos Hub驗證器。Stride聯合創始人Aidan Salzmann表示,Stride現在由Cosmos Hub的23億美元質押資產作為擔保,這是“一項重大技術壯舉”。[2023/7/20 11:05:39]

我們把易受攻擊的合約稱為unsafe合約,把惡意的合約稱為Attack合約。

1. 攻擊者調用unsafe合約,以將資金轉移到Attack合約中。

2. 收到調用之后,unsafe合約首先檢查攻擊者是否有資金,然后將資金轉移到Attack合約。

3. 收到資金后,Attack合約執行回退函數,在它能夠更新余額之前回調到不安全的合約,從而重新啟動該過程。

數據:2022年下半年全球僅新增94臺比特幣ATM:1月9日消息,據CoinATMRadar數據,自2022年7月以來的過去六個月中全球網絡中僅添加了 94 臺比特幣 ATM。相比之下, 2022年上半年增加了 4,169 臺 ATM 。在此期間,比特幣 ATM 制造商 BitAccess 的 ATM 安裝量相對下降,而其他制造商則報告稱其 ATM 安裝量相對穩定增長。[2023/1/9 11:02:37]

因為這種攻擊是通過無界遞歸調用進行的,所以如果語言不是圖靈完備的,攻擊就不可能進行。

跨函數重入類似于經典的重入攻擊,除了重入的函數與進行外部調用的函數功能不同。這種重入攻擊通常更難被發現——因為在復雜的協議中,組合的可能性太多,無法手動測試每個可能的結果。

這就引出了我們的概念證明:使用Pact語言進行簡單的跨函數重入攻擊。

AbbeyCross完成247萬美元種子輪融資,Third Prime領投:8月15日消息,據 Einnews 報道,貨幣基礎設施 B2B 交易和合規市場 AbbeyCross 完成 247 萬美元種子輪融資,專注于加密市場的 Third Prime 領投,Communitas Capital 和 11 個戰略天使投資人參投。

AbbeyCross 主要與全球銀行、貨幣供應商和其他金融服務提供商合作,旨在消除貨幣市場低效問題,并為分散的新興市場貨幣支付行業帶來了更深層次的貨幣流動性、價格透明度和市場數據。[2022/8/16 12:27:15]

Pact模塊中的簡單跨函數重入

正如我們在下方代碼片段中看到的,合約中的函數對另一個實現特定接口的合約進行外部調用。這允許重入一個設計好的攻擊合約。Pact中的功能是內置函數,可授予用戶權限來執行敏感任務。以下代碼僅供說明之用,并非取自真實案例合約。

我們將使用的代碼例子包含三個部分:

Polygon聯合創始人:盡管加密貨幣低迷,仍然看好Web 3:金色財經報道,比特幣和加密貨幣市場的近期的低迷讓行業專家預計加密寒冬會延長,但Polygon聯合創始人 Sandeep Nailwal 認為 Web 3 的總體前景仍然看漲。這位高管斷言,此次修正更多地與“宏觀”有關,而不是 Web 3 領域的任何根本弱點。在最新的 Twitter 帖子中,Nailwal表示:“長期來看,Web3 仍然非常看好,所以新手要不斷學習,而開發者要不斷開發!”

Polygon 聯合創始人預測,當美聯儲加息時,通脹在 3-6 個月內達到峰值后,市場最終將觸底。(cryptopotato)[2022/6/16 4:30:44]

1. 合約接口

用以使主合約與一個惡意的外部模塊進行交互

2. 主要模塊

被攻擊的模擬示例合約

首先,數據庫被定義為一個表,其中字符串存儲在具有關聯十進制數的行中。

然后定義了一個能力:CREDIT(在這個示例中始終為真)。這個條件將是credit函數所需要的,但只被with_capability語句中的bad_function內部授予。這意味著直接調用credit會失敗。

現在,函數credit被定義如下:它增加了作為輸入的字符串的余額(小數點)。如果該地址不在表中,它還會創建該條目。

最后,函數bad_function增加了legit_address的余額,但也執行了對符合之前定義的接口的合約的調用,該合約可以作為一個輸入參數提供。函數get-balance允許我們讀取該表格。

3. 用于觸發重入的模塊:

重新進入主模塊,調用credit函數

大致流程如下:

a. 以攻擊合約為參數調用bad_function

b. CREDIT功能被授予

c. “legit_address”的余額增加了10

d. 調用惡意模塊的external_function:因為它仍然具有CREDIT功能,它可以重新進入合約并直接調用credit函數,給 "attacker_address "一個100的余額。

之后,(get-balance "legit_address")返回10,(get-balance "attacker_address")返回100。

重入成功。

現在,如果我們不重入調用credit,而是嘗試重入再次調用bad_function,會發生什么?即使第一次調用credit成功,由于重入是在bad_function中,這將是一個遞歸調用且執行將會失敗。

現在,如果我們嘗試直接調用external_function,這將不起作用,因為所需的功能CREDIT沒有被授予。

通過移除無界遞歸,圖靈不完備性可以防止一些重入攻擊的載體。

然而,由于跨函數重入可以在沒有遞歸調用的情況下進行,圖靈不完備性并不能阻止所有此類攻擊載體,因此用戶在與這種語言交互時不應該假設重入不會造成惡劣影響。

重入和跨函數重入是非常常見的安全問題,Web3.0領域也因此發生了一系列規模巨大的攻擊事件。

Pact作為一種智能合約編程語言,極具潛力。

它采取的方法與其他語言如Solidity或Haskell有些不同。Pact并不完全依靠圖靈不完備性來提高安全性;該語言被設計地更容易閱讀、理解和正式驗證。

然而,沒有哪種編程語言能對所有的攻擊載體免疫。因此開發者必須了解他們所使用的語言的獨特功能,并且在部署前對所有項目進行徹底審計。

目前,CertiK的審計及端到端解決方案已覆蓋目前市面上大部分生態系統,并支持幾乎所有主流編程語言,就區塊鏈平臺、數字資產交易平臺、智能合約的安全性等領域為各個生態鏈提供安全技術支持。

CertiK中文社區

企業專欄

閱讀更多

金色財經

金色早8點

Odaily星球日報

Arcane Labs

澎湃新聞

深潮TechFlow

歐科云鏈

MarsBit

BTCStudy

鏈得得

Tags:DITCREDITREDREDISMARTCREDIT價格SMARTCREDITREDPANDA價格REDINU幣

MANA
TOKEN:怎么給以太坊估值?_以太坊幣今日價格行情走勢

像以太坊(ETH)這樣的智能合約平臺(SCP)通常被稱為Decentralized計算機,而像比特幣這樣的支付型加密資產是更簡單的Decentralized賬本.

1900/1/1 0:00:00
HAT:10個實用的 ChatGPT 免費擴展_gpt幣更換成啥幣了

1. WebChatGPTChatGPT 不能主動進行網絡檢索,因此對 2021 年之后的世界了解有限.

1900/1/1 0:00:00
以太坊:新聞周刊 | 福布斯發布2023全球區塊鏈50強_區塊鏈TEC幣有這種幣嗎

金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、礦業信息、項目動態、技術進展等行業動態。本文是其中的新聞周刊,帶您一覽本周區塊鏈行業大事.

1900/1/1 0:00:00
區塊鏈:蘇州市培育元宇宙產業創新發展指導意見_DAILY

蘇州陽山智谷產業園董事長孫玉龍:計劃建立100個社交生態基地:金色財經現場報道,8月15日,2020國際數字經濟生態峰會于贛州開幕.

1900/1/1 0:00:00
LIB:國際貨幣基金組織:薩爾瓦多應重視比特幣風險_數字貨幣交易員工作咋樣

參考消息網2月12日報道據路透社2月10日報道,國際貨幣基金組織(IMF)官員10日在訪問薩爾瓦多后稱,這個中美洲國家采用比特幣帶來的風險“尚未成為現實”.

1900/1/1 0:00:00
SWAP:晚間必讀5篇 | a16z vs Jump:Uniswap跨鏈擴張背后的VC戰爭_區塊鏈

1.去中心化社交協議 Nostr 安卓版 Amethyst 使用教程今天,Twitter 前首席執行官 Jack Dorsey 發推稱.

1900/1/1 0:00:00
ads