PANews特約作者:Leo,DeFi項目聯合創始人
在加密行業中,審計是保證項目完整性和安全性的不可或缺的部分,細心觀察不難發現,比較優秀的項目諸如Lido、Compound在審計方面的投入是7位數美金起步的「天文數字」,並且往往會就同一批產品代碼,僱傭多個審計服務商介入審計。
這一方面可以看出DeFi夏天以來,鏈上頭部業務/產品所獲頗豐,有充足彈藥持續打出,構築更縱深的競爭壁壘;另一方面其實也為同行中的諸多項目、創業者展開了審計的一個切面:審計工作並不會只是「花錢-僱人-出報告-宣發」的流程化簡單工作,而是應該有一套完整的「審計觀」和方法論——什麼樣的產品交付需要審計?如何挑選供應商?如何最大程度確保審計工作的有效性?怎樣可以最經濟實惠又安全完備地完成審計工作?
筆者將在下邊的文章中,結合自身經驗,從具體做項目,搞創業的角度出發,與各位讀者討論下我心中理想的「審計觀」是如何。
安全服務商縱覽,貨比N家
審計供應商的可選性在近2-3年的光景中可謂是噴湧式增長,盤點下來市面上比較常見的審計供應商大概有15-20家左右(排名不分先後)。
就筆者經驗和其他同行的交流,國內的Peckshield、SlowMist,海外Trail of bits、OpenZeppelin的綜合美譽度、技術能力和覆蓋完整度屬於第一梯隊。
整體上,華人主導的供應商(主要是第一行)仍然是加密行業中文項目的主要選擇,時差為零且語言暢通,報價上也比較高性價比,國產供應商的報價基本上是12K-15K USD/人/週的水平,隨著市場的淡季/旺季會有所波動;
相比之下,海外的供應商在中文行業存在度比較低,但這些供應商或因品牌溢價,或因創始團隊資源關係,或因覆蓋度/技術能力,普遍定價還是明顯高於華人供應商,基本上是1.5-2倍的報價差異,並且往往能夠出一批巨額的訂單,譬如OpenZeppelin曾經被Compound以單季度上百萬美金的價格聘請進行審計。
與市面上主流的審計供應商平行存在的還有一類服務商,諸如Immunefi、PwnedNoMore。筆者定義為「白帽社區」,在傳統的安全圈子中應當屬於比較成熟的業態,在加密行業中,屬於新近兩年冒出來的,不過依然吸引了不少項目進駐採用,基本的運作模式就是項目方去該平台發布希望被審計/debug的模塊(前端、後端、合約等),定義bug的嚴重度以及對應的賞金,以期吸引「白帽」主動report bug,解決問題。這種形式應該視為「公司製審計商」的一種有益補充,須要項目方能夠精準,清晰有效地定義bug的分類、層級和需要對方覆蓋的範圍,並大方地給出懸賞金,往往能獲得意外的驚喜。
審計流程、方法論和省錢指南
對於項目方而言,首次要請審計商review前,需要一定的設計和安排,一般建議要保證做到這幾個點:
1-送審的代碼在內部要進行過2輪以上的測試,如果時間允許,最好是再有一輪社區的公測後再送審,避免「顯而易見」的問題需要付費解決;
2-送審的代碼要盡量確保按照項目方的milestone,批量打包,一次性交付審計,避免拉高成本;
3-確保送審的對接人清楚產品整體的運行原理、大致的代碼量以及主要模塊的分佈,避免在initial setup階段需求傳達不清,給項目拿回一份不合適的報價單;
4-排期要比較,重要產品節點有必要付費鎖定排期。
儘管市面上的供應商諸多,但是每家的排期差異巨大,送審人有必要就同一段代碼向至少3個審計商發出評估請求,獲得排期、報價和工作量評估,重要的產品節點務必預付費一部分(一般建議30%-50%),鎖住審計商的排期,避免影響進度。
就筆者的經驗,中文供應商的預約建議至少提前2-4個週(相較於希望報告產出的日期),海外供應商的預約至少提前1個月(這裡主要是考慮時差、對接人轉介以及老外普遍不996的耗時)。
在秉承上邊的送審原則後,確定排期、報價,項目代碼交付審計商開始review,過程中,比較負責任的審計商一般都會就review中的疑問和項目方進行討論,具體的對接人& 項目方的技術人員有責任也有必要多和審計商溝通排解問題,對接人在過程中須要確保:
1)審計的中間進度如期進行;
2)審計商提供的初版審計報告須要讓項目團隊中的2位不同技術人員去交叉review,再同步審計商定稿與否;
3)審計對接人要做好勾聯同步的作用,確保本團隊關鍵技術、產品人員,與審計商中實際進行代碼review的人建立群聊,而不是被動地等待審計商出報告和簽字;
4)【錦上添花】對接人能夠在審計過程中對市面上其他家審計商發的「安全事件review報告」保持關注,對可能匹配自家項目的情況,主動提出和審計商溝通,前置地把可能沒覆蓋的問題給debug。
項目方要有鮮明的「偏見」,保留後門有必要
審計公司大多能夠完成的工作是代碼本身的質量、邏輯、安全性是否完備、十足,對於代碼和業務關聯觸碰很少。往往會出現代碼邏輯/安全性上調整到位了,業務邏輯受到了影響的情況。
譬如對於合約權限升級,費率調整、token增銷等關鍵module,從業務早期發展來說,其實需要一個項目方內能做決策的core member單簽控制,應對市場變化/突發安全事件及時調整,而不是一味地追求多簽控制,影響危機時刻項目的應變能力。
合理的「後門保留」/「超級權限」不僅事關項目,亦可能攸關行業生死,試想,如果BitMex不曾拔網線,Circle不曾停贖回,BNB Chain不曾「停鏈維護」,行業如今又是什麼光景?
持續溝通和分享才能推動長線安全
審計商的服務只能debug而不能確保100%安全,安全事故總有可能在某個點引發。
一方面項目方要主動和審計公司溝通,商討如何處置(可能是賠付、免費二審、退款,或者其他方案)。
另一方面,每一個安全漏洞的發現& 補足其實也都事關行業整體的進步,在不涉及項目方關鍵商業利益的情況下,鼓勵所有項目方積極與審計公司一起,公開化地recap每個類似的問題,能更好地讓行業共享一套更高的安全標準,其實也是在長期地降低每家項目方審計的成本。
項目方決策層應具備hakcer思維,重視社區力量
審計是一場曠日持久的資金戰爭,是項目方競爭的重要壁壘。
一方面應該在每一個產品的milestone之間都持續地投入資金,僱傭知名、可靠的外部審計商來覆蓋可能的安全漏洞;另一方面也應該重視社區的力量,鼓勵諸如Immunefi、PwnedNoMore這樣子白帽社區介入項目的安全buidl。
筆者曾以約30K美金的賞金,成功請到一位社區中的白帽人員,debug並協助修復部署了一個託管百萬美金的合約。
少另闢蹊徑,多複用成熟合約,也是降本增效的好手段。
加密行業的創業門檻已然大幅提高,數百萬美金的融資額即使在眼下的市面上,也屬於屢見不鮮的存在。從前邊的討論可以看出,要真正支撐一整套可靠、安全、穩定的dApp非常困難,哪怕是Compound、Lido、Uniswap等行業頂流應用也無法保證十足安全。
所以,從成本節約的角度出發,每個初創項目在合約、模型的選用上要最大可能嵌套入已有的成熟設施,避免另闢蹊徑,常見的DEX、Lending、收益聚合器、流動性質押& 再質押,乃至衍生品交易、合成資產等品類,其實都有一批成熟、可用的基礎設施給新晉項目方復用、嵌套,這在給項目方降低安全成本的同時,也有效地增強了項目本身的安全性,並且能夠確保系統的安全隨著復用對象的升級而進化。
從行業的整體角度來講,要做到十足的安全,其實需要市場上所有主體的參與和貢獻。
對於審計商而言,1)防範項目的小心思。部分項目的常見操作是把真正去審計的代碼,和麵向社區交付上線的代碼搞成兩套,這樣子審計商其實是白白掛了牌子和責任,所以在項目正式部署後,一般建議審計商再去二次查驗下實際版本的代碼;2)有必要探索和「保險」的結合,對於採購服務到一定量以上的客戶,理應在安全事故發生後有賠付機制,保障項目方的權益;3)更廣泛地和同行公佈審計案例& debug經驗。審計商其實和醫療行業類似,整體的進步一方面依靠長線的技術、科研投入,另一方面高度依賴案例量的積攢。從這個角度看,時常被用戶調侃的「PR式審計」其實也是推動行業進步的一種動能,至少更多的審計案例被行業共享。
對於用戶而言,1)冷熱錢包分離,專門dApp用專門的錢包地址,常常清理陌生授權,不操作莫名的空投token等,degen的時候永遠要安全生產;2)高淨值的用戶有必要養成常常翻閱各家審計商公佈的安全事件報告的習慣,對常見的安全風險做到心中有數。