以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > Gateio > Info

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

Author:

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

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

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

事件簡介

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

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

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

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

Salesforce Web3工作室聯創:現在是客戶開始嘗試去中心化技術的好時機:金色財經報道,基于云的CRM軟件巨頭Salesforce正在進軍Web3,以幫助其客戶面向未來并與新一代客戶建立聯系。Salesforce的Web3工作室聯合創始人Marc Mathieu接受采訪表示,隨著行業炒作和膨脹的數字資產估值目前處于 \"暫停狀態\",該公司認為現在是客戶開始嘗試去中心化技術的好時機,包括加密貨幣錢包和NFTs。[2023/2/25 12:28:28]

經典重入攻擊

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

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

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

幣安將于今日16點在創新區上線Magic(MAGIC):12月12日消息,幣安創新區將于2022年12月12日16:00(東八區時間)上線Magic(MAGIC),并開放MAGIC/BTC、MAGIC/BUSD、MAGIC/USDT交易對。[2022/12/12 21:39:04]

下方是一個簡化的例子。

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

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

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

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

CoinGecko已開放空投代幣ACS申領:據官方推特,加密貨幣數據聚合平臺CoinGecko宣布已開放空投代幣ACS申領,CoinGecko用戶可憑借每日登錄簽到收集的糖果兌換為相應數量的代幣ACS。獎勵送完即止,最晚將于2023年1月15日結束申領。

據悉,代幣ACS由CoinGecko與Access Protocol合作推出。[2022/12/9 21:33:25]

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

跨函數重入

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

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

嘉楠耘智高管:加密寒冬下,全球化戰略步入正軌:8月3日消息,比特幣礦機制造商嘉楠耘智高級副總裁EdwardLu在接受采訪時表示,盡管身處加密寒冬,但其全球業務擴張計劃仍步入正軌。其中哈薩克斯坦是全球化戰略開展的第一個國家,之后還將在歐洲和北美進行業務擴張。EdwardLu還表示,嘉楠耘智為「加密寒冬」做好了充分的應對準備,并認為此次周期會比預想中短。

此前報道,7月30日,嘉楠耘智計劃將比特幣挖礦業務擴展至美國,并詳細介紹了其在哈薩克斯坦試點采礦業務的成功經驗。嘉楠耘智在2022年Q1的收入超過2.13億美元,持有近167枚比特幣,截至發稿時價值接近400萬美元。[2022/8/3 2:56:44]

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

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

Twitter將實施處理危機時期虛假信息新政策:5月20日消息,Twitter周四宣布了一項在危機期間處理錯誤信息的新政策,如果某些推文被視為傳播錯誤信息,則建立新標準來限制或阻止其推廣。新政策特別審查了對事件的虛假報道、涉及武器或使用武力的虛假指控,或者關于暴行或國際反應等傳播廣泛的錯誤信息。根據新政策,被歸類為錯誤信息的推文不一定會被刪除或禁止;相反,Twitter將增加一個警告標簽,要求用戶在顯示推文之前點擊一個按鈕(類似于現有的明確圖像的標簽)。這些推文也將被阻止在算法中推廣。[2022/5/20 3:30:28]

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

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的余額。

之后,返回10,返回100。

重入成功。

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

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

寫在最后

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

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

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

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

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

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

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

Tags:DITCredCREDICRESMARTCREDIT幣CREDI幣Neos CreditsWrapped CrescoFin

Gateio
AllianceBlock:合規經營NFT數字藏品 看看鯨探怎么做

詩人羅伯特·弗羅斯特的作品《未選擇的路》,其中充滿哲學奧義的一句是:林中有兩條路,我選擇了人跡罕至的那一條.

1900/1/1 0:00:00
比特幣:比特幣開發者解讀Nostr如何構建去中心化社交網絡

文/Rajarshimaitra,比特幣開發者,Rust-Nostr作者;譯/金色財經xiaozou 1、Nostr基本介紹 Nostr是一個非常輕量級的開放協議.

1900/1/1 0:00:00
加密貨幣:國際貨幣基金組織:薩爾瓦多應重視比特幣風險

參考消息網2月12日報道據路透社2月10日報道,國際貨幣基金組織官員10日在訪問薩爾瓦多后稱,這個中美洲國家采用比特幣帶來的風險“尚未成為現實”,但使用這種加密貨幣仍需要保持透明和受到關注.

1900/1/1 0:00:00
CVX:套娃不香了?Curve生態三層套娃Clever拆解

作者:DelvinDAO今天就給大家拆解一個表現還不錯但沒多少人關注的套娃Defi——Clever這可以說是一個Curve生態的二級套娃項目眾所周知,Convex可以看做是Curve的套娃.

1900/1/1 0:00:00
TREE:技術分析:BTC和ETH已經進入下一個牛市?

現在1月份的數字資產反彈已經過去,我們可以研究它對長期技術指標的影響,以確定BTC和ETH下一步可能走向何方.

1900/1/1 0:00:00
SIU:Celsius正在考慮重組

金色財經報道,CelsiusNetwork的律師周二表示,這家破產的加密貨幣借貸公司正計劃將自己重塑為一家新的公開交易的“復蘇公司”,以退出破產程序,這可能會在“幾個月內”發生.

1900/1/1 0:00:00
ads