來源:a16z
編譯:Katie辜,星球日報
通常,黑客會發現并利用軟件開發整個流程鏈條中的缺陷,從而打破區塊鏈項目的安全屏障。如果能夠提前了解到相關經驗,我相信安全事故會少很多。
本文概述了Web3開發人員和安全團隊在設計、開發并維護智能合約時必須考慮的安全要素,覆蓋了從威脅建模到應急響應準備的整個周期。
開發一款安全的軟件包括以下五個階段:
設計:開發人員描述系統所需的功能和操作,包括重要的基準和固定屬性;
開發:開發人員編寫系統代碼;
測試和評審:開發人員將所有模塊聚集在一個測試環境中,并評估它們的正確性、規模和其他因素;
部署:開發人員將系統投入生產;
維護:開發人員評估和修改系統,確保其執行預期功能。
下圖將需要考慮的安全因素與上述階段對應起來。
a16z Crypto建議開發人員在部署ERC-4626前使用其編寫的標準屬性進行測試:10月28日消息,a16z Crypto編寫了代幣化資金庫標準(ERC-4626)的標準屬性,并針對約100個ERC-4626 Vault測試了該屬性,發現許多Vault未能遵循標準要求。
a16z Crypto表示,ERC-4626的創建旨在使協議整合更加容易,但調整現有Vault并不簡單,每一個ERC-4626 Vault都必須準確執行標準的描述要求,這種復雜性很可能導致安全漏洞。因此 a16z編寫了ERC-4626標準屬性以捕捉要求中容易被忽視的細節差異,建議開發人員在部署前進行測試以檢查潛在問題,Vault集成商也可以在將集成前檢查給定的Vault是否符合標準。
根據介紹,ERC-4626于3月正式推出,目前支持該標準的協議包括 Balancer、Maple Finance、Yearn Finance V3、Convex等。[2022/10/28 11:52:25]
需要注意的是,軟件開發的生命周期并不一定總是遵循線性的路徑:各類別可能重疊或擴展到其他階段。對于每個版本,步驟可能會重復。有些安全任務可能需要貫徹執行。
a16z聯創Marc Andreessen:DeFi可以完成互聯網終極目標:7月16日消息,a16z聯合創始人Marc Andreessen在接受麥肯錫《季刊采訪:思考的挑釁》采訪時表示,許多新技術在誕生之初都會有不少負面反應,但加密遠遠超出了這些范圍,人們會對其感到恐懼和厭惡。當看到針對加密貨幣、分布式賬本技術和區塊鏈的激烈批評時,Marc Andreessen認為這種抵制是“給創始人和我們公司一份不可思議的禮物”,因為加密將經濟活動帶到互聯網上,這是最重要的事情,他說道:“我們在現實世界中習慣的所有概念,比如身份、合同、金錢、頭銜和信任——可信賴經濟的機制,互聯網并沒有,DeFi可以完成互聯網終極目標,是互聯網的后半部分,即在一個開放且無需許可的網絡上建立信任層,讓每個人都能訪問。”(Fortune)[2022/7/16 2:17:20]
上面描述的軟件生命周期步驟和相應的安全考慮為促進智能合約安全性提供了基礎。下面將從三個問題出發,進行更詳細的研究。
1.設計階段的智能合約安全考慮——考慮威脅建模和安全設計
加密合規平臺Sardine完成1950萬美元A輪融資,a16z等參投:2月11日消息,金融科技行業加密合規平臺 Sardine 宣布在 A 輪融資中籌集了 1950 萬美元,參投方包括 Andreessen Horowitz (a16z)、NYCA 和 Experian Ventures等。作為投資的一部分,a16z 的普通合伙人 Angela Strange 將加入 Sardine 董事會。
據了解,總部位于舊金山的 Sardine 于2021年推出,使用人工智能根據用戶在賬戶創建和賬戶資金時的身份、設備和行為模式提供實時欺詐評分,該平臺會在每次登錄、存款和取款期間檢查欺詐行為。
此前3月份,數字防欺詐解決方案Sardine曾完成460萬美元種子輪融資。[2022/2/11 9:43:50]
內容:從項目開發生命周期初期就明確識別系統的潛在威脅,并確定其優先級是關鍵。智能合約開發人員應該識別在開發中要實現的所有安全控制,以及在測試、審計和監控中應該檢查的威脅。所有安全假設,包括攻擊者預期的復雜程度和經濟手段,都應該在設計階段明確定義和闡明。
消息人士:Axie Infinity正在以30億美元估值進行1.5億美元融資,a16z領投:10月5日消息,據媒體The Information從兩位知情人士獲得的信息,NFT游戲Axie Infinity的開發商SkyMavis正在進行約1.5億美元的B輪融資,估值接近30億美元,將由a16z領投,Paradigm也將參與投資。SkyMavis的上一次融資在今年5月,當時完成了750萬美元A輪融資,由Libertus Capital領投,其他投資者包括Reddit聯合創始人Alexis Ohanian、Mark Cuban等。[2021/10/5 17:24:37]
原因:雖然對開發人員來說,只關注智能合約或協議的預期用途非常吸引人,但這唯一的焦點可能會給他們留下“盲點”,會被攻擊者利用。
方法:遵循已知的威脅建模實踐。如果一個開發團隊沒有內部的安全專家,那么它應該在設計階段的早期就與安全顧問接觸。在設計系統時要有“攻擊者”的心態,并預先假定任何個人、機器或服務都有可能受到攻擊的情況。
a16z啟動4億美元種子基金以擴展新技術:8月27日消息,據風險投資公司Andreessen Horowitz(a16z)最新公告顯示,他們將推出一個價值4億美元的種子基金。該風投表示,種子投資長期以來一直是VC核心,是對創業團隊、創業想法的真正投資押注。今年六月,a16z推出22億美元的加密基金,專注于投資加密網絡和數字資產行業的創業團隊,目前該風投在加密基礎設施、DAO、DeFi和NFT等垂直領域都有投資。憑借最新推出的種子基金,該公司將擴大其他“機會網絡”,并與技術領域里有雄心勃勃想法的頂級團隊一起學習。(blockworks)[2021/8/28 22:42:36]
2.發展階段的保安考慮——管理考慮和訪問控制
內容:實施訪問控制,限制對特權帳戶和智能合約調用執行管理任務的特殊功能的能力。遵循“最小特權原則”——每個參與者應該只擁有所需的最小訪問量。
原因:通過升級和治理流程維護協議,開發人員可以通過添加新功能、修補安全問題和解決不斷變化的條件來改進協議。如果升級能力沒有得到適當的控制,這可能會構成嚴重的安全漏洞。
方法:建立多重簽名錢包或?DAO?合約,以透明的方式代表社區管理變更。變更應該經過徹底的審查過程,并設置一個時間鎖定,以確保在治理攻擊的情況下可以驗證其正確性并回滾。確保在自行保管錢包或安全保管服務中可安全存儲和訪問特權密鑰。
3.?考慮可重復使用的、經過實戰測試的模板和集成
內容:盡可能利用現有的智能合約標準,并評估可能需要與現有協議進行的協議集成的安全性假設。
原因:使用現有的經過實戰檢驗、社區審計的標準和實施降低安全風險方面的措施會有很大的幫助。評估協議集成的風險有助于開發安全檢查,以防止對外部組件的攻擊。
方法:導入經過安全審計的受信任合約庫和接口。Web3的重點是開源使用、重用性和可組合性。確保在代碼庫中記錄合約依賴項及其版本,盡可能減少代碼占用。例如,導入大型項目的特定子模塊,而不是導入所有內容。了解你的風險敞口,監控供應鏈攻擊。使用官方接口調用外部協議,并確保考慮到潛在的集成風險。監控重復使用的合約的更新和安全披露。
4.測試和評審階段的安全性考慮——考慮測試和文檔
內容:創建清晰、全面的代碼文檔,并建立一個快速、徹底、易于運行的測試套件。在允許的情況下,在測試網或通過主網模擬建立測試環境,進行更深入的實驗。
原因:寫出對代碼庫預期行為的假設有助于確保威脅模型中的風險得到解決,并且用戶和外部審計員可理解開發團隊的意圖。為代碼創建測試套件有助于證明開發假設,并鼓勵對威脅模型進行更深入的思考。這個測試套件應該包括在極端市場場景下檢查項目代幣經濟的機制設計測試,以及單元測試和集成測試。
方法:實施已知的測試框架和安全檢查器,如Hardhat、Mythril、Slither、Truffle等,它們提供不同的測試技術,如模糊化、屬性檢查,甚至正式驗證。使用NatSpeccomments大范圍記錄代碼,從而指定預期的副作用、參數和返回值。使用文檔生成工具以及高級設計說明生成實時文檔。
5.?考慮內部審查和安全審計
內容:花時間通過內部和外部代碼檢查來發現漏洞。
原因:從特性開發轉向關注安全問題給了開發人員時間來發現潛在的模糊問題。外部審計在這方面尤其發揮作用,因為它們可以帶來開發團隊不具備的外部視角和專業知識。
方法:在項目開發的適當節點,凍結某功能,從而有時間進行內部審查,然后進行外部審計。這應該在任何實際部署和升級之前進行。
請查看?ConsenSys、Nassent、OpenZeppelin和TrailofBits的指南,這些指南為開發人員提供了考慮事項清單,包括時間安排,供任何準備審計的人參考。還要確保檢查部署交易,確保它們使用經審核的代碼版本并具有適當的參數,特別是在升級軟件時。
6.?部署和維護階段的安全考慮——激勵白帽社區參與
內容:創建鼓勵社區參與開源代碼庫安全改進的程序。一種方法便是創造漏洞獎勵。另一種方法是鼓勵社區開發協議監控檢測機器人。
原因:開發團隊可以從大范圍的知識和經驗中獲益。這樣的程序可以幫助激發對一個項目的熱情,從本質上把社區和白帽黑客變成布道者。通過為黑客提供成為防御者的途徑,它們還可以幫助將潛在的攻擊者轉變為安全資產。
方法:使用漏洞賞金平臺激勵熟練的黑客安全地披露漏洞。
注:文中的一些作者在Forta公司工作,該公司擁有一個網絡,為去中心化創建高質量安全監控機器人提供了一個代幣化激勵結構。開發團隊可以鼓勵他們的協議社區利用傳統和Web3原生的兩種方法來激勵漏洞獎勵,并通過增強安全性來讓參與者潛在地獲利,實現雙贏。
7.實時監控安全考慮
內容:實施監控智能合約和關鍵操作組件的系統,并根據已知的威脅模型向開發團隊和社區報告可疑活動。
原因:問題的早期檢測使團隊能夠快速響應漏洞,潛在地阻止或減輕任何損失。
方法:使用監控平臺或分布式節點運行機器人,實時監控智能合約事件。根據需要為開發團隊和更廣泛的社區插入數據儀表板和警報通知。
8.意外和緊急情況響應操作的安全考慮
內容:使用能夠在發生任何安全問題時立即做出響應的工具和流程。
原因:即使有最好的部署前保障措施,智能合約和關鍵組件仍有可能出現實時問題。配備專門的人員、清晰的流程和適當的自動化設備,確保可以快速調查事件,并盡快解決。
方法:為最壞的情況做準備,計劃如何應對事件或緊急情況,并在最大程度上自動化響應能力。包括分配調查和響應的責任,這些人員可以通過分布式安全郵件列表、代碼存儲庫中的指示或智能合約注冊表就安全問題公開聯系。根據協議的威脅模型,開發一組流程,其中可以包括場景演練和采取緊急行動所需的預期響應時間,可以考慮將自動化集成到緊急事件響應中。
安全考慮應該是成功開發的一個組成部分,而不只是事后考慮或補充。雖然這個框架分享了一些構建Web3協議和應用程序的快速指南,從而促進整個開發過程中的安全性,但沒有任何簡短的概述可以全方面討論智能合約安全。缺乏內部安全專業知識的團隊應該聯系合格的Web3安全專家,他們可以指導并幫助應用于他們的特定情況。
請記住,安全性不是一個簡單的問題。安全性將永遠是一套永無止境、持續不斷的最佳實踐。我們仍然處于建立這些實踐的初期階段,現在是時候為所有開發人員協作創建和共享它們了。
Tags:SENVAULTSSEULTSENNOSPUNK Vault (NFTX)Platonic QuintessenceLONDON Vault (NFTX)
作者:MarioGabriele,TheGeneralist原文標題:《Blockspace:AnIntroductionwithChrisDixon》 編譯:老雅痞 可行的見解 如果你只有幾分.
1900/1/1 0:00:00整理:Hsilung,鏈捕手“過去24小時都發生了哪些重要事件”?1、V神:以太坊2.0最早可能于8月進行合并.
1900/1/1 0:00:00作者:胡韜,鏈捕手 在近期的加密市場大崩盤中,加密借貸平臺Celsius是公認的最重要導火索之一,如今被普遍認為資不抵債、瀕臨破產.
1900/1/1 0:00:002022年5月20日,中國上海——由以太坊上海籌委會成員主辦,中國生物多樣性保護與綠色發展基金會和通商中國協辦.
1900/1/1 0:00:00自2020年DeFi?Summer以來,穩定幣得到爆發式的增長。據Coingecko數據顯示,市值前十的加密貨幣中有3個穩定幣項目,分別為USDT、USDC、BUSD,這些穩定幣項目近兩年的市值.
1900/1/1 0:00:00整理:麟奇,鏈捕手 重要資訊 1、LFG:目前持有313個BTC,計劃使用剩余資產補償UST持有者5月16日消息,LunaFoundationGuard在推特公布儲備資金使用情況.
1900/1/1 0:00:00