在這篇文章中,我們將簡要地解釋重入和跨函數重入之間的區別,以及圖靈不完備性如何能夠防止一些這樣的攻擊。
其中我們將提供一個跨函數重入利用的案例,該案例中Kadena區塊鏈使用的是編程語言Pact,但圖靈不完備性并未防止該惡意利用的發生。
Kadena區塊鏈旨在實現比其他L1鏈更高的可擴展性、安全性和可用性。其開發了一種新的語言用以編寫智能合約:Pact。
這種語言是人類可讀的,且易于形式化驗證,并具備可提高安全性的圖靈不完備性。
這里提到的圖靈不完備性意味著Pact無法做到圖靈完備編程語言(如Solidity或Haskell)所能做到的那些事——看起來好像是個劣勢,但其實智能合約編程,哪怕是最復雜的DeFi協議也很少會需要用到圖靈完備性。
圖靈不完備性最重要的一點是沒有無界遞歸。雖然這確實大大減少了攻擊面,但一些「經典」攻擊是無法被100%避免的,接下來我們就會講述跨函數重入的問題。
摩根大通:美聯儲的緊急貸款計劃可能會向美國銀行系統注入2萬億美元:金色財經報道,摩根大通表示,美聯儲的緊急貸款計劃可能會向美國銀行系統注入2萬億美元。(Watcher.Guru)[2023/3/16 13:07:49]
重入攻擊是非常常見的安全問題。這個問題不僅很難被開發者發現,也很難被審計師審查出其會導致的所有潛在后果。
重入攻擊取決于函數在進行外部調用之前和之后執行的特定任務的順序。
如果一個合約調用了一個不受信任的外部合約,攻擊者可以讓它一次又一次地重復這個函數調用,形成一個遞歸調用。而如果重新輸入的函數執行重要的任務(如更新賬戶的余額),那這可能就會導致災難性的后果。
下方是一個簡化的例子。
我們把易受攻擊的合約稱為unsafe合約,把惡意的合約稱為Attack合約。
1. 攻擊者調用unsafe合約,以將資金轉移到Attack合約中。
2. 收到調用之后,unsafe合約首先檢查攻擊者是否有資金,然后將資金轉移到Attack合約。
Pythagoras旗下基金2022年凈收益超8%:金色財經報道,加密貨幣量化交易公司 Pythagoras Investment Management LLC 創始人兼首席執行官 Mitchell Dong 表示,該公司的兩只基金在動蕩的2022年結束時上漲了 8%。其中市場中立的Pythagoras套利基金在 12 月份小幅上漲 0.1%,但年底凈收益為 8.8%,趨勢跟蹤動量基金在 12 月份下跌了 0.4%,但年底仍以 8.1% 的凈收益結束,該基金根據技術指標顯示的情況同時持有多頭和空頭頭寸。
擁有超過 25 年對沖基金運營經驗的Mitchell表示,Pythagoras 將其資產分散到至少十幾個交易所,其中任何一家券商的資金不超過 10%。[2023/1/26 11:30:15]
3. 收到資金后,Attack合約執行回退函數,在它能夠更新余額之前回調到不安全的合約,從而重新啟動該過程。
密碼管理平臺LastPass建議主密碼未遵循默認值的用戶更改密碼:金色財經報道,LastPass稱自2018年以來,其要求主密碼至少12個字符,可極大地降低暴力猜測密碼的能力。如果用戶的主密碼不遵循上述默認值,LastPass建議用戶考慮通過更改存儲的網站密碼來最大限度地降低風險。[2022/12/25 22:06:38]
因為這種攻擊是通過無界遞歸調用進行的,所以如果語言不是圖靈完備的,攻擊就不可能進行。
跨函數重入類似于經典的重入攻擊,除了重入的函數與進行外部調用的函數功能不同。這種重入攻擊通常更難被發現——因為在復雜的協議中,組合的可能性太多,無法手動測試每個可能的結果。
這就引出了我們的概念證明:使用Pact語言進行簡單的跨函數重入攻擊。
Pact模塊中的簡單跨函數重入
正如我們在下方代碼片段中看到的,合約中的函數對另一個實現特定接口的合約進行外部調用。這允許重入一個設計好的攻擊合約。Pact中的功能是內置函數,可授予用戶權限來執行敏感任務。以下代碼僅供說明之用,并非取自真實案例合約。
Avalanche:對FTX或Alameda沒有重大風險敞口:金色財經報道,Avalanche發推表示,對FTX或Alameda沒有重大風險敞口,Avalanche基金會沒有在FTX托管任何大筆金額,只有不到0.02%的財政部資產(包括一些非流動性代幣)在交易所上市。此外,Avalanche從未將代幣作為私人代幣銷售出售給公司。
Avalanche表示,該基金會不利用資產進行投機,也不會為了短期利益冒風險,決不會從事FTX和Alameda資產負債表上所見的那種“金融工程”。對所有受到當前形勢不利影響的人表示同情,希望每個人都能收回他們的資產。[2022/11/10 12:41:43]
我們將使用的代碼例子包含三個部分:
1. 合約接口
用以使主合約與一個惡意的外部模塊進行交互
數字藏品周指數持續回升至20.9點:金色財經報道,據同伴客數據顯示,上周(2022年10月24日-10月30日)數字藏品國際周指數上升2.5點至13.9點,國內周指數回升10.5點至31.5點,數字藏品綜合價值周指數上升5.7至20.9點。
備注:
· 數字藏品綜合價值指數由同伴客數據與鏈境Labs聯合研發,是對國際及國內當月市場熱度最高的數字藝術品項目市場總銷售規模的綜合反映,以2021年11月份銷售額的30分之7為基數,指數基值為100。
·國內周指數成分之一的幻核于8月16日發布平臺終止運營公告,但銷量已于7月10日后歸零。為遵循去掉某一成分后指數計算結果無變化的原則,該指數使用幻核7/4-7/10的銷售數據進行銷售基數調整,并將新的銷售基數作為8/14后的指數計算基數。[2022/10/31 12:01:14]
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:DITREDICREDITALADeCreditPREDICTIONMicroCreditTokengalaxynetwork
圍繞拋售壓力的討論再次成為熱門話題,但沒有人有充分的數據來深入研究這個話題。我最初提出的模型也已過時了,但還有人在繼續引用,因此有必要更新一下內容了.
1900/1/1 0:00:00來源:神譯局 科技的未來與人工智能(AI)的發展已經盤根錯節、密不可分。最近 OpenAI 發布了 ChatGPT 等一系列工具,人工智能驅動的應用程序和服務表現出了前所未有的潛力,如何擴大人工.
1900/1/1 0:00:00金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、礦業信息、項目動態、技術進展等行業動態。本文是其中的新聞周刊,帶您一覽本周區塊鏈行業大事.
1900/1/1 0:00:00原文作者:Guy Wuollet,a16z Crypto原文編譯:angelilu,Foresight Newsa16z 的 Web3 初創者加速器計劃「Crypto Startup Schoo.
1900/1/1 0:00:00Elon Musk 啟發了加密貨幣 Floki,許多人認為它是下一個 Shiba Inu,而 Floki 認為中國將在 2023 年引領世界經濟增長,下一波大規模加密增長將來自中國.
1900/1/1 0:00:00即使作為現貨 DEX 的龍頭,Uniswap 護城河遠沒有想象的那么寬廣,盈利潛力堪憂。 為何會如此?本文將用詳細的案例和數據為你解析。$UNI 因其作為“無意義的治理代幣”的代表而廣受批評.
1900/1/1 0:00:00