許多發生在 Web3 項目上的黑客攻擊都可以通過加強智能合約的安全性進行避免。
通常,攻擊者會發現并利用整個軟件開發環節中的一些缺陷 —— 從設計到部署和維護以及發布新代碼等一系列步驟。如果擁有一套標準的智能合約開發和危險應對流程,我們相信安全事件會相應減少。
本篇文章的目的是概述 Web3 建設者、開發人員和安全團隊在設計、開發和維護智能合約系統時必須考慮的核心安全因素。以下框架討論了應在整個軟件開發生命周期中實施的八種核心安全因素 —— 從威脅建模到應急響應準備。
在了解智能合約安全防護之前,要先了解軟件的開發階段。軟件開發可以分為以下五個階段:
設計:開發人員描述系統所需的功能和操作,包括重要的基準和固定的屬性。
開發:開發人員編寫系統的代碼。
測試和審查:開發人員將所有模塊放在一個測試環境中運行,以此評估代碼的準確性和穩定性。
部署:開發人員將系統投入實際環境。
維護:開發人員評估和修改系統以確保它執行預期的功能。
社交協議Farcaster完成3000萬美元融資,a16z領投:7月13日消息,去中心化社交協議 Farcaster 完成 3000 萬美元融資,本輪融資由 a16z 領投,Standard Crypto、Elad Gil、1confirmation、Scalar Capital、First Round Capital、Volt Capital、A Capital、Todd and Rahul's Angel Fund、Coinbase Ventures、Mischief、Ansa Capital、Haystack、Ribbit Capital、Chapter One、Multicoin Capital 、Offline Ventures、Archetype、Canonical Crypto、Proof Group、Floodgate、Balaji Srinivsasan、6529、Ray Tonsing 等參投。Farcaster 已發布協議和客戶端初始版本,正在開發 Farcaster v2 中,并計劃在今年晚些時候推出。[2022/7/13 2:09:14]
有了這個基本開發周期的基礎,現在我們可以深入了解每個步驟中影響智能合約安全的注意事項。下圖將需要考慮的因素對應到相關的開發階段。需要注意的是,環節中的某些步驟有多方面安全考慮:
P2E游戲初創公司Battlebound獲得480萬美元融資 A16z領投:金色財經報道,P2E游戲初創公司Battlebound宣布了由Andreessen Horowitz(a16z)領投的480萬美元種子輪融資,PlayVentures和CryptoKitties開發商DapperLabs參與其中。參與本輪融資的天使投資人包括YieldGuildGames首席執行官Gabby Dizon、Dapper Labs首席執行官Roham Gharegozlou和a16z顧問AlexPrice。這筆資金將幫助Battlebound擴大規模并分階段發布其兩個正在開發中的游戲,以加快上市速度。Battlebound首席執行官表示,該公司還將擴大其開發和運營團隊。(coindesk)[2022/3/31 14:30:02]
如上所示,軟件開發生命周期不一定總是遵循線性路徑。在實踐中,可能出現重疊或延伸到其他階段的情況。某些步驟可能在每個版本中都需要重復。一些任務 —— 例如測試和安全審查 —— 可能需要自始至終執行。
外媒:無聊猿創始團隊正與a16z就融資一事進行談判:2月3日消息,據英國《金融時報》援引知情人士消息報道,無聊猿創始團隊 Yuga Labs 正與 Andreessen Horowitz(a16z)就融資一事進行談判。此前報道,據 THE BORED APE GAZETTE 1 月 25 日援引 NFTNick.eth 相關播客節目內容報道,無聊猿創始團隊 Yuga Labs 正尋求在以 50 億美元估值完成新一輪融資。[2022/2/4 9:30:16]
上述的軟件生命周期和相應的安全注意事項為促進智能合約的安全性提供了有用的基礎信息,但我們將在下文中對其進行更詳細地研究,使得理解、應用和分享這些實踐變得盡可能簡單,并具體分析關鍵問題:What、Why 以及 How。
What:從開發生命周期的一開始就實施識別系統的潛在威脅并確定其優先級的具體方案是很重要的 —— 智能合約開發人員應確定要在開發中實施的所有安全控制以及應在開發中檢查的所有威脅測試、審計和監控。所有的安全假設,包括攻擊的預期復雜程度和手段,都應在設計階段明確定義和闡明。
Why:雖然開發人員傾向于只關注智能合約或協議的預期用途,但這種關注的單一性可能會給他們留下被攻擊者利用的盲點。
隱私基礎設施Nym以2.7億美元估值完成1300萬美元融資,a16z領投:11月17日消息,隱私基礎設施Nym以2.7億美元估值完成1300萬美元的A輪融資,由a16z領投,DCG、Tayssir Capital、Huobi Ventures、HashKey、Fenbushi Capital等參投。Nym采用區塊鏈來將其混合網絡(mixnet)去中心化,網絡中的節點可以通過提供流量獲得代幣獎勵,節點也可能在需要時注入混淆的流量包,使其他人難以解析其中的信息。Nym首席執行官HarryHalpin在2018年成立該公司之前,曾與萬維網的發明者Tim Berners-Lee一起工作,Halpin認為Nym的解決方案可以對抗國家級別的大規模監控,與VPN或Tor不同。[2021/11/18 21:59:08]
How:遵循已知的威脅建模實踐。如果開發團隊沒有內部安全專業知識,那么它應該在設計階段的早期與安全顧問合作。在設計系統時采用「攻擊者」的心態,并假設任何個人、硬件或服務都可能受到攻擊。
What:實施訪問控制,限制特權賬戶的權限和智能合約調用執行管理任務的特殊功能(例如升級合約和設置特殊參數)。遵循「最低權限原則」:每個參與者應該只擁有所需的最低訪問權限。
動態 | Libra協會初創成員Stripe完成2.5億美元融資 A16z和紅杉資本參投:Facebook Libra協會初始成員Stripe宣布完成2.5億美元新一輪融資,投資方包括知名風險投資公司紅杉資本、General Catalyst和Andreessen Horowitz。截止目前,該公司融資總額已達12億美元。Stripe公司表示,他們計劃利用這筆最新融資加速全球業務發展,并且增加更多產品供應。[2019/9/20]
Why:通過升級和治理流程維護協議允許開發人員通過添加新功能、修補安全問題和優化不斷變化的條件來改進協議。如果升級的能力沒有得到適當的控制,這可能構成一個嚴重的安全漏洞。
How:建立一個多重簽名錢包或 DAO 合約,將對協議的更改透明化,并且應通過徹底的審查流程以及時間鎖(故意延遲制定并具有取消能力),以確保可以驗證它們的正確性并在發生治理攻擊時回滾。確保特權密鑰在自托管錢包或安全托管服務中,且可以被安全地存儲和訪問。
What:盡可能利用現有的智能合約標準(例如 OpenZeppelin Contracts)并評估您可能需要與現有協議進行集成中可能出現的安全問題。
Why:使用現有的經過實戰檢驗、社區審核的標準在降低安全風險方面大有幫助。評估協議集成的風險有助于您進行安全檢查,以防止針對外部組件的攻擊,例如預言機操縱。
How:導入經過安全審計的可信合約庫和接口,畢竟 Crypto 和 Web3 的重點是開源、重用和可組合性。請務必在代碼庫中記錄您的合約依賴項及其版本,并盡可能減少您代碼的資源占用量;例如,導入大型項目的特定子模塊而不是所有內容;了解您的風險敞口,以便監控攻擊;使用官方接口調用外部協議,并確保考慮到潛在的集成風險;監控您重復使用的合約的更新和安全信息披露。
What:創建清晰、全面的代碼文檔,并設置快速、全面、易于運行的測試套件。在可能的情況下,在測試網上或通過主網模擬設置測試環境中進行更深入的實驗。
Why:為預期行為編寫假設不僅有助于確保威脅模型中的風險得到解決,也有助于用戶和外部審計人員了解開發團隊的意圖。為代碼創建測試套件有助于證明或反駁假設,并鼓勵對威脅模型進行更深入的思考。該測試套件應包括在極端市場情景下檢查項目代幣經濟學的機制設計測試,以及單元測試和集成測試。
How:通過已知的測試框架和安全檢查應用進行測試 —— 例如 Hardhat、 Mythril、 Slither、 Truffle 等;提供不同的測試技術,例如模糊測試(fuzzing)、屬性檢查(property-checking),甚至形式驗證(formal verification);全面記錄您的代碼,使用 NatSpec 注釋來指定預期的副作用、參數和返回值。使用文檔生成工具和高級設計說明生成實時文檔。
What:花時間通過內部和外部代碼審計來發現錯誤。
Why:從功能開發轉移到安全問題上,讓開發人員有時間發現潛在的安全問題。外部審計在這方面可能特別有用,因為它們可以帶來開發團隊沒有的外部觀點和專業知識。
How:在項目開發的適當時刻,安排功能凍結,以便有時間進行內部審查,然后進行外部審計。這些動作應該在實時部署和升級之前進行,可以查看來自 ConsenSys、Nascent、OpenZeppelin 和 Trail of Bits 的指南,這些指南為開發人員提供了考慮事項清單 —— 包括時間安排 —— 供任何準備審計的人使用。還要確保查看部署事務以確保它們使用經過審核的代碼版本并具有適當的參數,尤其是在升級軟件時。
What:創建鼓勵社區參與開源代碼庫安全改進的計劃。一種方法是建立漏洞賞金。另一種方法是鼓勵社區開發協議監控檢測機器人。
Why:開發團隊可以從更廣泛的知識和經驗中受益(同樣,開源也有助于 Crypto 發展)。值得注意的是,此類程序可以幫助激發開發者對項目的熱情,實質上將社區和白帽黑客變成了傳道者。它們還可以通過為黑客提供成為防御者的途徑來幫助將潛在的攻擊者轉變為守護者。
How:使用漏洞賞金平臺(例如 Code4rena、HackenProof、 Immunefi 或 Secureum)為賞金系統提供基于嚴重程度的獎勵,以激勵熟練的黑客披露漏洞。(披露:本文的一些共同作者為 Forta 工作,該網絡有一個為創建去中心化高質量安全監控機器人提供代幣激勵結構的網絡。)開發團隊可以鼓勵他們的協議社區利用傳統和 Web3 原生的方法來激勵對漏洞的尋找,并讓參與者通過增強安全性來獲得潛在獎勵,從而為所有人帶來雙贏。
What:實施監控智能合約和關鍵運營組件(如預言機和跨鏈橋)的系統,并根據已知威脅模型向開發團隊和社區報告可疑活動。
Why:早期發現問題使團隊能夠快速對漏洞和錯誤進行響應,從而可能阻止或減輕損害。這似乎很容易想到,但在規劃中可能會被忽略。
How:使用監控平臺或分布式節點運行實時監控智能合約事件的機器人。根據需要為開發團隊和更廣泛的社區建立儀表板和警報通知。
What:利用能夠在出現任何安全問題時立即做出響應的工具和流程。
Why:即使有最好的部署前保護措施,智能合約和關鍵組件(例如預言機和跨鏈橋)仍然可能存在臨時問題。擁有專門的人員、清晰的流程和適當的自動化確保可以快速調查并盡快解決事件。
How:通過計劃如何響應事件或緊急情況以及最大程度地使得響應能力自動化,為最壞的情況做準備。包括為有能力的人員分配調查和響應責任,這些人員可以通過分布式安全郵件列表、代碼存儲庫中的說明或智能合約注冊表公開聯系與安全問題相關的人員。根據協議的威脅模型,開發一套流程,其中可能包括場景演習和采取緊急行動的預期響應時間。考慮將自動化集成到事件響應中:例如,工具可以接收來自 Forta 機器人的事件并對其采取行動。
對于安全的考慮應該是成功開發的一個組成部分,而不僅僅是事后的想法。
盡管上述框架為構建 Web3 協議和應用的團隊在整個開發過程中提高安全性方面提供了一些快速指南,但簡短概述不足以提供對智能合約安全性各個方面的詳盡討論。缺乏內部安全專業知識的團隊應該聯系合格的 Web3 安全專家,他們可以幫助團隊將上述的通用指導應用于他們的具體情況。但最重要的是,請記住,安全絕不僅僅是在簡單的清單中打勾以管理復雜的問題,它始終是一套永無止境、持續不斷的實踐過程。我們仍處于建立這些實踐的開始階段,因此現在是為所有開發人員協作創建和共享安全實踐的時候了。
Web3的使命幾乎是一種極端理想主義:不僅要將人類從大型科技公司的統治中解放出來,而且要把人類從剝削性資本主義本身中解放出來,并且純粹通過代碼來做到這一點.
1900/1/1 0:00:00talentDAO 應用組織科學的研究,介紹了 DAO 核心領導力框架,旨在讓 DAO 成員學習有效的領導行為,以推動進展,激勵忠誠,激發協調.
1900/1/1 0:00:00前幾天雷報整理了國內幾大視頻平臺的數字藏品,幾大平臺要么借數字藏品宣傳自家IP或自身“個性”,要么意在弘揚傳統文化,抑或與活動、業務等進行各種“綁定”,來促活、拉新用戶,玩法多樣.
1900/1/1 0:00:00在元宇宙中漫游就像在玩電腦游戲,但很快,它就會和現實生活一模一樣。與某些反烏托邦式的元宇宙愿景不同,我不認為我們會放棄現實,停止參與現實世界.
1900/1/1 0:00:00如何判斷一個項目是不是龐氏,關鍵在于它是否具有正向的外部性。正如物理學的能量守恒定律一樣,如果一個系統,它沒有正向的外部性,那必然是一個龐氏.
1900/1/1 0:00:00對于長期關注和投資虛擬資產(包括而不限于虛擬貨幣、NFT、DeFi、M2E等)的人來說,五月充滿了變數和波動,仿佛整個虛擬資產圈積累了數年的風險和不確定性一夜之間被釋放了出來.
1900/1/1 0:00:00