比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Coinw > Info

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

Author:

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

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

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

事件簡介

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

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

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

BitMEX聯創:未來將出現多個貨幣集團但不會達到美元的“霸主”地位:金色財經報道,BitMEX聯合創始人Arthur Hayes發表文章“Exit Liquidity”,探討了美元在全球范圍內的經濟和作用,以及其作用的萎縮會如何影響全球加密貨幣的采用。Hayes解釋說,美元在全球的主導地位是由美國開放的資本賬戶和對自由貿易的投入所支撐的。兩者都為美元創造了額外的需求,因為前者允許亞洲國家用美元購買美國資產,后者則讓美國人購買廉價的亞洲產品。

然而,作為全球儲備貨幣的發行者,也意味著美國聯邦儲備局和美國財政部有責任保持全球經濟的完整性。換句話說,當全球經濟需要更多的美元時,美國必須提供它,即使它激起了國內經濟的通脹壓力。

Hayes預測,未來將出現多個貨幣集團,但不會出現今天美元這樣的貨幣“霸主”。集團之間的失衡將以黃金和加密貨幣等“中性儲備貨幣”來解決,這些貨幣“不與任何特定國家掛鉤”。[2023/4/22 14:19:34]

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

Binance創新區將上架Liquity(LQTY):2月28日消息,據官方公告,Binance 將于 2 月 28 日 19 時在創新區上架 Liquity(LQTY),并開放 LQTY/BTC、LQTY/USDT 現貨交易對。

Liquity 是一個去中心化借貸平臺,它接受 ETH 作為抵押并借出穩定幣 LUSD。LQTY 是用于質押和流動性挖掘等功能的實用 Token。[2023/2/28 12:34:11]

經典重入攻擊

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

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

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

SBF、a16z合伙人、螞蟻集團CEO等Web3領域人物將出席香港金融科技周并發表演講:10月28日消息,據香港金融科技周官網信息,SBF、a16z合伙人AlexRampell、AnimocaBrands聯創YatSiu、螞蟻集團CEO井賢棟等加密和Web3領域重磅人物將出席香港金融科技周并發表演講。該活動將于10月31日至11月4日舉行。

10月16日,香港財政司司長陳茂波表示,特區政府將在該活動上發布有關虛擬資產在港發展的政策宣言,內容涵蓋愿景和策略、監管制度、對于開放投資者接觸虛擬資產的取態,以及為把握虛擬資產帶來的技術優勢推出先導項目。陳茂波稱,政策宣言將向全球業界展示推動香港發展成國際虛擬資產中心的愿景,以及與全球資產業界一同探索金融創新的承擔和決心。[2022/10/28 11:52:45]

下方是一個簡化的例子。

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

Okay Bear市值突破100萬SOL,已成為Solana鏈上第三大NFT系列:7月8日消息,鏈上分析公司Nansen在社交媒體上對NFT系列Okay Bear進行了分析,數據顯示當前Okay Bear市值已達到1,052,607SOL,成為Solana鏈上第三大NFT系列。不過自四月下旬以來,Okay Bear日均交易量已從峰值166,022SOL(1630萬美元)大幅下降至目前的1,468SOL(54.3萬美元),但仍然是MagicEden上交易量最大的前5名NFT系列之一,而且平均交易價格一直保持良好。此外,Okay Bear持有者中有61%在兩個月內沒有拋售行為,在持有5枚+OkayBear NFT的用戶中,有99位從未賣出過一只。[2022/7/8 1:59:41]

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

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

重慶市國家區塊鏈創新應用綜合性試點(渝中區)建設啟動:6月24日,重慶市國家區塊鏈創新應用綜合性試點(渝中區)建設啟動會在渝中區舉行,此次試點將從技術平臺、應用服務、產業生態、安全監管4個重點方向,重點打造28個區塊鏈應用場景,突出技術生態、產業生態、標準體系、人才體系構建,促進區塊鏈在政用、商用、民用領域的應用,挖掘釋放數據價值,推動全市數字經濟高質量發展。[2022/6/26 1:32:08]

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:DITREDIREDCREDILYO CreditPredictzREDLCSMARTCREDIT幣

Coinw
Tether項目周報(0417-0423)-ODAILY_tether

瑞士盧加諾市推出比特幣主題的共享工作空間瑞士盧加諾市推出比特幣主題的共享辦公空間。據悉,盧加諾新的以比特幣和點對點為重點的聯合辦公空間位于市中心,交通便利,將把這座城市提升到一個新的水平,成為加.

1900/1/1 0:00:00
2023年以太坊質押前景分析-ODAILY_ING

在經過多年的測試和開發后,“大合并”使以太坊成功地從工作量證明轉向了更高效的共識機制——權益證明.

1900/1/1 0:00:00
TRC20-USDT發行量已達411.2億枚,持有賬戶數超過2100萬-ODAILY_RC2

據區塊鏈瀏覽器TRONSCAN數據,目前,TRC20-USDT發行量已達411.2億枚,持有賬戶數超過2100萬.

1900/1/1 0:00:00
曼谷Web3見聞錄:數字游民天堂or混亂灰產基地-ODAILY_加密貨幣

曼谷,一座迷人的城市。得宜于其獨特的文化氛圍、異域色彩的風景、離中國并不遙遠的距離,成為了國人極為偏愛的旅游目的地.

1900/1/1 0:00:00
為什么說“小表模式”zkEVM更為高效-ODAILY_以太坊

前言 以太坊虛擬機是建立在以太坊區塊鏈上的代碼運行環境,合約代碼可對外完全隔離并在EVM內部運行,其主要作用是處理以太坊系統內的智能合約.

1900/1/1 0:00:00
Bitget研究院:FOMC加息會議放出鷹派言論,市場回調靜待ARB上線-ODAILY_ARB

過去24小時,市場出現了不少新的熱門幣種和話題,或許它們就是下一個市場焦點。 1.熱門項目 IC:狐貍圖片的MemeCoin,鏈上流動性$57萬,24小時交易量$461萬,市值$400萬,活躍度.

1900/1/1 0:00:00
ads