在這篇文章中,我們將簡要地解釋重入和跨函數重入之間的區別,以及圖靈不完備性如何能夠防止一些這樣的攻擊。
其中我們將提供一個跨函數重入利用的案例,該案例中Kadena區塊鏈使用的是編程語言Pact,但圖靈不完備性并未防止該惡意利用的發生。
Kadena區塊鏈旨在實現比其他L1鏈更高的可擴展性、安全性和可用性。其開發了一種新的語言用以編寫智能合約:Pact。
這種語言是人類可讀的,且易于形式化驗證,并具備可提高安全性的圖靈不完備性。
這里提到的圖靈不完備性意味著Pact無法做到圖靈完備編程語言(如Solidity或Haskell)所能做到的那些事——看起來好像是個劣勢,但其實智能合約編程,哪怕是最復雜的DeFi協議也很少會需要用到圖靈完備性。
圖靈不完備性最重要的一點是沒有無界遞歸。雖然這確實大大減少了攻擊面,但一些「經典」攻擊是無法被100%避免的,接下來我們就會講述跨函數重入的問題。
梁鳳儀:香港證監會對基金代幣化持開放態度:金色財經報道,6月5日,香港證監會行政總裁梁鳳儀出席香港投資基金公會年會致辭時表示,香港400間持有第9類提供資產管理牌照的公司,去年每季的財富管理收入錄得雙位數跌幅,今年首季按年持平。梁鳳儀表示,現時只有6個在港上市的交易所買賣基金(ETF)納入南向ETF通。到4月為止,ETF通的南向交易額達18億港元,占整體交易額的20%。她指出,人工智能可以賦能金融清算和結算,香港證監會對基金代幣化持開放態度。[2023/6/5 21:16:36]
重入攻擊是非常常見的安全問題。這個問題不僅很難被開發者發現,也很難被審計師審查出其會導致的所有潛在后果。
重入攻擊取決于函數在進行外部調用之前和之后執行的特定任務的順序。
如果一個合約調用了一個不受信任的外部合約,攻擊者可以讓它一次又一次地重復這個函數調用,形成一個遞歸調用。而如果重新輸入的函數執行重要的任務(如更新賬戶的余額),那這可能就會導致災難性的后果。
專家:以太坊上海硬分叉升級對以太坊有利:金色財經報道,以太坊上海硬分叉升級將于4月12日進行。許多專家認為,從長遠來看,硬分叉對以太坊有利。例如,到目前為止,上海的熱潮幫助以太坊在 4 月份的表現優于比特幣。截至 4 月 8 日,ETH/BTC 本月迄今已上漲約 4.75%,達到 0.066 BTC,自 3 月 20 日以來反彈了近 8%。?[2023/4/9 13:52:19]
下方是一個簡化的例子。
我們把易受攻擊的合約稱為unsafe合約,把惡意的合約稱為Attack合約。
1. 攻擊者調用unsafe合約,以將資金轉移到Attack合約中。
2. 收到調用之后,unsafe合約首先檢查攻擊者是否有資金,然后將資金轉移到Attack合約。
3. 收到資金后,Attack合約執行回退函數,在它能夠更新余額之前回調到不安全的合約,從而重新啟動該過程。
GameStop:Q3虧損近9500萬美元,將不再專注于加密貨幣:金色財經報道,游戲零售商GameStop表示,在第三季度凈虧損9470萬美元并裁員數字資產部門員工后,將不再專注于加密貨幣。GameStop首席執行官Matt Furlong表示,在過去一年中“主動將對加密貨幣的風險降至最低”,并且“目前不持有任何代幣的實質余額”,還表示,“盡管我們仍然相信數字資產在游戲世界中具有長期潛力,但我們沒有,也不會在這一領域冒險投入大量股東資本”。
此外,根據12月7日其向證券交易所提交的文件顯示,GameStop似乎仍在推進其NFT和區塊鏈計劃。此前報道,其在2022年的第三輪裁員中,從事區塊鏈和NFT項目的團隊受到的影響最大。[2022/12/9 21:33:23]
因為這種攻擊是通過無界遞歸調用進行的,所以如果語言不是圖靈完備的,攻擊就不可能進行。
跨函數重入類似于經典的重入攻擊,除了重入的函數與進行外部調用的函數功能不同。這種重入攻擊通常更難被發現——因為在復雜的協議中,組合的可能性太多,無法手動測試每個可能的結果。
比特幣月跌幅達14%,創下2015年以來最糟\"8月表現\":8月28日消息,BTC價格在本月已下跌14%,創下過去七年中最差的8月表現,但從歷史上看,比特幣在9月的表現通常比8月還要差。
Cubic Analytics高級市場分析師Caleb Franzen指出,BTC價格低于20,000美元將破壞自2020年首次突破該水平以來的樞軸區(pivot zone),如果比特幣無法在八月守住20,000美元支撐位,那么很可能會在九月下探14,000美元的支撐位。(Cointelegraph)[2022/8/28 12:54:01]
這就引出了我們的概念證明:使用Pact語言進行簡單的跨函數重入攻擊。
Pact模塊中的簡單跨函數重入
正如我們在下方代碼片段中看到的,合約中的函數對另一個實現特定接口的合約進行外部調用。這允許重入一個設計好的攻擊合約。Pact中的功能是內置函數,可授予用戶權限來執行敏感任務。以下代碼僅供說明之用,并非取自真實案例合約。
美國五角大樓報告:區塊鏈不是去中心化的,容易受到攻擊:金色財經報道,美國五角大樓發布了題為 \"區塊鏈是否去中心化,分布式賬本中的意外中心化 “的報告,報告認為,區塊鏈不是去中心化的,容易受到攻擊,而且運行的是過時的軟件。一部分參與者可以 \"對整個區塊鏈系統施加過度和中心化的控制\"。五角大樓國防高級研究計劃局 (DARPA) 聘請了安全研究機構Trail of Bits來調查區塊鏈。Trail of Bits 專注于比特幣和以太坊。Trail of Bits表示,只需要四個實體就能破壞比特幣,而只需要兩個實體來破壞以太坊。此外,60% 的比特幣流量僅通過三個ISP。該組織還發現了過時和未加密的軟件和區塊鏈協議。
Trail of Bits報告稱,區塊鏈的安全取決于其鏈外治理或共識機制的軟件和協議的安全性。而經過研究發現,全球領先的礦池ViaBTC為其賬戶分配了密碼 “123”。另一個挖礦組織Pooling甚至根本不驗證證書,而Slushpool--自2010年以來已挖出超過120萬枚比特幣--指示用戶忽略密碼欄。這三個礦池加起來約占比特幣哈希率的25%。
Trail of Bits警告說,加密貨幣礦工使用的節點可以使用廉價的云服務器輕松部署。這些節點可以被用來充斥網絡,即所謂的Sybil攻擊。Sybil攻擊可以執行eclipse攻擊,即惡意行為者試圖通過拒絕訪問節點來隔離用戶。[2022/6/30 1:40:47]
我們將使用的代碼例子包含三個部分:
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的余額。
之后,(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:DIT區塊鏈REDICRESmartCredit Token區塊鏈是騙局嗎Ripio Credit Networksecretnetwork幣總量
2023年2月9日,Coinbase首席執行官Brian Armstrong透露,有傳聞稱美國SEC可能會禁止面向散戶的加密貨幣質押服務.
1900/1/1 0:00:00作者:比推BitpushNews Mary Liu2月加息25個基點已經被市場徹底消化,市場關注點在于美聯儲主席是如何敘述未來政策路徑.
1900/1/1 0:00:00原文:Daesu 翻譯:雙木 編輯:Biteye 核心貢獻者 Crush2023 年開始火熱,Defi 敘事正在變革,讓我們看看發生了什么.
1900/1/1 0:00:00本文來自 Ethereum, org2 月 10 日, 以太坊官網更新質押提款(Staking withdrawals)頁面,其中詳細介紹以太坊質押提款的相關事項,包括質押獎勵領取.
1900/1/1 0:00:00撰寫:Miles Deutscher編譯:深潮 TechFlow2023 年是 ZK-rollups 的一年.
1900/1/1 0:00:00▌比特幣市值超過Visa金色財經報道,數據顯示,比特幣的市值目前為4732.3億美元,在過去24小時內下跌了0.5%。然而,Visa的市值目前為4601.3億美元.
1900/1/1 0:00:00