黑暗森林中的攻擊手法和防范措施。
本文來(lái)自 Medium,原文作者:Kofi Kufuor,由 Odaily 星球日?qǐng)?bào)譯者 Katie 辜編譯。

黑客今年從加密應(yīng)用程序中竊取了 20 多億美元。國(guó)慶期間,行業(yè)又經(jīng)歷了 TokenPocket 閃兌服務(wù)商被盜(損失超 2100 萬(wàn)美元)和 BNB Chain 跨鏈 橋 BSC Token Hub 遭攻擊(損失約 5.66 億美元)的加密盜竊事件。
隨著加密生態(tài)系統(tǒng)的發(fā)展,安全攻防戰(zhàn)只會(huì)越演越烈。因此,本文將:
提出加密安全事件的分類法;
列舉出迄今為止讓黑客最賺錢的攻擊手段;
回顧當(dāng)前用于防止黑客攻擊的工具的優(yōu)缺點(diǎn);
討論加密安全的未來(lái)。
黑客類型
加密應(yīng)用生態(tài)系統(tǒng)由互操作協(xié)議組成,由智能合約支持,依賴于鏈和互聯(lián)網(wǎng)的底層基礎(chǔ)設(shè)施。此堆棧的每一層都有其獨(dú)有的漏洞。我們可以根據(jù)利用的堆棧層和使用的方法對(duì)加密黑客進(jìn)行分類。

攻擊基礎(chǔ)設(shè)施
對(duì)基礎(chǔ)設(shè)施層的攻擊利用了加密應(yīng)用程序的底層系統(tǒng)中的弱點(diǎn):依賴用于達(dá)成共識(shí)的區(qū)塊鏈、用于前端的互聯(lián)網(wǎng)服務(wù)和用于私鑰管理的工具。
攻擊智能合約語(yǔ)言
這一層的黑客利用了智能合約語(yǔ)言(如 Solidity)的弱點(diǎn)和漏洞,例如可重入性(reentrancy)和實(shí)現(xiàn)委托調(diào)用(delegatecall)的危險(xiǎn),這些可以通過(guò)遵循安全規(guī)范來(lái)規(guī)避。
攻擊協(xié)議邏輯
這類攻擊利用單個(gè)應(yīng)用程序業(yè)務(wù)邏輯中的錯(cuò)誤。如果黑客發(fā)現(xiàn)了一個(gè)錯(cuò)誤,他們可以利用這個(gè)錯(cuò)誤觸發(fā)應(yīng)用程序開(kāi)發(fā)者沒(méi)有預(yù)料到的行為。
例如,如果一個(gè)新的 DEX 在決定用戶從交易中獲得多少錢的數(shù)學(xué)方程中出現(xiàn)了錯(cuò)誤,那么這個(gè)錯(cuò)誤就可以被利用,使用戶從交易中獲得比本應(yīng)可能獲得的更多的錢。
協(xié)議邏輯級(jí)攻擊還可以利用用于控制應(yīng)用程序參數(shù)的治理系統(tǒng)。
攻擊生態(tài)系統(tǒng)
許多知名的加密黑客利用了多個(gè)應(yīng)用程序之間的交互。最常見(jiàn)的是黑客利用一個(gè)協(xié)議中的邏輯錯(cuò)誤,利用從另一個(gè)協(xié)議借來(lái)的資金來(lái)擴(kuò)大攻擊規(guī)模。
通常,用于生態(tài)系統(tǒng)攻擊的資金是通過(guò)閃電貸(flashloan)借來(lái)的。在執(zhí)行閃電貸時(shí),你可以從 Aave 和 dYdX 等協(xié)議的流動(dòng)性池中借到你想要的金額。
數(shù)據(jù)分析
我收集了 2020 年以來(lái) 100 起規(guī)模最大的加密貨幣黑客攻擊的數(shù)據(jù)集,被盜資金總計(jì) 50 億美元。
生態(tài)系統(tǒng)受到的攻擊最為頻繁。他們占 41%。

協(xié)議邏輯漏洞導(dǎo)致了最多的金錢損失。
金額最大的三個(gè)攻擊:Ronin 跨鏈橋攻擊(6.24 億美元),Poly Network 攻擊(6.11 億美元)和 BSC 跨鏈橋攻擊(5.7 億美元)。

如果排除前三大攻擊,則針對(duì)基礎(chǔ)設(shè)施的被盜案件是損失資金最多的類別。

黑客是如何下手的?
基礎(chǔ)設(shè)施
在 61% 的基礎(chǔ)設(shè)施漏洞中,私鑰是通過(guò)未知的方式泄露的。黑客可能通過(guò)網(wǎng)絡(luò)釣魚(yú)郵件和虛假招聘廣告等社會(huì)攻擊獲得這些私鑰。

智能合約語(yǔ)言
可重入性攻擊是智能合約語(yǔ)言級(jí)別上最熱門的攻擊類型。
在可重入攻擊中,易受攻擊的智能合約中的函數(shù)調(diào)用惡意合約上的一個(gè)函數(shù)。或者,當(dāng)易受攻擊的合約向惡意的合約發(fā)送代幣時(shí),可以觸發(fā)惡意合約中的函數(shù)。然后,在合約更新其余額之前,惡意函數(shù)在遞歸循環(huán)中回調(diào)易受攻擊的函數(shù)。
例如,在 Siren Protocol 黑客攻擊中,提取質(zhì)押品代幣的函數(shù)很容易被重入,并被反復(fù)調(diào)用(每次惡意合約接收代幣時(shí)),直到所有質(zhì)押品耗盡。

協(xié)議邏輯
協(xié)議層上的大多數(shù)漏洞都是特定應(yīng)用程序獨(dú)有的,因?yàn)槊總€(gè)應(yīng)用程序都有唯一的邏輯(除非它是純分叉 )。
訪問(wèn)控制錯(cuò)誤是樣本組中最常見(jiàn)的重復(fù)出現(xiàn)的問(wèn)題。例如,在 Poly Network 黑客事件中,“EthCrossChainManager” 合約有一個(gè)任何人都可以調(diào)用的功能來(lái)執(zhí)行跨鏈交易。
注意:有很多情況下,多個(gè)協(xié)議使用相同的技術(shù)會(huì)被黑客攻擊,因?yàn)閳F(tuán)隊(duì)分叉了一個(gè)有漏洞的代碼庫(kù)。
例如,許多 Compound 分叉,如 CREAM、Hundred Finance 和 Voltage Finance 都成為了重入性攻擊的受害者,因?yàn)?Compound 的代碼在允許交互之前無(wú)需檢查交互的效果。這對(duì) Compound 來(lái)說(shuō)很有效,因?yàn)樗麄儗彶榱怂麄冎С值拿總€(gè)新代幣的漏洞,但制作分叉的團(tuán)隊(duì)并沒(méi)有這么做。

生態(tài)系統(tǒng)
98% 的生態(tài)系統(tǒng)攻擊中都使用了閃電貸。
閃電貸攻擊通常遵循以下公式:使用貸款進(jìn)行大規(guī)模交易,推高貸款協(xié)議用作喂價(jià)( price feed)的 AMM 上的代幣價(jià)格。然后,在同一筆交易中,使用膨脹的代幣作為質(zhì)押品,獲得遠(yuǎn)高于其真實(shí)價(jià)值的貸款。

黑客在哪里下手?
根據(jù)失竊的合約或錢包所在的鏈對(duì)數(shù)據(jù)集進(jìn)行分析。以太坊的黑客數(shù)量最多,占樣本組的 45%。BIAN 智能鏈(BSC)以 20% 的份額位居第二。
造成這種情況的因素有很多:
以太坊和 BSC 擁有最高的 TVL(在應(yīng)用程序中存入的資金),所以對(duì)這些鏈上的黑客來(lái)說(shuō),獎(jiǎng)勵(lì)的規(guī)模更大。
大多數(shù)加密貨幣開(kāi)發(fā)人員都知道 Solidity,這是以太坊和 BSC 上的智能合約語(yǔ)言,而且有更復(fù)雜的工具支持該語(yǔ)言。

以太坊的被盜資金最多(20 億美元)。BSC 位居第二(8.78 億美元)。

涉及跨鏈橋或多鏈應(yīng)用程序(例如多鏈交易或多鏈借貸)對(duì)數(shù)據(jù)集產(chǎn)生了巨大的影響。盡管這些黑客事件只占總數(shù)的 10%,但卻竊取了 25.2 億美元的資金。

如何防止黑客攻擊?
對(duì)于威脅堆棧的每一層,我們都可以使用一些工具來(lái)早期識(shí)別潛在的攻擊載體并防止攻擊的發(fā)生。
基礎(chǔ)設(shè)施
大多數(shù)大型基礎(chǔ)設(shè)施黑客攻擊都涉及黑客獲取諸如私鑰等敏感信息。遵循良好的操作安全(OPSEC)步驟并進(jìn)行經(jīng)常性的威脅建模可以降低這種情況發(fā)生的可能性。擁有良好 OPSEC 流程的開(kāi)發(fā)團(tuán)隊(duì)可以:
識(shí)別敏感數(shù)據(jù)(私鑰、員工信息、API 密鑰等);
識(shí)別潛在的威脅(社會(huì)攻擊、技術(shù)利用、內(nèi)部威脅等);
找出現(xiàn)有安全防御的漏洞和弱點(diǎn);
確定每個(gè)漏洞的威脅級(jí)別;
制定并實(shí)施減輕威脅的計(jì)劃。
智能合約語(yǔ)言和協(xié)議邏輯
1. 模糊測(cè)試工具
模糊測(cè)試工具,如 Echidna,測(cè)試智能合約如何對(duì)大量隨機(jī)生成的交易做出反應(yīng)。這是檢測(cè)特定輸入產(chǎn)生意外結(jié)果的邊緣情況的好方法。
2. 靜態(tài)分析
靜態(tài)分析工具,如 Slither 和 Mythril,自動(dòng)檢測(cè)智能合約中的漏洞。這些工具非常適合快速找出常見(jiàn)的漏洞,但它們只能捕獲一組預(yù)定義的問(wèn)題。如果智能合約存在工具規(guī)范中沒(méi)有的問(wèn)題,也不會(huì)被發(fā)現(xiàn)。
3. 形式化驗(yàn)證
形式化驗(yàn)證工具,如 Certora,將比較智能合約與開(kāi)發(fā)人員編寫(xiě)的規(guī)范。該規(guī)范詳細(xì)說(shuō)明了代碼應(yīng)該做什么以及所需的屬性。例如,開(kāi)發(fā)人員在構(gòu)建一個(gè)貸款應(yīng)用程序時(shí),會(huì)指定每筆貸款都必須有足夠的質(zhì)押品支持。如果智能合約的任何可能行為不符合規(guī)范,則形式化驗(yàn)證者將識(shí)別該違規(guī)行為。
形式化驗(yàn)證的缺點(diǎn)是測(cè)試只和規(guī)范保持一樣的標(biāo)準(zhǔn)。如果所提供的規(guī)范沒(méi)有說(shuō)明某些行為或過(guò)于寬松,那么驗(yàn)證過(guò)程將無(wú)法捕獲所有的錯(cuò)誤。
4. 審計(jì)和同行評(píng)審
在審計(jì)或同行評(píng)審期間,一組受信任的開(kāi)發(fā)人員將測(cè)試和評(píng)審項(xiàng)目代碼。審計(jì)員將撰寫(xiě)一份報(bào)告,詳細(xì)說(shuō)明他們發(fā)現(xiàn)的漏洞,以及如何修復(fù)這些問(wèn)題的建議。
讓專業(yè)的第三方評(píng)審合約是發(fā)現(xiàn)原始團(tuán)隊(duì)遺漏的漏洞的好方法。然而,審核員也是人,他們永遠(yuǎn)不會(huì)捕抓到所有漏洞。此外要信任審計(jì)員,如果審計(jì)員發(fā)現(xiàn)了問(wèn)題,他們會(huì)告訴您,而不是自己利用它。
5. 生態(tài)系統(tǒng)攻擊
盡管生態(tài)系統(tǒng)攻擊是最常見(jiàn)和最具破壞性的類型,現(xiàn)有工具中沒(méi)有很多工具適合防止這類攻擊。自動(dòng)安全工具專注于每次在一個(gè)合約中查找錯(cuò)誤。審計(jì)通常無(wú)法解決如何利用生態(tài)系統(tǒng)中多個(gè)協(xié)議之間的交互。
像 Forta 和 tenerly Alerts 這樣的監(jiān)視工具可以在發(fā)生組合性攻擊時(shí)提供早期警告,以便團(tuán)隊(duì)采取行動(dòng)。但在閃電貸攻擊中,資金通常在單筆交易中被盜,因此任何預(yù)警都太晚了,無(wú)法防止巨大損失。
威脅檢測(cè)模型可以用來(lái)發(fā)現(xiàn)內(nèi)存池中的惡意交易,在節(jié)點(diǎn)處理它們之前,交易就存在于內(nèi)存池中,但黑客可以通過(guò)使用 flashbot 等服務(wù)直接將交易發(fā)送給礦工,從而繞過(guò)這些檢查。
加密安全的未來(lái)
我對(duì)加密安全的未來(lái)有兩個(gè)預(yù)測(cè):
1. 我相信最好的團(tuán)隊(duì)將從把安全視為基于事件的實(shí)踐(測(cè)試->同行評(píng)審->審核)轉(zhuǎn)變?yōu)閷⑵湟暈橐粋€(gè)連續(xù)的過(guò)程。他們將:
對(duì)主代碼庫(kù)中的每一個(gè)新增代碼執(zhí)行靜態(tài)分析和模糊處理;
對(duì)每一次重大升級(jí)都進(jìn)行正式驗(yàn)證;
建立具有響應(yīng)動(dòng)作的監(jiān)視和警報(bào)系統(tǒng)(暫停整個(gè)應(yīng)用程序或受影響的特定模塊);
讓一些團(tuán)隊(duì)成員制定和維護(hù)安全自動(dòng)化和攻擊響應(yīng)計(jì)劃。
安全工作不應(yīng)在審計(jì)后結(jié)束。在許多情況下,例如 Nomad 跨鏈橋黑客攻擊,其漏洞是基于審計(jì)后升級(jí)中引入的錯(cuò)誤。
2. 加密安全社區(qū)應(yīng)對(duì)黑客攻擊的過(guò)程將變得更有組織和精簡(jiǎn)。每當(dāng)黑客攻擊發(fā)生時(shí),貢獻(xiàn)者就會(huì)涌入加密安全群組聊天,渴望提供幫助,但缺乏組織意味著重要細(xì)節(jié)可能會(huì)在混亂中丟失。我認(rèn)為在未來(lái),這些群聊將轉(zhuǎn)變成更有條理的組織形式:
使用鏈上監(jiān)控和社交媒體監(jiān)控工具,快速檢測(cè)主動(dòng)攻擊;
使用安全信息和事件管理工具協(xié)調(diào)工作;
采取獨(dú)立的工作流程,使用不同的渠道溝通黑白客的工作、數(shù)據(jù)分析、根本原因和其他任務(wù)。
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。



