在這篇文章中,我們將簡要地解釋重入和跨函數重入之間的區別,以及圖靈不完備性如何能夠防止一些這樣的攻擊。
其中我們將提供一個跨函數重入利用的案例,該案例中Kadena區塊鏈使用的是編程語言Pact,但圖靈不完備性并未防止該惡意利用的發生。
事件簡介
Kadena區塊鏈旨在實現比其他L1鏈更高的可擴展性、安全性和可用性。其開發了一種新的語言用以編寫智能合約:Pact。
這種語言是人類可讀的,且易于形式化驗證,并具備可提高安全性的圖靈不完備性。
這里提到的圖靈不完備性意味著Pact無法做到圖靈完備編程語言所能做到的那些事——看起來好像是個劣勢,但其實智能合約編程,哪怕是最復雜的DeFi協議也很少會需要用到圖靈完備性。
IMF:全球對CBDC表現出前所未有的興趣:金色財經報道,國際貨幣基金組織(IMF)副總裁李波將央行數字貨幣(CBDC)的興趣水平描述為“前所未有”。已有 40 個國家向 IMF 尋求援助,IMF 已與近 30 個國家進行了接觸。關鍵要點之一是 CBDC 興趣的各種動機,其中加密資產位居榜首。對于發達經濟體,驅動因素包括維持中央銀行對數字支付系統的參與、加強支付競爭以及支持代幣化。相比之下,新興和發展中經濟體將普惠金融視為一個主要因素。
國際貨幣基金組織希望繼續與其他國際機構合作。盡管國際清算銀行在 CBDC 方面被認為是全球主要參與者,但國際貨幣基金組織指出,國際清算銀行并不直接為大多數 EMDE(發展中經濟體)服務。[2023/4/13 14:02:13]
圖靈不完備性最重要的一點是沒有無界遞歸。雖然這確實大大減少了攻擊面,但一些「經典」攻擊是無法被100%避免的,接下來我們就會講述跨函數重入的問題。
Paxos CEO:正向OCC申請銀行執照,已促成超28億美元BUSD贖回且未擾亂加密市場:金色財經報道,針對美國證券交易委員會單方面發布了“韋爾斯通知(Wells Notice)”稱BUSD是一種證券,Paxos首席執行官Charles Cascarilla提出異議,并指出根據Howey測試和Reves測試都證明BUSD不符合證券標準,因為穩定幣總是由現金和等價物支持(比如美元和美國債券),他還表示Paxos截至目前已促成超過28億美元的BUSD贖回且沒有擾亂加密市場,未來可能會“捍衛訴訟地位”并將在“必要時對美國證券交易委員會積極提起訴訟”。此外,Charles Cascarilla透露Paxos正在向美國貨幣監理署 (OCC) 提出申請以尋求獲得銀行執照。(CryptoSlate)[2023/2/22 12:21:53]
經典重入攻擊
重入攻擊是非常常見的安全問題。這個問題不僅很難被開發者發現,也很難被審計師審查出其會導致的所有潛在后果。
Ark Invest增持約13.9萬股Coinbase股票以及逾26萬股Robinhood股票:2月11日消息,交易通知電子郵件顯示,周五,Ark Invest在其投資組合中增持139105股Coinbase股票(價值7941504.45美元),同時增持263504股Robinhood股票(價值2629769.92美元)。由于擔心美國監管機構將限制加密貨幣質押服務,周五Coinbase的股價暴跌,似乎是一個買入的好時機。(The Block)[2023/2/11 12:01:09]
重入攻擊取決于函數在進行外部調用之前和之后執行的特定任務的順序。
如果一個合約調用了一個不受信任的外部合約,攻擊者可以讓它一次又一次地重復這個函數調用,形成一個遞歸調用。而如果重新輸入的函數執行重要的任務,那這可能就會導致災難性的后果。
下方是一個簡化的例子。
我們把易受攻擊的合約稱為unsafe合約,把惡意的合約稱為Attack合約。
數據:2023年1月份比特幣礦工收入環比增長50%至2300萬美元:1月30日消息,比特幣礦工在 2023 年 1 月賺取的收入較上月增長約 50%,達到約 2300 萬美元。上個月,比特幣挖礦收入約為 1500 萬美元,這與不斷上漲的能源成本一起,鼓勵 BTC 礦工兌現其挖礦和持有的資產。與此同時,近日比特幣算力突破300EH/s,創歷史新高。[2023/1/30 11:36:43]
1.攻擊者調用unsafe合約,以將資金轉移到Attack合約中。
2.收到調用之后,unsafe合約首先檢查攻擊者是否有資金,然后將資金轉移到Attack合約。
3.收到資金后,Attack合約執行回退函數,在它能夠更新余額之前回調到不安全的合約,從而重新啟動該過程。
Fantom基金會:正在敲定fUSD清算代碼庫,目前處于審計中:5月17日消息,Fantom基金會在推特上宣布,正在敲定fUSD清算代碼庫,目前正在審計中。如果審計通過,清算機制將在3-4周內準備好生效。
注:fUSD是一種超額抵押的穩定幣,使用被質押的FTM(sFTM)作為抵押品。
CoinMarketCap數據顯示,fUSD現報0.7403美元,24小時跌幅為11.23%,處于嚴重脫錨狀態。[2022/5/17 3:22:19]
因為這種攻擊是通過無界遞歸調用進行的,所以如果語言不是圖靈完備的,攻擊就不可能進行。
跨函數重入
跨函數重入類似于經典的重入攻擊,除了重入的函數與進行外部調用的函數功能不同。這種重入攻擊通常更難被發現——因為在復雜的協議中,組合的可能性太多,無法手動測試每個可能的結果。
這就引出了我們的概念證明:使用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:DITCRECREDITCredgamecreditsSecretYFI CREDITS GROUPNolian Credits
我們已經感受到香港Web3的敘事正在OnchainRealWorldAssets,這或許是中國香港在途徑加密經濟前往下一個數字文明時代最為正確也切實可行的路徑.
1900/1/1 0:00:00過去一周,波場TRON各項目進展順利,并取得了豐碩成果。 Cointelegraph盤點波場TRON 2022年度22大成就:1月8日消息,日前,區塊鏈行業媒體Cointelegraph發布波場.
1900/1/1 0:00:004月3日,火必發布官方公告,宣布已與GalaGames協商完成pGALA增發攻擊事件受損用戶賠償計劃,賠償金額達5000萬美金.
1900/1/1 0:00:00BitfinexAlpha|利率繼續上漲,但持有者持續買入依然堅韌的美國經濟為軟著陸帶來了一線希望。盡管美聯儲從去年開始大幅加息,但PMI產出數據顯示經濟仍在增長.
1900/1/1 0:00:00原文作者:ThePASSTeam隨著區塊鏈的出現和發展,越來越多的行業開始追求開放、透明、去中心化.
1900/1/1 0:00:00各位朋友,歡迎來到SignalPlus每日晨報。SignalPlus晨報每天為各位更新宏觀市場信息,并分享我們對宏觀趨勢的觀察和看法。歡迎追蹤訂閱,與我們一起關注最新的市場動態.
1900/1/1 0:00:00