Back to Blog

Podcast:BlockSec 如何即時攔截 1500 萬美元的 Web3 攻擊

Phalcon
February 2, 2024
26 min read

BlockSec 執行長 Andy Zhou 受邀參與 Spraping Bits 播客節目,共同探討 BlockSec 團隊如何在 Web3 混亂且複雜的環境中辨識並緩解潛在的安全漏洞。以下是我們為您整理的精彩內容精選。若要收聽播客完整版,請點擊此處

Andy Zhou 00:00

我們團隊內部運行著一套系統,甚至能在駭客發送攻擊交易之前就偵測到攻擊合約。這是因為他們必須先部署攻擊合約,然後才能發送交易來攻擊協議。因此,即使在攻擊交易發生之前,當駭客部署攻擊智能合約時,我們基於 AI 的引擎就能精準識別出惡意合約。

Andy Zhou 00:53

謝謝你,DeGatchi。我也很榮幸能來到這裡。

DeGatchi 00:56

這也是我的榮幸。非常感謝!對於那些不認識你的人,能請你自我介紹一下嗎?你是誰,以及你平常的工作是什麼?

Andy Zhou 01:02

我叫 Andy。我是 BlockSec 的執行長,同時也是中國頂尖學府浙江大學的教授。我在網路安全領域擁有超過 10 年的經驗。先前我是從事智慧型手機安全領域的工作,後來轉向智能合約安全已數年之久。

DeGatchi 01:22

你當初進入智能合約安全領域時的情境是怎樣的?你當時是做人工審計,還是直接跳入自動化領域?這有點像我當時的做法。

Andy Zhou 01:30

在智能合約安全方面,無論是在公司還是在我們的研究團隊中,我們同時採用靜態和動態分析。關於靜態分析,我們開發了幾種不同的技術來強化智能合約的靜態分析。這是因為目前社群中大多數工具都存在一些共同問題,即會有太多的誤報(False Positives)。例如,如果你想使用一個工具來偵測重入(Reentrancy)問題,將一個簡單的智能合約丟進去,它可能會報告許多重入問題或其他問題。但當你手動檢查這些報告時,你會發現大部分都是誤報。所以我們發現,誤報是目前靜態分析工具的主要問題。

Andy Zhou 02:20

造成這些誤報的根本原因,在於對智能合約語義(Semantics)的理解不足。語義是指變數背後的意義及其在合約中的關係。例如,如果你有一個 ERC-20 代幣,它會有代表每個擁有者餘額的變數,以及授權值(Approved Value),表示誰授權了多少金額給誰。為了提高靜態分析的精確度,必須精確識別哪些變數對應到餘額,哪些變數與授權及其他特定功能相關。透過這種方式,我們可以大幅提高靜態分析的精確度。

Andy Zhou 03:00

我們從開發靜態分析工具的經驗中獲得的一個見解是,需要一個強大的污染分析(Taint Analysis)引擎來建立變數之間的相關性。資料流分析(Data flow analysis)是靜態分析工具採用的一種基礎技術,發揮著至關重要的作用。它涉及對記憶體和儲存的建模,以及如何精確且高效地在靜態分析工具中利用污染分析技術。事實證明,污染分析和資料流分析這兩項關鍵技術,對於增強我們靜態分析工具的能力非常有效。

Andy Zhou 03:48

在我們的研究團隊中,我們開發並部署了這套靜態分析工具,並分析了區塊鏈上創建的每一個新智能合約。我們會將發現的零日漏洞報告給開發者。遺憾的是,有些開發者並不關心漏洞。我們甚至找不到有效的管道來聯繫他們。這真的很令人難過。

Andy Zhou 04:13

如果你想要一個非常有效的靜態分析工具,你就必須掌握語義,並且需要有一個污染分析引擎。這就是我們在靜態分析工具上的經驗。除了靜態分析工具外,我們研究團隊還有一個動態分析工具。這是因為除了易受攻擊的智能合約外,我們還想辨識出惡意交易,對吧?

Andy Zhou 04:31

這不僅僅關於分析易受攻擊的智能合約,還關於偵測任何可能正在攻擊協議或其他智能合約的交易。為了達成這個目標,我們有一個具備檢測功能的自訂虛擬機器。這讓我們能夠編寫自己的偵測規則,這些規則可以輕鬆地掛載到任何給定智能合約的虛擬機器或執行環境中。我們擷取各種訊號來判斷交易是否為惡意。例如,我們檢查交易發送者是否有進行攻擊的歷史,或是資金是否來自可疑來源。透過結合不同的訊號,我們評估與每筆交易相關的風險。我們的團隊部署了這個偵測引擎,使我們能夠快速擷取並識別攻擊交易。

DeGatchi 05:41

沒錯,這很有趣。我對我的靜態分析器也做了同樣的事情。污染分析基本上是必不可少的,但隨後無論你對靜態分析器做什麼,你都會把所有資料傳輸到模糊測試器(Fuzzer)中,對吧?我也曾經在建構我的模糊測試器。觀察人們如何處理這些問題真的很有趣。但這裡存在非常有趣的解決方案。人們在這個領域中的思考方式非常線性,有許多維度需要考慮,所以單線思考並不是正確的答案。

DeGatchi 06:08

讓我們談談這些維度。假設你有一筆交易的呼叫資料(Calldata),對吧?你有函數和合約。然後你還有另一個維度,就是階段(Stage)。所以它是非常依賴情境的。現在你有這四個不同的變數或維度,而只要稍微調整其中一個,它們都會相互影響。例如,你可以有合約 A、合約 B,以及它們所有的函數。現在你必須以各種不同的方式對它們進行排序,但這不僅僅是函數 A 和函數 B、函數 B 和函數 A 的簡單組合。你還有能力執行函數 A、函數 B、函數 B、函數 B、函數 A。這是一個非常棘手的問題。

DeGatchi 06:43

而我覺得你一直在做的事情相當有趣。我知道你最近升級了 Phalcon,使其現在包含交易偵測。所以它更像是一個廣義的搶先交易者(Frontrunner),但針對的是駭客。在進行這項工作的過程中,這非常發人深省。搶先交易遊戲是由那些專業的 MEV 團隊主導的,對吧?他們進行搶先交易、三明治攻擊、後置交易(Back-running)等。他們擁有專用的基礎設施,像是高頻交易設備,延遲極低,並且他們之間還有合作,包括區塊構建者(Block Builders)、中繼站(Relays)等等。所以問題是,你如何能夠比這些 MEV 團隊更先搶到這些交易?

Andy Zhou 07:24

這是一個非常好的問題。基本上,我們系統的主要目標不是要搶在 MEV 機器人前面,而是要保護協議,我們鎖定的是駭客。

DeGatchi 07:37

但是,當駭客將交易提交到公共記憶體池(Mempool)時——如果是私有的,沒人能取得它;但如果是公共記憶體池,那麼所有其他廣義搶先交易者也會看到它。所以你必須比他們更快。你是如何擊敗他們的?你是如何勝過他們的?

Andy Zhou 07:51

是的,我們常說安全是好人和壞人之間的軍備競賽。早期的情況很簡單,因為壞人和 MEV 機器人不知道我們團隊的存在。那時候,這取決於你如何支付 Gas 費用,或是如何向驗證者支付賄賂。早期時候這容易得多,但現在,駭客使用一些技術來保護自己免受搶先交易。例如,我們看到駭客部署了一項非常有趣的技術來防止他們的交易被 MEV 機器人搶先。基本上,在他們的交易中,他們會先檢查一些數值,像是從另一個智能合約獲取某個數值,以檢查這個數值是否等於該變數的初始值。在執行攻擊時,駭客會先發送一筆交易來設定另一個智能合約中的變數,以滿足該檢查條件,然後使用第二筆交易來實際執行駭客攻擊。因為 MEV 機器人採用的大多數通用技術是模擬單一交易。如果你只模擬第二筆交易,你會失敗,因為條件不滿足。這是因為條件是由第一筆攻擊交易所設定的。正因為這個棘手的部分,一些 MEV 機器人無法處理。我們可以處理,因為我們有分析不同交易相關性的技術。

DeGatchi 09:40

沒錯,你必須進行多次操作。你不能只做一次,因為如果你只是在進行廣義抢先交易,標準做法就是只更換位址;或者如果是多個位址,你必須全部更換,而且你基本上必須嘗試每一種選項。

Andy Zhou 09:52

沒錯。

DeGatchi 09:53

如果他們在做多合約設置,那他們就會進行合約部署,然後在該設定合約中呼叫一個函數來進行設定,接著在漏洞利用合約中使用它。但你解決這個問題的方法基本上就像再次模擬,但你實際上必須檢查正在呼叫的狀態。因此,如果該狀態與原始合約的部署狀態不符,那麼你就必須以某種方式進行設定,找到那個函數(類似控制流程圖 CFG),找到那是什麼,然後修改該漏洞利用合約來進行相同設定,或者乾脆完全移除它。所以這相當困難,但你們竟然真的做到了,而且現在運作良好,真是太瘋狂了。

Andy Zhou 10:33

是的,它確實可行,但你需要投入大量的開發工作來達成。而且你還必須擁有一個非常優秀且高效的分析引擎。

DeGatchi 10:42

太令人印象深刻了。你們已經阻止了 20 次駭客攻擊,防止了約 1,500 萬美元的損失。而且這是在你們發布產品前六個月內發生的。

Andy Zhou 10:51

防止駭客攻擊的工作是在過去一年半內完成的。所以這不是一個月或兩個月就能做到的。這是一年半以來不斷投入的結果。

DeGatchi 11:04

即便如此,也沒有其他人做這件事。這是一件非常棒的事情,我認為每個人都至少應該擁有它,因為這很重要。即使它可能無法 100% 拯救所有人,因為他們必須註冊才行,而且可能還有一些混淆技術是完全不同的。但還是比什麼都沒有要好,對吧?就像你拯救了東西,被駭客攻擊就像是整個公司、所有使用者、所有聲譽的崩塌——一切都完了。所以這是一件非常重要的事情。你們這群人是怎麼開發這個的?你們有使用任何 AI 嗎?還是說,這不可能完全是啟發式(Heuristic)的吧?

Andy Zhou 11:41

基本上,我們結合了不同的技術。為了偵測駭客攻擊,我們結合了基於 AI 的解決方案與行為分析解決方案。對於基於 AI 的解決方案,我們使用 AI 技術、機器學習技術來偵測攻擊合約。我們團隊內部運行的系統甚至可以在駭客發送攻擊交易之前就偵測到攻擊合約。這是因為他們必須部署一個攻擊合約,然後才能發送交易來攻擊協議。所以即使在攻擊交易之前,當駭客部署攻擊智能合約時,我們基於 AI 的引擎就能精準識別出惡意合約。我不是說我們沒有誤報,但誤報率相當低。因此,即便是處在這個階段,在駭客交易之前,我們就能偵測到攻擊智能合約。問題在於,當你識別出一個攻擊智能合約時,你可能不知道這次攻擊的實際受害者是誰。這是因為有時目標位址並未硬編碼在智能合約中,它們可以作為參數傳遞。你需要一些模糊測試技術來觸發它。但如果所有目標智能合約位址都是經由參數傳遞的,那麼即便使用模糊測試也無濟於事。

Andy Zhou 13:05

所以對於這些複雜的案例,我們無法在現階段識別攻擊智能合約,我們必須在攻擊交易偵測階段處理它們。對於攻擊交易,我們使用基於行為的解決方案來偵測駭客交易。核心概念是,每個駭客都想獲利。因此,你需要精確地從交易中獲取利潤。在偵測到這些攻擊交易後,我們會像 MEV 機器人那樣自動合成一個類似的攻擊交易,替換利潤位址,並將其放到鏈上。這基本上就是在我們推出 BlockSec Phalcon 之前系統運作的方式。

DeGatchi 13:54

關於 AI 的部分,我無法想像它是一個監督式學習模型。我覺得它應該是強化學習,因為駭客攻擊的案例並沒有那麼多,對吧?所以沒有足夠的資料來真正做到那一點。

Andy Zhou 14:08

我認為你提到了機器學習的一個非常重要的點。關於惡意智能合約偵測,由於我們沒有足夠的樣本來訓練模型,這種方式本身並不有效。在此情況下,如何讓這些事情運作的核心洞察是:你需要在智能合約內部提取關鍵特徵。有些人只是使用位元組碼的序列來訓練模型。那行不通,因為位元組碼的序列對於智能合約來說太籠統、太常見了。你需要提取智能合約獨有的特徵。所以我們目前使用的,包括控制流程圖、關鍵函數之間的資料流關係,我們還使用了一些位址標籤,或是智能合約創建者的屬性來一起訓練模型。事實證明,這非常有效。

DeGatchi 14:55

所以你們基本上是提取關鍵特徵。例如,硬編碼位址或是作為呼叫資料傳入的位址。如果他們在 Solidity 中使用遮罩(Masking),這在 Solidity 中很常見。但如果是客製化的高階合約,那首先這肯定會是一個相當專業的駭客。但是專業的駭客,那些計畫十分嚴謹的駭客,百分之百會使用自訂位元組碼的私有交易,甚至可能採取交易湧現(Swarm of transactions)來進行混淆。這是我一直在研究的東西,我對這些東西非常感興趣。事實證明這確實有效。其實,我從未見過任何人使用我發現的這類技術。我甚至可能會寫一篇文章來談論它,事實上,因為我永遠不會使用它們。但這真的很有趣。

Andy Zhou 15:46

是的,在進行這項研究計畫之前,我也沒想到它會奏效。但在六個月之後,我們證明了它非常有效。

DeGatchi 16:02

是的,這太瘋狂了。我認為這是朝正確方向邁出的非凡一步,需要更多這樣的工具。但這也引起了一個問題:你知道你們正在使用 AI。你如何看待 AI 對你業務的影響?什麼會因為 AI 而被淘汰?今天有什麼人可以做些準備來迎接這場革命?

Andy Zhou 16:23

老實說,我並不是 AI 專家。我們只是將 AI 應用到我們研究的領域,用來偵測惡意智能合約。我認為 AI 在安全領域的潛力尚未被完全挖掘。原因之一是,將 AI 應用於安全領域,你需要對你正在解決的問題有非常深入的理解。因為如果你對所解決的問題有深刻的認識,你就能提取出非常好的特徵。我認為特徵非常重要,對吧?所以即使是針對同一個合約或同一筆交易,如果你在訓練時沒有很好的特徵,結果會完全不同。從我的角度來看,我認為 AI 的潛力尚未被完全挖掘,因為你需要將優秀的 AI 人才與領域專家相結合,共同提取出精確的特徵。

DeGatchi 17:30

我同意。這完全不同。這是兩個領域的結合。首先,擅長 AI 本身就很困難。而且學習這些東西也需要時間。像是你必須懂數學,必須懂與 AI 有關的一切。你不懂封裝、函式庫,然後你還必須身處加密貨幣領域,再加上另一個領域,也就是位元組碼和網路安全,那也需要時間。但我相信,從純 AI 轉向加密貨幣的人,不會像從加密貨幣轉向 AI 那麼困難,因為純 AI 領域要深入其中難度更高,這主要是因為所需的數學背景,以及對當前架構及其運作方式的透徹理解。

DeGatchi 18:13

但我覺得這超級有趣。你認為什麼會被淘汰?因為 AI 顯然會改變一切。我認為如果你不使用 AI,你在商業競爭中就不會擁有優勢,因為競爭太激烈了。我曾經也對模糊測試器和靜態分析器做過同樣的事情,但我認識那些做 AI 的人。這很有道理,因為如果你思考這種無限的動作空間,你不能只是暴力破解。你需要某種直覺來篩選掉所有動作,並知道真正要鎖定的是什麼。所以你需要 AI 來完成這一點。你需要能夠從重複的執行個體中學習的東西,特別是當你在這所有的協議上執行——所有合約、數百萬個例項或運行時,對吧?它需要能夠像人類一樣學習直覺。否則,你就是在建立屬於你自己的直覺。而這是非常耗時且充滿缺陷的,因為你無法思考所有維度,而且歸根結底,你不知道你不知道的東西。我個人認為,如果你還沒有投入其中,無論如何都應該嘗試。我甚至不懂數學,但我也正在開始學習。所以我可以做到,任何人都可以。讓我們拭目以待。這是一個需要巨大決心的過程。

Andy Zhou 19:36

沒錯。我可以分享一個最近的 AI 實驗。正如我所說,我們有一個用於智能合約以尋找漏洞的模糊測試系統;我們團隊內部有系統來做這件事。我們可以使用 AI 來產生模糊測試的種子輸入(Seed inputs),結果證明非常有效。那我們是怎麼做的呢?例如,我們要對五個智能合約進行模糊測試。我們首先將這些智能合約輸入 ChatGPT 中,告訴它:「這個函數的主要功能是做這個,另一個函數是做那個。」之後,我會請 ChatGPT 說:「請為這些函數產生 50 個不同的輸入。」結果證明這非常有效。你知道,我們將此作為種子輸入,來對智能合約進行模糊測試。

DeGatchi 20:38

有趣。我認為大語言模型(LLM)在理解嵌入(Embeddings)方面其實表現相當不錯。除了這些,我沒有太多了解,但這是目前為止最有效的嘗試。所以這很有道理。我知道很多人都在使用 ChatGPT,但這似乎是一個非常好的應用案例。我知道有些人用它來解釋合約。所以它幫你省去了所有理解的過程;它能幫你快速上手,而不是試圖理解整個程式碼庫。因為那可能是一個有上千行程式碼的庫,對吧?或是多個合約、好幾千行程式碼。要看出所有關聯、依賴關係非常困難。

DeGatchi 21:18

但我確實想問:既然你們已經做了這個新的交易封鎖(Transaction Blocking),你們有了交易封鎖,但為什麼不進一步嘗試找出所有零日漏洞和所有合約?因為思考一下,如果他們是一個專業駭客,真的知道自己在做什麼,並且鎖定了某個目標,假設這是一次像 Ronin 那樣價值 6 億美元的駭客攻擊,或是像協議上 2 億美元或 2,000 萬美元那樣更現實的攻擊,他們只會發送一筆私有交易,而你是無法阻止他們的。為什麼不全力投入到針對所有零日漏洞的防禦上?因為如果你找出來了,你只要自己執行一筆私有交易,首先就能拯救所有的資產。

Andy Zhou 22:02

是的,這是一個非常好的問題。我們在 BlockSec 內部其實對各種專案都有不同的提案。目前對於 BlockSec Phalcon,我們可以在鏈上或是記憶體池中偵測到惡意交易。但對於私有交易,我們看不到。這是當前的階段。我們也想進一步推動我們的努力,甚至在駭客之前就偵測到智能合約的漏洞。正如我剛剛所說,我們有模糊測試系統可以做到這一點,但目前我們仍在優化我們的 fuzzing 系統,以偵測部署在區塊鏈上的智能合約的安全漏洞。

Andy Zhou 22:55

我相信在進行 fuzzing 以識別智能合約漏洞時存在一些挑戰。模糊測試智能合約的挑戰之一是為目標合約產生輸入,特別是交易。此外,對於智能合約,你需要產生一連串的交易序列來觸發漏洞,而不是僅僅依靠單一交易。有時這些交易序列彼此之間具有依賴性。你需要第一筆交易、第二筆,然後是第三筆,只有這三筆完整的序列才能觸發漏洞。你需要產生幾筆交易的序列,並且需要了解這些交易的依賴關係。這在目前來說是非常困難的。這是第一個挑戰。至於第二個挑戰,你需要一個神諭機(Oracle)來判定是否存在漏洞。比如說,你發送了一筆交易到一個智能合約,那你如何確定你觸發了漏洞?當然,我們可以採用類似的技術來計算利潤。如果這筆交易觸發了極高的利潤,或是導致某些借貸協議的健康因子異常,那麼我們就會發現這裡存在漏洞。但你需要為模糊測試器總結出不同類型的神諭機。這是第二個挑戰。

DeGatchi 24:35

這是第二部分。這相當有趣,因為如果一個新的協議發布並且擁有代幣,它沒有與任何大代幣的流動性池。它可能與其他代幣掛鉤。你甚至無法定價它,對吧?所以這是一個巨大的障礙。你有沒有想過會如何用那種神諭機來處理這個問題?

Andy Zhou 24:57

是的,當然。所以這是另一個挑戰,因為你需要為模糊測試器和 DEX 流動性池準備環境。你需要準備不同的代幣,並且需要將每個代幣的價格輸入到一個系統中。你需要為模糊測試器準備各種不同的東西。這非常複雜。對於像重入這樣簡單的漏洞,模糊測試器很容易觸發。但對於像價格操縱這樣複雜的漏洞,就很難。我們仍在研究一個系統,但我們仍然需要一些時間。但你是對的,我們正朝這個方向努力。

DeGatchi 25:43

是的,這絕對不是一件簡單的任務。它需要很高的複雜性,對吧?而且你需要考慮許多依賴於其他事物的東西。所以這就像你問了一個問題,結果卻又產生了兩個問題,而現在它們彼此相關,並且不斷地循環下去。但那個神諭機的問題可能就是最困難的部分之一。而且它也是最重要的部分之一,因為神諭機操縱可能是最大的攻擊因子。一切幾乎都依賴於它。而且以任何方式,它可能是內部匯率,也可能是外部匯率與內部匯率的對比。

DeGatchi 26:22

就像某些他們沒有考慮到的套利,一切事物中都有 bug,因為人為錯誤是必然的。互動的數量將是無法預估的。新協議每天都在發布。你當前的協議現在可以與它互動。在那方面,它可能是一連串五個不同的協議。

DeGatchi 26:45

這並不容易。我認為你需要 AI,因為必須在空間上思考所有這些分布在不同合約中且易受攻擊的函數,你不可能按順序推導,因為可能性太多了,對吧?所以我今年年初和別人聊過這個,關於 Pickle Finance 的漏洞利用。那是一個非常有趣的例子,因為裡面有 8 個漏洞。如果你漏掉了其中任何一個,你就無法利用這個漏洞,而且它必須按特定順序進行。這個漏洞利用實際上由 5 個自訂合約組成。因此,它是由 5 個自訂合約組成,基本上是為了建立漏洞函數序列可以以特定方式使用的情境。

DeGatchi 27:44

而其中的另一個部分,是理解透過...(Athena's insulator 處),你有位址和 bytes 20,它們代表同樣的事情。人們忽略了這一點,因為你確實需要知道這些型別意味著什麼。但基本上,他們在做的事情——我覺得這真的非常吸引人——是他們建立了一些合約,偽裝成底層代幣。而虛擬底層代幣的 balanceOf 返回了一個位址,它並沒有返回實際金額。這是不正確的,因為實際金額只是 bytes 32,而位址是 bytes 20。所以你可以將該位址作為 uint256 傳入,因為從技術上講,它確實是那樣,對吧?所以這實際上形成了整個鏈條,因為它導致了一種 delegatecall 的情況。這就是它發生的一種方式。但這真的很有趣。你知道,你必須產生能夠執行特定操作的合約,這些操作能啟用新的序列。想要產生合約來啟用至少五個漏洞的利用,這絕對不是簡單的工作。這是一個非常令人著迷的問題,而且非常具有啟發性。我覺得在這種東西裡面沒有比這更好的事了。我太愛這個了。

DeGatchi 29:06

但這類工作真的很難。你們思考過所有這些東西嗎?像是,你們現在正在研究哪種技術?顯然,我剛才說了「空間上」,觀察孤立的函數並觀察它們如何相互作用。關係 Definitely 是最難的部分之一,取決於你如何處理它。因為污染分析,老實說是不夠的。

Andy Zhou 29:26

是的,所以針對不同智能合約之間的關係,我們目前正在做一件非常有趣的事情。我們手動收集頂級 DeFi 協議的智能合約。然後我們進行手動分析,繪製出不同智能合約之間的關係圖。例如,如果 wstETH 可以在協議 ABC 中用作抵押品,我們就會在這些協議之間畫一條線。如果一個代幣可以用作另一個智能合約的底層代幣,那我們就會將這些協議連在一起。

Andy Zhou 30:02

所以基本上,我們利用一些腳本手動獲取不同頂級協議之間關係的全貌。我們將利用這些見解來指導靜態分析和模糊測試技術。

Andy Zhou 30:15

這是我們目前正在進行的工作之一。它還處於早期階段,但我們生成的關係有時對靜態分析和模糊測試系統很有幫助。我們目前正在做的另一項工作是型別推論(Type inference)。我們希望推斷輸入資料的型別,例如智能合約呼叫內部的呼叫資料。例如,從呼叫資料的第 0 byte 到第 20 byte,我們可以推斷其型別為位址,而從輸入的另一段區隔,型別是另一個。這對模糊測試非常有幫助。我們嘗試利用靜態分析來執行型別推論。

DeGatchi 30:55

有趣。是的,上述事物之間的關係有點像一張圖。你們正在做的事情很難。因為,比方說,這些也是一些技術。如果你有一個合約,它裡面有對其他合約的參考,比方說硬編碼位址,對吧?這很簡單。這意味著你知道你可以存取的空間範圍,以及它們在這種關係中是如何連接的。但有些合約甚至不是直接互相參考。你可以透過呼叫資料來參考它們,或是你可以建立一個池,然後指向一個新的合約。我認為那次攻擊叫 Iron Vault 之類的。它發生在另一個生態系統。

Andy Zhou 31:33

是的,這不容易,但我們能利用鏈上交易來連接它們,因為鏈上交易可以揭示不同智能合約之間的互動。

DeGatchi 31:44

但那樣的做法是在觀察函數的正常序列,對吧?為了找到一個零日漏洞,你必須打破常規並做一些不同的事情。好吧,我認為識別什麼是正常的很好,現在你知道什麼不能做,以及如何打破它,這是好的。有趣。所以你們對模糊測試器有什麼計畫?你們打算把它配對起來做某種神經網路模糊測試嗎?那是 Trail of Bits 的嘗試方式。這不值得,但坦白說,它只是實作得不對。那麼你們對模糊測試器有什麼計畫?你們要進行神經網路輔助的還是完全 AI 驅動的?現在該往哪個方向走?

Andy Zhou 32:23

對於 fuzzing,首先我們嘗試擁有一套非常好的型別推論系統,以促進種子輸入的產生和模糊測試器的輸入變異。我們也利用 AI 來幫助我們產生種子輸入。我們也嘗試加快模糊測試的過程,因為我們想要一個非常高效的系統來快速識別漏洞。我們正試圖從三個不同的方向改進模糊測試器。

DeGatchi 33:01

好的,有趣。當我們思考空間時,有些事情與這種工具對談有點不同,對吧?而且你是一名教授,所以你很了解這些東西。

DeGatchi 33:10

很多人都在解釋如何成為一名頂級審計師。像是 Spearbit 或 Trail of Bits 的安全研究負責人——隨便舉例,即使只是獨立審計師——隨著新審計師的湧入,他們都做得很好,對吧?你們打算如何真正將自己與這些進入的新玩家、其他公司,以及我想要擁有這些技能的人區分開來?顯然,他們並不多,但他們確實正在進來。隨著他們進入,這些更聰明的人進來了,甚至可能帶著 AI。我知道像...(and testify 處)這樣的人正在做 AI 攻擊產生。我相信你聽說過他們。隨著新審計師與新玩家進入該領域,你們正在做什麼來真正讓自己與這些人區分開來?

Andy Zhou 33:55

是的,這是一個非常具有挑戰性的問題。從我的角度來看,你需要對這個特定領域(例如 DeFi 協議安全領域)的趨勢有很好的理解。存在不同的攻擊向量和新型漏洞。而你需要具備非常好的動機或技能來嘗試研究這些新東西。如何快速學習這些新知識以及如何快速消化新知識是我的優勢。當然,會有許多聰明的人進入這個領域。但我會說,因為我受過博士訓練,我知道如何快速進入一個新領域,如何快速理解最先進的技術,如何快速找到要解決的好問題,以及如何將另一個領域的技術借鑑到這個領域來解決問題。我認為這就是我與眾不同的地方。

DeGatchi 34:56

百分之百沒錯。我認為如果你考慮一群人,他們都很聰明、有能力,主要差別只在於創造力;這似乎是如果大家都在同一水平線上,這從來不是真的或是只是聰明程度相當的話。最大的差異就是創造力,對吧?我們都有不同的思考方式和不同的觀點。所以我認為這是主要的一點,真正相信自己,在別人的不信任中依然相信自己可以做到某事,而且沒有其他人真的在做那件事,你相信這能完成,儘管你可能不知道怎麼完成,但只要你堅持奮鬥並擁有找到它的熱情,這就是最重要的一點。能夠辨識新趨勢並從中獲利是重點所在。而且這發生得非常頻繁;你只需要準備好相應的知識來利用它,並抓住機會。

DeGatchi 35:45

不幸的是,我做不到,因為我不懂 AI。一切都在於在正確的時間、正確的地點擁有正確的技能。我認為 AI 真的是下一個前沿,我認為任何不升級它的人都會被拋在後面。如果你的開發者世界具備領域知識,同時還有 AI,如果你將兩者結合,你就能創造出巨大的差異,因為你擁有兩個領域的知識。因此,與區塊化知識相比,你可以想出更好的問題解決方案。我想一個很好的例子是理解數學。你看世界的方式與不懂數學的人不同。如果你將其與不同的事物結合,比如金融領域,那麼你就能想出建立極高效率演算法交易系統的方法,對吧?並在競爭中獲得瘋狂的優勢。我認為這就是那個傢伙,在 AVAX 上捕獲了我想 90% 的套利機會,因為他只是擁有了數學優勢。這就是我的意思。如果你只擁有兩個領域的知識,你就可以真正捕獲很多機會。因為學習這些東西很難。而且你知道並能結合的領域越多,競爭就越少;它只是會被邊緣化。

DeGatchi 36:55

所以你認為你自己和 BlockSec 未來會走向哪裡?你如何看待自己在職業生涯和公司本身的發展?你認為行業會走向何方,它又應該走向何方?

Andy Zhou 37:05

我認為對於行業而言,因為 Web3 是一個非常新的領域,我們仍然處於這個新領域的早期階段。從我的角度來看,行業發展非常快。同時,行業還有很多尚未解決的安全問題。我們正試圖使用我們自己的解決方案來幫助生態系統快速發展,同時確保安全。我們擁有保護他們資產的產品和協議。這是其中之一。我們還預見未來在這個領域會有許多不同的 Web3 使用者。使用者也需要安全保護,因為對他們來說,目前使用 Web3 產品有些複雜。他們需要有一種很好的方法來保護他們的私鑰和資產,因為大多數使用者並不了解 ERC-20 代幣的授權過程。他們只是在惡意合約中批准了所有代幣。

Andy Zhou 38:10

所以我們需要為 DeFi 使用者提供一套非常好的保護系統,這在當前行業中尚未得到解決。當然,有一些公司正在做這件事,但還有更好的方式來保護使用者。

DeGatchi 38:27

我認為在模糊測試器之上,當你提到保護使用者時,你可以擴展到像是錢包之類的東西。我的意思是,有兩種或三種不同的方法。它就像掛起中的交易,這並不 100% 確定。所以你必須細化處理。這可能像是自己找到零日漏洞。但如果這不是選項,那麼僅僅在錢包本身嵌入分析功能可能就是好的,即使它只是快速的分析,對吧?無論他們挖掘什麼,他們都會進行代幣操作。但是如果你能在他們進行交易之前執行一些分析——我想有人以前做過這個。

Andy Zhou 39:01

確實有幾家公司正在做那樣的事,模擬交易並告訴使用者如果他們簽署交易會產生的後果。

DeGatchi 39:10

我認為這真的很聰明,而且我認為這很容易發展為公司業務或任何進行安全研究的公司,我認為這是一種非常棒的方式。所以直接給予他們。我想是 Fire (Fire Wallet) 之類的。我記不太清了。但沒錯,那些非常棒,那些模擬功能。但我認為它們是有缺陷的,因為你們是在做進入流動性池 (LP) 之類的交易。人們可能會使用自訂位元組碼並執行條件功能。假設那 100 種 LP 轉而做別的事情。所以當它擁有他們的錢或無論是什麼時的初始模擬是不會出現的,除非你實際上測試了一切、每一個函數的路徑。這是我一直在想的事情。但也有很多難題。你必須選擇你的毒藥(各有取捨)。未來關於網路安全與 AI 結合,你有什麼讓你興奮的事嗎?我相信你會用得更多。你有什麼計畫,你如何看待自己走上那條路?

Andy Zhou 40:06

是的,至於我的計畫,我認為我們想要將這些新技術結合在一起,以更好地保護社群和使用者。我們將持續在 AI 上投入資源,因為 AI 與 Web3 安全場景結合將產生更佳的產品。我們想要更進一步,建立一套更完善的攻擊偵測系統、更好的模糊測試系統,以及更好的解決方案來保護使用者的資產。這就是我們在 BlockSec 內部的當前計畫。

DeGatchi 40:36

有趣。好的。我確信情況會變得好得多,而且你們能夠做到的也會更多。你們已經在防止所有這些駭客攻擊方面做了很多努力。但我認為還有很大的創新空間,這才剛剛開始。我認為一旦人們開始聽到它,而且你們防止了更多的駭客攻擊,它將會變得更加突出,並且會有更多的競爭,這很棒。為了防止駭客攻擊並真正擴大生態系統的良性競爭。因為最終目標是取代 CeFi,對吧?你不想等四個月才能從銀行帳戶裡拿出錢。這相當荒謬。資訊領域的努力其實被散戶和現有的協議低估了。他們直到被攻擊時才真正意識到。我相信這確實是少數人進入該領域的方式。但在這裡,我對你們正在建設的東西感到超級興奮,並且我對網路安全和加密貨幣的未來持非常樂觀的態度。但我真的很感謝你來到這裡。我超級高興能成為你上過的第一個播客節目。是的,我真的很感謝你的時間,Andy。這是一次很棒的對談。

Andy Zhou 41:38

是的,來到這裡是我的榮幸。謝謝你,DeGatchi。