以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

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

Author:

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

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

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

事件簡介

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

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

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

Kirby McInerney LLP律師事務所向Argo Blockchain提起訴訟:金色財經報道,Kirby McInerney LLP律師事務所宣布,已經代表那些在2021年9月23日至2022年10月10日期間購買Argo Blockchain證券的投資者向紐約東區美國地區法院提起了集體訴訟。該訴訟稱,在整個集體訴訟期間,被告作出了虛假和/或誤導性陳述,并且沒有披露:(i) Argo 極易受到和/或遭受重大資本限制、電力和其他成本,以及網絡困難;(ii) 上述問題尤其阻礙了 Argo 開采 BTC、執行其業務戰略、履行其義務以及運營其 Helios 設施的能力。

Argo主要從事加密資產挖礦。Argo 于 2021 年 9 月 23 日進行了 IPO,以每股 15.00 美元的價格出售了 750 萬股。[2023/3/12 12:57:39]

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

Gitcoin宣布Alpha輪融資將于1月17日舉行:1月11日消息,Gitcoin官方宣布,Gitcoin Alpha輪二次方融資將于2023年1月17日至1月31日舉行,本輪將支持200名致力于開源軟件、以太坊基礎設施和氣候解決方案的受資助者,總匹配資金為100萬美元。

據悉,在Alpha測試輪,捐助者可在其參與的每一輪中申領一個POAP,收集到所有POAP的用戶將有資格參與抽獎,贏得Schelling Point VIP禮包,包括150美元的Gitcoin產品。此外,2023年Gitcoin將過渡到基于區塊鏈的贈款協議,允許任何人啟動二次方融資贈款項目。該協議將使資助者能夠隨時建立一個贈款項目,為那些可以跨不同輪次申請的受資助者和希望提供小額資金的捐助者增加靈活性。[2023/1/11 11:06:06]

經典重入攻擊

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

Animoca Brands支持的Gusto Collective入榜《福布斯亞洲100強》榜單:9月6日消息,福布斯近日發布聚焦亞太地區100家小公司和初創公司的《福布斯亞洲100強》榜單,Animoca Brands支持的香港沉浸式體驗科技服務商Gusto Collective入榜。Gusto Collective專注于Web3市場服務、增強現實(AR)、虛擬人創作平臺和奢侈品營銷服務,幫助品牌通過虛擬和增強現實等元宇宙技術吸引客戶。2月份,這家初創公司與拍賣行Phillips合作推出了NFT。

據悉,該榜單入榜資格為公司的總部必須位于亞太地區,為營利性私營企業,其最新年收入不超過5000萬美元,截至8月1日的總資金不超過1億美元。

此前5月份消息,Gusto Collective完成1000萬美元種子+輪融資,Animoca Brands和Gaw Capital領投。[2022/9/6 13:11:43]

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

LevelField宣布收購Netshares Financial Services并尋求5000萬美元融資:金色財經報道,新的銀行平臺 LevelField Financial 宣布已收購受美國證券交易委員會 (SEC) 監管的經紀交易商 Netshares Financial Services。根據美國證券交易委員會的文件, LevelField在今年年初籌集了兩輪種子輪,目前正在籌集 5000 萬美元。該公司創始人格蘭特在確認這一輪融資時稱,希望在 9 月份結束,部分資金將用于收購。[2022/9/2 13:03:37]

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

下方是一個簡化的例子。

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

數據:當前Solana生態總市值為128.35億美元:金色財經消息,據CoinGecko最新數據顯示,當前Solana生態總市值為128.35億美元(截至發稿時為12,835,645,080美元),24小時交易額為567,999,695美元。[2022/7/10 2:03:18]

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

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

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

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

跨函數重入

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

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

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

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

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

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:DITCRECREDIREDStarCreditsCRE8R DAORipio Credit NetworkRed Pill

幣安下載
星球日報 | BRC交易費持續下跌;Silvergate啟動退市;Worldcoin遷移至Optimism(5月12日)_DAILY

頭條 紐交所將暫停Silvergate交易并啟動退市程序Odaily星球日報訊紐交所將暫停加密友好銀行Silvergate(SI.N)的交易并啟動退市程序.

1900/1/1 0:00:00
天涯視區塊鏈為重新崛起的核武器,失落的BBS想收復社交失地_天涯鉆

近日,天涯社區創始人邢明在接受新浪財經采訪時表示:“區塊鏈不是救命稻草,而是天涯重新崛起的核武器.

1900/1/1 0:00:00
王峰十問| 對話老貓:相信中本聰,還是相信巴菲特?_區塊鏈

王峰:先讓我們看一看他的經歷——老貓傳奇。年輕時曾在江蘇常州一家事業單位工作,30多歲辭職去了上海。后來,給朋友打過工,在淘寶上賣過保暖內衣,還給某體檢品牌運營過淘寶店.

1900/1/1 0:00:00
SignalPlus每日晨報(20230324)-ODAILY_SIG

各位朋友,歡迎來到SignalPlus每日晨報。SignalPlus晨報每天為各位更新宏觀市場信息,并分享我們對宏觀趨勢的觀察和看法。歡迎追蹤訂閱,與我們一起關注最新的市場動態.

1900/1/1 0:00:00
波場TRON賬戶總數突破1.35億-ODAILY_TRO

區塊鏈瀏覽器TRONSCAN最新數據顯示,截至2023年1月11日,波場TRON賬戶總數達到135,042,085,正式突破1.35億.

1900/1/1 0:00:00
賽道的MAGIC?一文了解Arbitrum上的新項目Just Bet Official-ODAILY_BET

本文來自CapitalismLab的推文,介紹了Arbitrum上的新項目JustBetOfficial以及對于賽道的看法.

1900/1/1 0:00:00
ads