在這篇文章中,我們將簡要地解釋重入和跨函數重入之間的區別,以及圖靈不完備性如何能夠防止一些這樣的攻擊。
其中我們將提供一個跨函數重入利用的案例,該案例中Kadena區塊鏈使用的是編程語言Pact,但圖靈不完備性并未防止該惡意利用的發生。
事件簡介
Kadena區塊鏈旨在實現比其他L1鏈更高的可擴展性、安全性和可用性。其開發了一種新的語言用以編寫智能合約:Pact。
這種語言是人類可讀的,且易于形式化驗證,并具備可提高安全性的圖靈不完備性。
這里提到的圖靈不完備性意味著Pact無法做到圖靈完備編程語言所能做到的那些事——看起來好像是個劣勢,但其實智能合約編程,哪怕是最復雜的DeFi協議也很少會需要用到圖靈完備性。
Bigg Digital Assets:確認在SilverGate以及硅谷銀行都沒有風險敞口:金色財經報道,加拿大加密貨幣公司Bigg Digital Assets稱,確認在SilverGate以及硅谷銀行都沒有風險敞口。[2023/3/11 12:55:24]
圖靈不完備性最重要的一點是沒有無界遞歸。雖然這確實大大減少了攻擊面,但一些「經典」攻擊是無法被100%避免的,接下來我們就會講述跨函數重入的問題。
經典重入攻擊
重入攻擊是非常常見的安全問題。這個問題不僅很難被開發者發現,也很難被審計師審查出其會導致的所有潛在后果。
重入攻擊取決于函數在進行外部調用之前和之后執行的特定任務的順序。
如果一個合約調用了一個不受信任的外部合約,攻擊者可以讓它一次又一次地重復這個函數調用,形成一個遞歸調用。而如果重新輸入的函數執行重要的任務,那這可能就會導致災難性的后果。
Gartner:Web3.0 技術將很快達到其采用的臨界點:金色財經報道,根據Market Research Future的數據,到 2023 年,Web3.0 區塊鏈技術領域的價值將超過 6 萬億美元,從 2023 年到 2030 年,Web3.0 將繼續以 44.6% 的復合年增長率增長。由于 Web3.0 嚴重依賴區塊鏈,許多人錯誤地認為它的命運不可避免地與動蕩的加密貨幣市場有關。然而,加密貨幣只是新領域的一部分。Gartner解釋說,雖然加密貨幣在 2022 年上半年崩盤,但決策者不應假設 Web3.0 技術的價值受到影響。據這家研究和咨詢公司稱,Web3.0 技術將很快達到其采用的臨界點,從飛機維修到食品安全等行業都將對其應用進行代幣化。
Market Research Future 高級研究分析師 Aarti Dhapte表示,區塊鏈是一項經過驗證的技術,可確保加密貨幣和 NFT 的安全性更上一層樓。現在,它已準備好最終改變下一代網絡技術。Web3區塊鏈將徹底改變不同行業現有的常規流程。[2022/9/4 13:07:30]
下方是一個簡化的例子。
孫宇晨回應外媒稱“支持以太坊硬分叉是為賺快錢”:Poloniex不對ETH交易收取費用,完全是為公共利益:8月8日消息,針對外媒Crypto Slate報道稱,Vitalik Buterin在韓國區塊鏈周期間的一次非公開新聞發布會上表示,人們推動以太坊硬分叉以保留PoW“只是想快速賺錢”。Vitalik表示,他只看到社區內部對權益證明的支持,并指出大多數想要保留工作量證明的人都是以太坊生態系統的“局外人”。Crypto Slate稱,孫宇晨最近宣布通過在他的Poloniex交易所上架兩個新代幣來支持以太坊合并后的硬分叉,代幣將被命名為ETHS和ETHW,分別與PoS和PoW相關,GPU礦工在合并后繼續挖礦以太坊。
據報道,一些中國礦工已與孫宇晨簽約成為這條新鏈的一部分。此外,孫宇晨正在尋求激勵分叉以太坊的舉措,以在PoW鏈中保留當前網絡的一個版本。如果該鏈成為現實,他將提供高達100萬個ETHW來建立一個開發者社區。Crypto Slate強調稱,Tron區塊鏈的創始人孫宇晨在許多方面無疑是以太坊生態系統的局外人。Vitalik還提到硬分叉的支持者“擁有交易所,只是想快速賺錢”。
孫宇晨回應稱,不確定Vitalik Buterin是否真的這么說。但他澄清,Poloniex支持ETH硬分叉完全是為了公共利益,而不是為了盈利。Poloniex目前不對ETHS/ETHW交易收取任何費用。如果硬分叉成功,以太坊上的每個人都將獲得ETHW代幣,無需任何預挖。Vitalik將獲得與我和所有人完全相同的ETHW比例。他只支持PoW應該作為合并后以太坊的共識機制存在。[2022/8/8 12:09:27]
我們把易受攻擊的合約稱為unsafe合約,把惡意的合約稱為Attack合約。
Algorand任命首席運營官W. Sean Ford為新的臨時CEO:7月27日消息,繼前任首席執行官 Steven Kokinos 離職后,Algorand 于周三任命了一位新的臨時首席執行官。 長期員工 W. Sean Ford(前區塊鏈公司的首席運營官)將接替 Kokinos,他將繼續擔任高級顧問,直到 2023 年年中。在他之前的角色中,Ford 負責產品管理、工程、營銷和全球社區發展。[2022/7/27 2:41:40]
1.攻擊者調用unsafe合約,以將資金轉移到Attack合約中。
2.收到調用之后,unsafe合約首先檢查攻擊者是否有資金,然后將資金轉移到Attack合約。
3.收到資金后,Attack合約執行回退函數,在它能夠更新余額之前回調到不安全的合約,從而重新啟動該過程。
因為這種攻擊是通過無界遞歸調用進行的,所以如果語言不是圖靈完備的,攻擊就不可能進行。
跨函數重入
跨函數重入類似于經典的重入攻擊,除了重入的函數與進行外部調用的函數功能不同。這種重入攻擊通常更難被發現——因為在復雜的協議中,組合的可能性太多,無法手動測試每個可能的結果。
這就引出了我們的概念證明:使用Pact語言進行簡單的跨函數重入攻擊。
Pact模塊中的簡單跨函數重入
正如我們在下方代碼片段中看到的,合約中的函數對另一個實現特定接口的合約進行外部調用。這允許重入一個設計好的攻擊合約。Pact中的功能是內置函數,可授予用戶權限來執行敏感任務。以下代碼僅供說明之用,并非取自真實案例合約。
我們將使用的代碼例子包含三個部分:
1.合約接口
被攻擊的模擬示例合約
首先,數據庫被定義為一個表,其中字符串存儲在具有關聯十進制數的行中。
然后定義了一個能力:CREDIT。這個條件將是credit函數所需要的,但只被with_capability語句中的bad_function內部授予。這意味著直接調用credit會失敗。
現在,函數credit被定義如下:它增加了作為輸入的字符串的余額。如果該地址不在表中,它還會創建該條目。
最后,函數bad_function增加了legit_address的余額,但也執行了對符合之前定義的接口的合約的調用,該合約可以作為一個輸入參數提供。
函數get-balance允許我們讀取該表格。
3.用于觸發重入的模塊:
之后,返回10,返回100。
重入成功。
現在,如果我們不重入調用credit,而是嘗試重入再次調用bad_function,會發生什么?即使第一次調用credit成功,由于重入是在bad_function中,這將是一個遞歸調用且執行將會失敗。
現在,如果我們嘗試直接調用external_function,這將不起作用,因為所需的功能CREDIT沒有被授予。
寫在最后
通過移除無界遞歸,圖靈不完備性可以防止一些重入攻擊的載體。
然而,由于跨函數重入可以在沒有遞歸調用的情況下進行,圖靈不完備性并不能阻止所有此類攻擊載體,因此用戶在與這種語言交互時不應該假設重入不會造成惡劣影響。
重入和跨函數重入是非常常見的安全問題,Web3.0領域也因此發生了一系列規模巨大的攻擊事件。
Pact作為一種智能合約編程語言,極具潛力。
它采取的方法與其他語言如Solidity或Haskell有些不同。Pact并不完全依靠圖靈不完備性來提高安全性;該語言被設計地更容易閱讀、理解和正式驗證。
然而,沒有哪種編程語言能對所有的攻擊載體免疫。因此開發者必須了解他們所使用的語言的獨特功能,并且在部署前對所有項目進行徹底審計。
目前,CertiK的審計及端到端解決方案已覆蓋目前市面上大部分生態系統,并支持幾乎所有主流編程語言,就區塊鏈平臺、數字資產交易平臺、智能合約的安全性等領域為各個生態鏈提供安全技術支持。
Tags:區塊鏈ETH以太坊DIT國內區塊鏈公司前十排名togetherbnb手游下載中文版rly幣為什么要關閉以太坊側鏈YFI CREDITS GROUP
原文作者:Messari-AshuPareek原文編譯:BlockTurbo雖然美元可能不是最好的貨幣,但在2022年毫無疑問它仍然是最重要的貨幣。作為全球儲備貨幣,美元有助于理解資產價格.
1900/1/1 0:00:00金色財經報道,美國商務部周五發布的報告顯示,12月份美國家庭支出環比下降0.2%,而11月份的降幅向下修正為0.1%。家庭上個月削減了商品支出,并略微增加了服務支出.
1900/1/1 0:00:00尊敬的CITEX用戶: 邀好友,玩合約,贏獎勵;CITEX平臺為此舉辦“邀好友,玩合約,瓜分5,000美金獎池”的活動.
1900/1/1 0:00:00親愛的BitMart用戶:?BitMart將開啟MarsProtocol(MARS)充值功能。開放時間請參照:充值功能:2023年1月31日15:00PM(UTC)感謝您的支持!Peter Sc.
1900/1/1 0:00:00Dearusers, HuobihasnowresumedORB(Orbcity)depositsandwithdrawals.Thanksforyoursupport!Clickheretod.
1900/1/1 0:00:001月28日消息,PayPal通報美國緬因州檢察長辦公室,表示他們于去年12月20日發現遭受黑客攻擊,并在調查后認為事件發生于12月6日到8日期間.
1900/1/1 0:00:00