前言
慢霧安全團隊開源--?Web3項目安全實踐要求,提供了詳細的實踐要求和建議來幫助Web3項目研發團隊識別和防范這些潛在的安全風險。Web3項目方可以參考本文提供的安全實踐要求,掌握相應的安全技能,提高Web3項目的安全性,以便更好地保護項目和用戶的資產安全。
Web3項目安全實踐要求包含如下的內容:
0x00背景概述
現今針對Web3項目的攻擊手法層出不窮,且項目之間的交互也越發復雜,在各個項目之間的交互經常會引入新的安全問題,而大部分Web3項目研發團隊普遍缺少的一線的安全攻防經驗,并且在進行Web3項目研發的時候重點關注的是項目整體的商業論證以及業務功能的實現,而沒有更多的精力完成安全體系的建設,因此在缺失安全體系的情況下很難保證Web3項目在整個生命周期的安全性。
通常項目方團隊為了確保Web3項目的安全會聘請優秀的區塊鏈安全團隊對其代碼進行安全審計,在進行安全審計的時候,才能夠更好地實現各種安全實踐要求,但是區塊鏈安全團隊的審計僅僅是短期的引導,并不能讓項目方團隊建立屬于自己的安全體系。
因此慢霧安全團隊開源了Web3項目安全實踐要求來持續性幫助區塊鏈生態中的項目方團隊掌握相應的Web3項目的安全技能,希望項目方團隊能夠基于Web3項目安全實踐要求建立和完善屬于自己的安全體系,在審計之后也能具備一定的安全能力。
0x01開發準備
需求分析文檔要求
1.?確保包含項目的詳盡描述
2.?確保包含項目解決的問題
3.?確保包含安全/隱私風險評估
HBAR基金會和Lumos Labs推出第二批Hatch Web3加速器:金色財經報道,Lumos Labs和HBAR基金會推出了Hedera第二批Hatch Web3加速器該加速器將對早期初創公司和在去中心化公鏈Hedera上構建的創新Web3項目開放并且可以在4月30日之前提交申請。據悉,本次關注的垂直主題包括可持續性、金融科技、加密經濟和元宇宙,申請項目還將有資格贏得 15 萬美元的獎池,并獲得專家指導、生態系統支持和進入市場的支持并有機會參加一對一的導師會議、研討會、聚會和專家指導。(indiaeducationdiary)[2023/3/6 12:43:59]
開發設計文檔要求
1.?確保包含項目的架構設計圖
2.?確保包含代碼中函數的功能描述
3.?確保包含代碼中合約之間的關聯關系描述
4.確保安全/隱私的要求被正確實施
業務流程文檔要求
1.?確保包含項目中每個業務流程的描述
2.?確保包含詳盡的業務流程圖
3.?確保包含詳盡的資金鏈路圖
0x02開發過程
智能合約安全編碼要求
1.確保包含盡可能基于OpenZeppelin等知名library進行開發
2.確保包含使用SafeMath或0.8.x的編譯器來避免絕大部分溢出問題
3.確保遵循函數命名規范,參考:soliditystyleguide
(https://docs.soliditylang.org/en/v0.8.14/style-guide.html)
4.確保函數和變量可見性采用顯性聲明
5.確保函數返回值被顯性賦值
6.確保函數功能和參數注釋完備
7.確保外部調用正確檢查返回值,包含:transfer,transferFrom,send,call,delegatecall等
迪拜多種商品交易中心與Web3公司TDeFi合作推出新的加速器計劃:金色財經報道,迪拜多種商品交易中心(DMCC)與 Web3 孵化器和咨詢公司 TDeFi 合作,在 DMCC Crypto Centre 為 Web3 和區塊鏈公司提供新的加速器計劃,該計劃提供與加密相關的一系列主題的指導和會議,并擴大業務規模,吸引新興加密公司前往迪拜。該計劃為期一個月,將在未來 12 個月內至少舉辦兩期,感興趣的公司將得到 DMCC 的優先指導和服務。DMCC Crypto Centre 目前擁有至少 550 名成員,是迪拜地區 Web3 和區塊鏈公司集中地。[2023/2/24 12:27:12]
8.確保interface的參數類型返回值等實現是正確的
9.確保設置合約關鍵參數時有進行鑒權并使用事件進行記錄
10.確保可升級模型的新的實現合約的數據結構與舊的實現合約的數據結構是兼容的
11.確保代碼中涉及算數運算的邏輯充分考慮到精度問題,避免先除后乘導致可能的精度丟失的問題
12.確保call等lowlevel調用的目標地址和函數是預期內的
13.使用call等lowlevel調用的時候要根據業務需要限制Gas
14.編碼規范進行約束,遵循:先判斷,后寫入變量,再進行外部調用(Checks-Effects-Interactions)
15.確保業務上交互的外部合約是互相兼容的,如:通縮/通脹型代幣,ERC-777,ERC-677,ERC-721等可重入的代幣,參考:重入漏洞案例
(https://medium.com/amber-group/preventing-re-entrancy-attacks-lessons-from-history-c2d96480fac3)
16.確保外部調用充分考慮了重入的風險
17.避免使用大量循環對合約的storage變量進行賦值/讀取
百度正在探索以DuDu Lab為核心,以NFT進軍海外原生Web3市場:11月15日消息,百度正在探索以DuDuLab為核心,以NFT進軍海外原生Web3市場,并圍繞DuDu island的故事開創Web3 NFT IP元宇宙,未來或將成為第一個Web3迪斯尼。
據悉,DuDu Lab通過AI給與持有者進行創作,旨在改變傳統的NFT運營模式,幫助Web3轉型發展意愿的企業發行與策劃運營NFT等流程。[2022/11/15 13:07:15]
18.盡可能避免權限過度集中的問題,特別是修改合約關鍵參數部分的權限,要做權限分離,并盡可能采用治理,timelock合約或多簽合約進行管理
19.合約的繼承關系要保持線性繼承,并確保繼承的合約業務上確實需要
20.避免使用鏈上的區塊數據作為隨機數的種子來源
21.確保隨機數的獲取和使用充分考慮回滾攻擊的可能
22.盡量使用Chainlink的VRF來獲取可靠的隨機數,參考:ChainlinkVRF
(https://docs.chain.link/vrf/v2/introduction)
23.避免使用第三方合約的token數量直接計算LPToken價格,參考:如何正確獲取LP的價
(https://blog.alphaventuredao.io/fair-lp-token-pricing/)
24.通過第三方合約獲取價格的時候避免單一的價格來源,建議采用至少3個價格來源
25.盡可能在關鍵的業務流程中使用事件記錄執行的狀態用于對項目運行時的數據分析
26.預留全局與核心業務緊急暫停的開關,便于發生黑天鵝事件的時候及時止損
測試用例代碼要求
1.?確保包含業務流程/函數功能可用性測試
2.確保包含單元測試覆蓋率95%以上,核心代碼覆蓋率要達到100%
Web3支付公司Reap完成4000萬美元融資:10月27日消息,Web3支付公司Reap宣布完成4000萬美元新一輪融資,此輪融資由硅谷Acorn Pacific Ventures、美國金融服務公司Arcadia Funds和香港數字資產管理公司HashKey Capital領投,香港金融科技公司Payment Asia,以及美國風險投資公司Hustle Fund和Fresco Capital等參投。
Reap將利用新資金開發基礎設施,以幫助促進Web3項目和傳統企業之間的支付,同時在亞洲、北美和歐洲建立區域中心并繼續與加密貨幣公司合作構建Web3基礎設施,以幫助他們訪問傳統商家和實體服務,相關業務預計最早可在2023年1月啟動。[2022/10/27 11:47:18]
基礎安全配置要求
1.?確保官方郵箱使用知名服務商,如Gmail
2.確保官方郵箱賬號強制開啟MFA功能
3.確保使用知名域名服務商,如GoDaddy
4.確保域名服務商平臺的賬號開啟MFA安全配置
5.確保使用優秀的CDN服務提供商,如Akamai、Cloudflare
6.確保DNS配置開啟了DNSSec,在域名服務管理平臺上為管理賬號設置強口令并開啟MFA認證
7.確保全員的手機和電腦設備使用殺軟件,如卡巴斯基、AVG等
Web前端安全配置要求
1.?確保全站的HTTP通訊采用HTTPS
2.確保配置了HSTS,以防止中間人攻擊,如:DNShijacking,BGPhijacking,參考:HSTS配置介紹
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)
3.確保配置了X-FRAME-OPTIONS,以防止Clickjacking攻擊,參考:X-FRAME-OPTIONS配置介紹
a16z:SEC提出的交易所定義過于寬泛可能會抑制web3創新:金色財經消息,AndreessenHorowitz(a16z)針對SEC提交的交易法提案提交了一封評論信。a16z在信中反對 SEC 提出的交易所定義,認為其過于寬泛并可能會抑制 web3的創新。具體來說,a16z認為它并不適用于DeFi協議,并斷言如果它適用,則會受到行政程序法的重大缺陷的影響。
對此a16z呼吁SEC建設性地與web3創新者接觸,以保護投資者并促進這一至關重要的技術的創新。[2022/4/19 14:33:07]
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)
4.確保配置了X-Content-Type-Options,以對抗瀏覽器sniff?為導致的?險,參考:X-Content-Type-Options配置介紹
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options)
5.確保配置了CSP策略,以防止XSS攻擊,參考:CSP內容安全策略介紹
(https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
6.確保與權限和用戶憑證相關的Cookie配置了HttpOnly,Secure,Expires,SameSite標志,參考:Cookie配置介紹
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
7.確保不同業務的子域嚴格劃分開,避免子域的XSS問題互相影響
8.確保引用的第三方資源使用了integrity屬性進行限制,避免第三方被黑導致項目方的站點受到影響,參考:SRI配置介紹
(https://developer.mozilla.org/zh-CN/docs/Web/Security/Subresource_Integrity)
9.確保正確配置CORS,僅允許指定origin域,協議和端口訪問項目的資源,參考:CORS配置介紹
(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS)
10.確保業務中實現的addEventListener/postMessage有檢查消息的origin和target,參考:postMessage安全介紹?
(https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage)
后端環境安全配置要求
1.確保選用優秀的云服務器提供商,如:AWS、Google云等
2.確保項目使用到的云平臺管理賬號使用強口令并開啟MFA認證
3.確保項目代碼部署到服務器前對服務器進行安全加固,如:安裝HIDS,采用SSHKey進行登錄,設置SSH登錄alert,設置SSH登錄google-auth等
4.確保使用專業軟件監控服務、服務器可用性,如APM、Zabbix
5.確保使用專業的機構定期測試項目安全性,如SlowMist、TrailofBits等
0x03發布過程
需要有完備的安全上線發布流程,可以參考如下的內容進行細化:
代碼凍結要求
在預計的上線時間倒推2天,即上線2天前必須凍結代碼不再做任何代碼改動
單元測試要求
1.?確保單元測試覆蓋率95%以上,核心代碼覆蓋率100%
2.確保輸出單元測試的覆蓋率報告
回歸測試要求
在上線1天前執行單元測試并進行回歸測試
測試報告要求
上線前0.5天由開發及測試共同完成測試報告,如果不通過,則推遲上線時間,開發完成修改后重新進入代碼凍結階段
安全審計要求
1.?安全審計人員在代碼凍結后進入整體安全回歸,如發現任一漏洞或安全隱患,則推遲上線時間,開發完成修改后重新進入代碼凍結
2.安全審計需要至少三個團隊進行獨立的審計,可以采用1個內部團隊+?2個外部團隊
0x04運行期間
運行時安全監控
盡可能的通過關鍵業務流程中觸發的事件來發現項目運行時的安全問題,如:
1.合約關鍵權限/參數變更:監控管理角色發生變更的事件,管理角色修改合約關鍵參數的事件,及時發現私鑰可能被盜的情況
2.合約資金變化:監控價格變動及合約資金變動的情況,及時發現可能的閃電貸等攻擊
3.周期性對賬:周期性對鏈上的事件與交易進行對賬,及時發現可能的業務邏輯上的問題
運行環境安全加固
1.確保實施前端代碼所在服務器的安全加固,如:安裝HIDS(https://www.aliyun.com/product/aegis),采用SSHKey?進行登錄,設置SSH登錄alert(https://medium.com/@alessandrocuda/ssh-login-alerts-with-sendmail-and-pam-3ef53aca1381),設置SSH登錄google-auth(https://goteleport.com/blog/ssh-2fa-tutorial/)?等
2.確保DNS配置開啟了DNSSec,在域名服務管理平臺上為管理賬號設置強口令并開啟2次認證
3.確保項目使用到的云平臺管理賬號使用了強口令并開啟了2次認證
發布漏洞賞金計劃
發布漏洞賞金計劃或入駐知名的漏洞賞金平臺,?吸引社區白帽子為項目保駕護航;可以選擇?BugRap?(https://bugrap.io/),?code4rena?(https://code4rena.com/),?immunefi?(https://immunefi.com/)
成立名義應急小組
成立名義應急小組并對外提供聯系方式,由應急小組負責處理白帽子發現的問題或在黑天鵝事件爆發時主導團隊成員進行應急處置
0x05應急處置
完備的應急處置流程
盡可能地制定完備地應急處置流程,有條不紊地根據應急處置流程來處置黑天鵝事件
止損處置要求
1.?根據問題影響的范圍和危害程度,及時通過緊急暫停開關進行止損
2.通知社區成員發生黑天鵝事件,避免用戶繼續與項目進行交互導致虧損
黑客追蹤要求
1.迅速分析黑客的獲利地址,并留存PC/Web/服務器的訪問日志
2.對服務器進行快照,及時保留被黑現場
3.聯系專業的安全團隊協助進行追蹤,如:?MistTrack追蹤分析平臺?(https://misttrack.io/),?Chainalysis?(https://www.chainalysis.com/)
修復問題要求
1.與專業安全團隊討論問題的最佳修復方案
2.正確實施修復方案并請專業的安全團隊進行驗證
安全發布要求
執行發布過程要求,確保一切代碼的變更均有經過測試和安全審計
復盤分析要求
1.?披露驗尸報告并與社區成員同步修復方案及補救措施
2.驗尸報告需要同步問題的本質原因,問題的影響范圍,具體的損失,問題的修復情況,黑客的追蹤等相關進展
總結
安全是動態管理的過程,僅依賴于第三方安全團隊的短期審計并不能真正保障項目長期安全穩定地運行。因此,建立和完善Web3項目的安全體系是至關重要的,項目方團隊自身具備一定的安全能力才能更好的保障Web3項目安全穩定地運行。
除此之外,我們建議項目方團隊還應該積極參與安全社區,學習最新的安全攻防技術和經驗,與其他項目方團隊和安全專家進行交流和合作,共同提高整個生態的安全性。同時,加強內部安全培訓和知識普及,提高全員的安全意識和能力,也是建立和完善安全體系的重要步驟。
最后,Web3項目安全實踐要求目前屬于v0.1版本,并且還在持續的完善,如果你有更好的建議,歡迎提交反饋。
撰文:AzeemKhan編譯:aididiaojp.eth,ForesightNews公共產品和新所有權模式的結合將推動互聯網的下一次迭代.
1900/1/1 0:00:00原文作者:Cookie,律動BlockBeats不久前的3月29日,Gem宣布新通過了50000份GemV2測試申請.
1900/1/1 0:00:00前兩天Arbitrum剛剛官宣了137家獲得TokenAirdrop的DAO,幾乎包含了顯露出了苗頭的各賽道用例伴隨著3月23日晚擠爆Arbitrum基金會官網的ARB申領盛況.
1900/1/1 0:00:00來源:BinaryDAOAuthor:0xhhhEditor:RedOne本文是PolygonzkEVM系列文章的第一篇,簡要闡述了PolygonzkEVM的整體架構和交易執行流程.
1900/1/1 0:00:00作者:華爾街日報WeilunSoon,ElaineYu編譯:比推BitpushNewsLinnLiu孫宇晨正試圖通過在多米尼克國推出的數字公民計劃來重振數字資產交易所火必的運營.
1900/1/1 0:00:00編輯:YuanShan@Web3CN.Pro這兩天GPT-4的到來,再次成為朋友圈及媒體熱議的話題。此次升級、更新讓大家看到了AI給科技和社會帶來的潛在挑戰性甚至革命性.
1900/1/1 0:00:00