SeeDAO IR導言:據安全數據顯示,今年以來有記錄的因詐騙和安全漏洞帶來的加密領域損失已近30億美元。每一個區塊鏈行業的參與者都無異于身處“大西部”,無時不刻受到隱私、財產損失的風險。
雖然業內已經有部分對區塊鏈詐騙、安全漏洞進行分析的工作,但大多只是針對某些案例,或者對背后機制的討論不夠深入。因此,我們很高興為大家帶來這篇由兩位網絡安全領域的專家所撰寫的萬字長文,為大家全面且深入的分析當前幾乎所有安全隱患并提供應對策略。
自網絡誕生以來,攻防領域就一直是研究的熱點;區塊鏈誕生之后由于其巨大的財富效應與用戶對安全的認識不足,吸引了無數的黑客挖空心思進行攻擊。在近幾年Defi與NFT高速發展的環境下,利用區塊鏈網絡實施的釣魚詐騙攻擊更是越來越多,各類攻擊場景及攻擊方法層出不窮。
本文前半部分闡述了區塊鏈安全基礎知識,重點闡述了用戶在使用區塊鏈相關應用時應重點關注的安全要素。后半部分整理常見的利用區塊鏈欺騙用戶資產的攻擊案例,通過對黑客攻擊手法進行分析,引出針對特定攻擊手段的防護方案。
區塊鏈安全基礎思維導圖
根據柯克霍夫原則,即使已掌握了密碼系統的運作步驟,但是在密鑰未被泄露的前提下,密碼系統仍然是安全的。在區塊鏈環境下,保護錢包私鑰,是保護鏈上數字資產的重要措施和前提。
區塊鏈錢包軟件所管理的私鑰通常是256bit長的隨機字符串,為便于展示區塊鏈錢包工具會將256bit數據轉換為32字節長的16進制編碼。“0x40e667191f4497cc3ab018ceb524a32c2f4875fbfb0103322767f46f5b319244”即為區塊鏈錢包軟件生成的錢包私鑰。通過將私鑰導入區塊鏈錢包,用戶即可掌握錢包內對應的數字資產。利用橢圓曲線密碼框架,開發者可以利用私鑰數據便捷的計算出與之對應的公鑰信息,通過對公鑰進行keccak256運算并取運算結果的最后20字節,即獲得區塊鏈錢包地址。使用以太坊ethers工具庫生成公私鑰,并根據公鑰信息計算錢包地址的代碼運行結果如下圖所示:
公私鑰生成錢包地址方法
考慮到哈希運算具有抗強碰撞和弱碰撞特性,因此在不掌握錢包私鑰的前提下攻擊者難以通過隨機碰撞的方式構造出兩個完全一致的區塊鏈錢包地址。為便于用戶記憶及保存,在BIP39提升改進計劃中引入了使用助記詞表示區塊鏈錢包私鑰的方法。為便于理解,讀者可以認為一組由12、15、18、21或24個單詞組成的助記詞列表即對應一組區塊鏈錢包私鑰。在助記詞處于保密狀態時,用戶的錢包私鑰及數字資產是安全的。
在創建區塊鏈錢包時,助記詞及私鑰數據是異常敏感的,在進行敏感操作前用戶檢查周邊環境是否有可疑人物、高清攝像頭等可能產生窺屏事件的不安全因素。用戶通常需要使用紙筆或助記詞鋼板記錄錢包助記詞并妥善保存(如鎖入保險箱)。在使用區塊鏈網絡時,用戶應當做到不向任何人透露與助記詞及私鑰相關的任何信息,切實保障用戶數字資產的安全性。
智能合約的出現使以太坊網絡相較比特幣網絡具備了更好的延展性,開發者可通過以太坊提供的SDK開發工具編寫智能合約代碼便捷的開發DAPP。在以太坊中,智能合約是一種部署后則代碼邏輯無法被篡改的計算機程序。待智能合約部署后,區塊鏈用戶即可以按照智能合約對應的代碼邏輯與合約進行交互。
用戶在與智能合約交互前,應檢查:1)智能合約代碼是否已通過區塊鏈瀏覽器完成了開源操作;2)對智能合約代碼關鍵邏輯(例如要調用的智能合約方法)進行審計,待確保代碼不存在惡意使用或轉移用戶數字資產的敏感行為后,再調用智能合約方法。
調用經過合約開源認證或已通過知名智能合約審計公司安全性審計的智能合約方法,能夠在一定程度上保障用戶持有數字資產的安全性。
區塊鏈錢包軟件為其用戶提供了私鑰管理,錢包賬戶管理,遠程過程調用(RPC)節點管理、交易簽名、交易管理、與智能合約交互及硬件錢包連接等功能。區塊鏈錢包軟件存在的重要作用就是為用戶提供了一個界面友好的私鑰容器、密鑰管理系統及交易簽名代理工具,確保用戶能夠在不具備管理私鑰及區塊鏈交易廣播工具能力的基礎上,能夠便捷的與區塊鏈網絡進行交互。
從錢包是否與互聯網存在直接連接進行分類,區塊鏈錢包劃分為1)冷錢包;2)熱錢包。
從錢包運行平臺進行分類,錢包可以劃分為1)PC主機錢包;2)瀏覽器插件錢包;3)移動手機端錢包;4)硬件錢包;5)網頁錢包等。
優先選擇從官方渠道分發的區塊鏈錢包軟件。以瀏覽器插件錢包為例,用戶可以從官方網站,瀏覽器應用商店,插件錢包官方Github倉庫等渠道下載并安裝瀏覽器插件錢包。在日常使用過程中,需要定期更新區塊鏈錢包、底層操作系統、瀏覽器并保持其版本總是處于最新狀態,以此來保護用戶持有的數字資產安全。
在使用區塊鏈錢包軟件時,用戶應設置強解鎖口令以避免遭受口令爆破攻擊。在離開電腦前,應主動鎖定屏幕和錢包,以避免遭遇因電腦錢包處于未鎖定狀態導致數字資產被濫用。Metamask錢包提供的自動鎖定定時功能如下所示。
5分鐘后錢包自動鎖定
用戶應當優先選擇官方渠道購買的硬件錢包。待收到錢包后,需要訪問硬件錢包官方網站對錢包完整性及固件版本進行驗證,以避免遭受供應鏈攻擊。針對硬件錢包實施的攻擊層出不窮:在使用硬件錢包簽名交易時,用戶需查看待簽名交易的完整內容,并對交易合法性進行認證,避免進行盲簽名,以避免遭受非法交易簽名攻擊進而丟失數字資產。
用戶在收到硬件錢包并創建區塊鏈賬戶時,應當多次執行創建錢包生成助記詞功能。通過記錄硬件錢包生成的助記詞與之及對應取得區塊鏈錢包地址,比對不同創建錢包操作所生成的助記詞差異,確保硬件錢包生成私鑰所使用的隨機數種子足夠安全,創建錢包操作所生成的私鑰足夠隨機。
盲簽名 又名 Blind Signing 起源于一個問題:如果給我們提供了一份內容完全密封的合同,只留下簽名頁可見,你會愿意簽署這份合同嗎?我的答案是否認的:不會簽署這份合同,避免簽署對自己不利的合同內容。
在區塊鏈環境中,應用硬件錢包與智能合約進行交互與 Blind Signing 很像,因為簽署智能合約交互交易時,用戶無法通過硬件錢包獲取智能合約的底層行為邏輯。Ledger的屏幕是非常小的,無法向用戶與智能合約交互交易的全貌。用戶若 enable Blind Signing 時,就代表其已經接受盡管 Ledger 無法向用戶展示智能合約全貌的前提下,任然利用 Ledger 批準與智能合約進行交互的交易:此時,用戶已經同意信任其發送的交易,而不是選擇對交易合法性及行為進行校驗。
幣安Ronin網絡充提業務全面恢復:4月6日消息,幣安官方公告,Ronin(RON)網絡的存取款已全面恢復。以太坊網絡上 Wrapped Ether (WETH)的存取款以及從WETH到ETH的轉換功能也已重新開放。[2022/4/6 14:07:58]
更多關于 Blind Signing 的資料可參考如下鏈接:
以太坊中知名的RPC節點服務主要包括Infura、Alchemy、Moralis等,BSC鏈的RPC節點服務商主要由BSC鏈官方提供。
近年來受到關注的新公鏈解決方案如Polygon、Optimism、Avalanche及Fantom的RPC節點服務主要由Ankr提供,區塊鏈用戶在使用特定公鏈時,需要通過在錢包內添加RPC節點地址鏈接的方式與對應的區塊鏈RPC節點建立連接,以便通過RPC遠程調用的方式實現與區塊鏈的通信及交互。RPC節點的作用是重要的,如果沒有RPC節點,用戶個人將難以接入區塊鏈網絡。
下圖給出了 Conflux eSpace 區塊鏈網絡對外公開的 RPC 節點信息,通過錢包連接RPC節點,在用戶發起轉賬和智能合約交互時,由RPC代理將交易打包發送至區塊鏈網絡,最終使交易以區塊形式進上鏈。
用戶應當選擇安全性經過驗證的RPC節點服務商,以保障其錢包數據來源的可靠性及與區塊鏈網絡交互的穩定性。惡意的RPC節點提供商可能會惡意顯示不正確的區塊鏈狀態并記錄用戶的鏈上活動數據,嚴重危害用戶數據安全。
部分攻擊者會通過使用社交網絡私信或發送電子郵件等方式向目標用戶發起攻擊,通過精心設計釣魚場景的方式使受害者確信:只要按照攻擊者指示進行操作(訪問特定站點、與特定智能合約進行交互或將助記詞導入至區塊鏈錢包),即可獲得獎勵:當受害者選擇相信攻擊者時,其已進入了由攻擊者精心構造的釣魚詐騙陷阱。由于區塊鏈交易具有不可篡改和不可逆的特性:大量區塊鏈釣魚攻擊受害者在發現資產因為自身疏忽而被轉移至攻擊者持有的區塊鏈賬戶后,丟失的資產早已無法挽回。
下圖給出了一封以盜取區塊鏈數字資產為目標的釣魚郵件:用戶需要在特定截止日期(DDL)前在平臺處登記區塊鏈錢包,不然就凍結(威脅)賬戶。在收到這類電子郵件時,不點擊郵件或私信中包含的任何超鏈接信息或按鈕,待與官方核實確認郵件內容合法性后,再對郵件進行處理。
釣魚郵件
設置防釣魚碼能夠在一定程度解決釣魚郵件的問題,下圖給出了premint平臺提供的防釣魚碼功能:
開發者在開發DAPP應用時所使用的環境即為開發環境,保護開發環境安全,是保護應用開發者及DAPP應用使用者資產安全的重要前提。DAPP應用是基于區塊鏈網絡交互框架開發的(如ethers,web3.js等),為了方便用戶使用DAPP,開發者通常需使用基于JavaScript腳本開發的前端框架react或vue構建DAPP應用前端,便于用戶直接利用前端UI直接與智能合約進行交互。前端開發框架有助于DAPP開發團隊便捷的開發支撐DAPP應用運行和使用的前端系統。
選取經過市場驗證的SDK能夠在一定程度上確保資產安全。
完全相信搜索引擎結果,是釣魚攻擊成功實施的原因之一。
搜索引擎,是一種按照特定策略、運用特定計算機程序從互聯網上采集信息,在對信息進行整理和歸納后,對外向用戶所提供的一種檢索及結果展示系統,是幫助用戶查找特定資料及信息的有力支撐工具。
在區塊鏈環境中,用戶需訪問DAPP官方網站時,通常也會將搜索引擎的檢索結果作為參考之一,這給了攻擊者可乘之機。攻擊者可以通過仿冒知名的DAPP平臺界面UI,并對仿冒站點進行SEO優化,使仿冒站點出現在搜索引擎結果的第一位或靠前位置。出于對搜索引擎結果的信任,最終導致用戶持有的數字資產丟失。仿冒DAPP通過SOE優化進入搜索引擎結果靠前位置的案例。盡管 Google已將其標記為Ad,但由于其結果出現在搜索結果第一位,仍然有部分用戶中招。
SOE優化使釣魚站點出現在搜索結果
被仿冒的DAPP應用為x2y2這一 NFT交易平臺,其官方鏈接為x2y2.io,而仿冒站點鏈接為x2y2market.com。黑客通常會選取與被仿冒DAPP相近或相關的域名以達到欺騙并盜取用戶數字資產的目的。
在開始這一內容前,我們需要明確一個概念,什么是交易?什么是簽名?什么時候會簽名,在區塊鏈中的交易有以下幾類。
轉賬交易:如將 1ETH 轉賬至另一個錢包地址
與智能合約交互的交易:如調用智能合約的SafeTransferFrom方法,將NFT轉移至另一個錢包地址,這相當于發起一筆寫智能合約的交易
所有交易在上鏈之前,都需要使用交易發起人對交易Hash進行簽名,在交易上鏈的過程中,通過對簽名結果認證的方式驗證交易合法性,合法的交易打包上鏈的這一刻交易行為將生效:不管是轉賬的ETH還是轉移的NFT都會進入目標地址中。
此外,還有另外一種簽名,比如登錄mirror時需要簽名來驗證用戶掌握連接mirror的區塊鏈賬戶。
確保交易簽名安全的重點是:1)確保用戶在確認交易時所看到的待簽名內容是符合用戶預期的;2)確保用戶簽名的交易發送后,區塊鏈能夠按照用戶對交易的預期執行。用戶所見即所簽,所簽即所行。確保經用戶簽名的交易被發送后,執行結果是符合用戶預期的是保障簽名安全的重要指導方針。
在竊取用戶私鑰無果的前提下:部分黑客打起了盜用簽名數據的歪心思:通過誘導用戶對不安全的交易數據進行簽名:誘導用戶訪問釣魚頁面并在釣魚頁面中將存在盜取資產操作的交易利用keccak256生成待簽名數據推送至用戶,若用戶因疏忽進行了簽名操作,則黑客即獲取到能夠向區塊鏈節點證明交易合法性的簽名數據。此時,黑客只需要將簽名數據和構造的交易廣播至區塊鏈網絡,即可實現濫用受害者賬戶數字資產的目的(通常為盜取NFT)。
下圖給出了一個不安全的待簽名請求,發起該請求的站點為釣魚站點https://thejewsnfts.xyz,在后文我們還將對其通過仿冒推特賬戶實施攻擊的方法進行闡述。
傳臺積電將全面提升7nm和28nm制程產能:10月8日消息,業內消息人士稱,臺積電(TSM.N)除計劃擴充5nm產能外,還準備全面擴大7nm和28nm制程產能,這一舉動將促使臺積電再度拔高今年的資本支出預期。
此外,消息人士表示,臺積電正尋求與索尼(SONY.N)合作,在日本建造一座28nm晶圓廠。(鞭牛士)[2021/10/8 20:12:45]
不安全的待簽名數據
在站點向用戶發起簽名請求時,用戶需要對站點和待簽名數據的合法性進行認證,經確認無誤后再執行簽名操作,確保簽名操作執行的鏈上行為符合用戶預期。在遇到待簽名消息為純16進制不可讀數據時,用戶應堅持拒絕簽名。
下圖給出了一個相對安全的待簽名消息,用戶通過簽名該消息實現使用區塊鏈錢包賬戶登錄進入Web3系統的目的:
登錄cryptonatty系統所使用的簽名數據
區塊鏈瀏覽器為用戶提供一個界面友好的查詢區塊鏈鏈上數據的接口。以太坊區塊鏈瀏覽器Etherscan為用戶提供了鏈上交易數據查詢,資產轉移信息查詢,智能合約代碼查詢,智能合約交互,區塊數據查詢,地址資產分析、運算服務費用估算、區塊鏈域名解析等功能,利用這些功能,
用戶可以快速的獲取賬戶的余額信息;對智能合約代碼進行安全審計,實時查詢鏈上交易費用等。一筆以太坊交易主要包含以下信息:交易hash,交易狀態,交易區塊號,交易時間戳,交易提交賬戶,交易接收賬戶,交易發送金額(案例中為0.1Eth),為完成交易所支付的交易費用及交易的單位燃料費用成本等。在使用區塊鏈瀏覽器查詢交易數據及交易詳情時,應優先選擇由區塊鏈官方開發或推薦的區塊鏈瀏覽器,通過檢查目標合約的交易安全與否規避潛在的釣魚或基于合約的授權攻擊。
以太坊交易樣例
區塊鏈瀏覽器是幫助區塊鏈使用者驗證交易是否成功的一項重要工具:用戶A聲稱其通過區塊鏈網絡向用戶B轉賬了1ETH,交易驗證者可要求用戶A分享交易Hash并使用區塊鏈瀏覽器搜索檢查交易信息中的交易接收賬戶是否為B,同時檢查交易發送金額字段是否為1ETH來驗證交易執行情況。此外,交易驗證者還可以通過區塊鏈瀏覽器直接檢查用戶B錢包地址余額變動情況,以驗證B地址余額是否已增加1ETH。
區塊鏈瀏覽器還提供了智能合約開源展示的功能,便于用戶在與智能合約交互前對代碼安全性進行審查。用戶應當掌握檢查智能合約是否已處于開源驗證狀態的方法。用戶應當優先選擇與已完成智能合約代碼開源驗證的處理的智能合約進行交互。用戶應通過區塊鏈瀏覽器,對智能合約代碼安全性進行審計,在確保代碼不存在權限濫用或惡意使用用戶數字資產的行為后,再與合約進行交互。已完成智能合約代碼開源驗證處理的智能合約在區塊鏈瀏覽器中的展示信息如下所示:
完成合約認證的智能合約代碼
在這一章節,我們將重點介紹黑客以盜取區塊鏈數字資產為目標,通過構造釣魚場景的方式在不需要掌握用戶私鑰的前提下盜取數字資產,通過分析這類攻擊的特性,按照1-1對應的方式,給出防護方案。例如2.1.1中給出了DM類仿冒攻擊后馬上即介紹針對DM類釣魚攻擊的安全建議及防護方案。詐騙攻擊的產生原因也就呼之欲出:既然用戶在努力保護自己的私鑰,也知道私鑰很重要,那我就用一個更合理的辦法讓用戶親自把數字資產送給我。
區塊鏈詐騙攻擊思維導圖
2.1.1 DM類釣魚攻擊介紹
利用社交平臺向用戶發起私聊實施釣魚攻擊,是一種相對簡單且易于實施的攻擊:通過精心構造的詐騙場景誘導用戶向特定區塊鏈地址轉賬或訪問釣魚頁面。
用戶參與某抽獎活動并中獎,獎品是免費向用戶贈送的,但用戶需要向特定錢包轉賬0.02ETH作為gas費,對方再將中獎獎品轉發給中獎用戶。
下圖給出了攻擊者利用社交平臺向用戶發起私聊并實施釣魚攻擊的案例截圖
釣魚場景搭建:中獎
DM類釣魚攻擊分析及安全建議
黑客希望通過利益沖昏被釣魚者的頭腦,在使用區塊鏈時,應當堅信沒有免費的午餐。
Ledger硬件錢包在其安全使用建議中專門指出:不要與在Discord、Twitter或任何其他社交平臺上給你發送私人信息的人進行互動及交互,在Web3環境中,任何人都沒有理由直接通過社交聯系用戶,并向其發送信息。
在使用 Discord 及 Twitter時,可以選擇關閉DM選項或不查看推特的私信請求,眼不見為凈。
2.1.2 賬號仿冒類攻擊介紹
通過仿冒社交賬號的方式實施釣魚攻擊:將社交賬號名稱,頭像,介紹等信息設置為與被仿冒社交賬號相近的內容,并通過社交網絡釋放釣魚鏈接的方式實施釣魚攻擊。在區塊鏈環境中,知名的DAPP項目方通常會遭受社交賬號仿冒類攻擊,嚴重威脅到用戶持有的數字資產安全。
下圖給出了一個正版社交賬號:
正版賬號
下圖給出了仿冒賬號通過社交網絡釋放的釣魚站點鏈接
仿冒賬號
賬號仿冒類攻擊分析安全建議
通過比對分析能夠發現仿冒攻擊成功實施需要滿足以下要點:
相似的域名:專門注冊“thejewsnfts.xyz”這一域名以便以假亂真,而正版域名為“thejewsnft.com”,xyz后綴的域名在DAPP中較為常見,以假亂真;
新加坡BitSG幣星交易所開啟全面防御 阻擊黑客進攻:據幣星官方5月18日最新消息:BitSG官網及APP仍處在被黑客連續不間斷攻擊中,上一周遭到黑客DDOS攻擊峰值達到200GB,CC攻擊累計超過100萬次。
通過技術人員與安全公司的通力配合攔截,并沒有對官網及APP造成大的威脅,用戶的訪問、瀏覽、登錄體驗未受到影響。[2020/5/18]
相似的推特用戶名:為了以假亂真,攻擊者還專門按照正版賬戶的推特用戶名設置規則進行了仿冒,仿冒賬戶為@TheJewsETH,正版賬戶為@TheJewsNFT;
相似的推特昵稱:仿冒賬戶的昵稱與正版昵稱相比僅多了“FREE MINT ALIVE”,暗示用戶NFT鑄造活動正在進行中,利用用戶急切參與活動的心理誘導其訪問仿冒賬戶通過社交網絡分發釣魚站點執行鑄造NFT操作;
足夠逼真的釣魚站點:釣魚站點實際并沒有提供鑄造NFT的功能,而是通過釣魚誘導用戶將其賬戶持有的高價值NFT使用權授權給攻擊者持有的區塊鏈錢包賬戶。若用戶訪問釣魚站點并授權交易,則其授權資產將被攻擊者掌握;
獲得授權后,攻擊者可直接調用NFT對應合約中的SafeTransferFrom方法,將資產轉移。
針對該攻擊,主要有以下安全建議:
認準正確的社交賬號,必要時通過社交平臺搜索進行對比;
通過可信的站點關注DAPP應用社交賬號,例如通過premint活動關注的NFT項目方賬號是相對安全的;
訪問釣魚站點并不可怕,可怕的是隨意確認釣魚站點處發起的區塊鏈交易;
記住正版推特賬號的注冊時間等不易被仿冒的信息。
查看賬戶下的回復數及回復信息質量,部分仿冒賬號為了避免用戶在其下罵街會直接關閉回復功能,或設置只允許特定用戶回復。
2.1.3 域名仿冒類攻擊介紹
域名仿冒類攻擊實施通常需要滿足一定的先驗條件:
攻擊者持有相似的域名
攻擊者利用持有的域名部署了類似的DAPP服務;
攻擊者部署的服務能夠以假亂真,使訪問者誤以為其訪問的是官方網站;
被仿冒站點在近期舉辦了需要使用區塊鏈錢包進行交互的活動等。
在2022年7月13日左右,由明星代言的Theirsverse NFT項目就遭遇了域名仿冒攻擊,攻擊者仿造正版域名“theirsverse.com”注冊了仿冒的域名“theirverse.com”,為了使訪問到仿冒站點的用戶更加確信其訪問的是官方網站,攻擊者進行了如下工作使其站點看起來更加真實:
復制了部署在“theirsverse.com”域名的前端界面并部署到仿冒域名DNS指向的Web服務器處;
通過重構代碼的方式對前端邏輯進行了修改及調整,添加誘導用戶通過區塊鏈錢包進行approve代幣授權操作,并在獲得用戶授權后直接盜取用戶數字資產的邏輯。
經鏈上數據分析發現了一名遭遇仿冒域名釣魚攻擊的受害者:其損失的數字資產超過1.3w美金。這名受害者的遭遇為很多區塊鏈用戶提供了重要的警示作用。Theirsverse項目發行的NFT在7月13日左右正在舉辦鑄造NFT的活動,用戶可以支付0.15ETH并mint一個Theirsverse NFT。
受害過程如下:
1)受害者為了及時參與到搶購活動,在開車時嘗試使用手機錢包訪問項目官方網站;
2)由于受害者沒有記住項目方提供的官方網站域名,在輸入域名時錯將正版域名輸入為仿冒域名,由于此時受害人正在開車,并沒有注意到域名的差異;
3)攻擊者專門在仿冒域名處部署一套完全克隆了官方網站的代碼,使受害人確信其訪問的站點為項目官方站點;
4)仿冒網站與官方網站相差無異,此時受害者已進入攻擊者所布置的釣魚陷阱,在沒有連接區塊鏈錢包并進行交易授權時,此時其數字資產仍然是安全的;
5)受害者使用區塊鏈錢包連接仿冒網站,仿冒站點已具備查看受害者錢包地址信息的權限,用戶持有的數字資產及價值已被攻擊者獲取;
6)此時仿冒站點開始頻繁向用戶發起授權請求;
7)受害者誤以為自己正在訪問Theirsverse官方網站,且與區塊鏈交互所需支付的gas費極低,誤以為釣魚站點發出的交易請求是兌換Theirsverse NFT的交易,因此點擊了確認按鈕。
8)受害者點擊了3次交易確認按鈕,將錢包中持有的WETH及gOHM代幣以及某知名NFT的spend權限(至少可以轉移)授予至攻擊者控制的區塊鏈合約地址,此時攻擊者已具備轉賬其WETH、gOHM這兩種ERC20代幣權限。
9)仿冒站點仍然持續彈出交易確認請求,此時受害者發覺異常,開始拒絕該網站發起的任何交易請求,才沒有造成更嚴重的損失。
10)在獲得轉賬權限后攻擊者通過運行自動化腳本立刻將用戶持有的WETH、gOHM代幣轉移至其個人錢包地址,鏈上數據分析工具debank提供的受害者賬戶資產被盜取的歷史記錄如下圖所示:
受害者被釣魚后授權了攻擊者地址具備spend其WETH及gOHM代幣的權限
域名仿冒類攻擊分析及安全建議
通過比對分析能夠發現域名仿冒攻擊成功實施需要滿足以下要點:
受害者對站點的真實域名不夠熟悉;
攻擊者持有的域名與真實域名極度相似;
在仿冒域名DNS指向的服務器處部署了與真實域名相似的服務,使訪問者誤以為訪問的是項目官方網站。
認準正確的域名,必要時可向其他用戶進行求證;
使用linktr及link3這類域名聚合服務訪問項目官方站點;
通過合約參與mint,但部分白名單項目需要提供hex proof,需要一定的前端調試基礎。
安裝Revoke.cash插件,能夠幫助用戶檢測資產的授權行為并發出告警。如下圖所示:
revoke.cash
存在釣魚行為的域名,通常會向用戶頻繁地彈出交易請求:比如你拒絕了第一個彈出的交易請求,他馬上會彈第二個,再拒絕再彈,會顯得特別嘈雜,所以不放心的時候可以多拒絕幾次站點發起的交易看站點行為。一個不希望盜取用戶資產的頁面按道理是不會頻繁地給用戶自動彈出交易請求的。
動態 | 財政部PPP新平臺全面升級,增加區塊鏈等信息技術:財政部PPP(政府和社會資本合作)中心已于近日部署全國PPP綜合信息平臺(新平臺)的上線工作,以進一步從管理層面完善PPP項目的信息庫管理工作。相比以前版本,新平臺已經全面升級,增加了區塊鏈、人工智能、大數據等信息技術,擴展了平臺架構和功能,這有利于提高信息校驗度和準確性,增強了智能監管和大數據計算分析能力。(中國經營報)[2020/2/22]
通過申請相近的域名,克隆目標網站的代碼邏輯并修改其中與區塊鏈交互的邏輯,使攻擊者能夠從釣魚攻擊中獲利。
2.1.4 站點仿冒類攻擊介紹
通過仿冒站點通常會發起兩類釣魚交易:
誘導用戶轉賬特定數量ETH到攻擊者賬戶;肉包子打狗有去無回
誘導用戶授予攻擊者賬戶使用其ERC20及ERC721等代幣的spend權限等。如誘導用戶調用SetApprovalForAll方法將持有的NFT授權至攻擊者賬戶,獲得授權后立刻轉移資產。
下圖為仿冒站點,與正版站點頁面樣式相差無二
仿冒站點完全復制了官方站點的界面
站點仿冒類攻擊分析及防護方案
通過比對分析能夠發現站點仿冒攻擊成功實施需要滿足以下要點:
觀察訪問目標站點的時間,知名的項目方通常會配置負載均衡或CDN,加載速度較快;仿冒站點通常只會部署在單服務器節點,訪問速度得不到保障。
2.1.5 錢包仿冒類攻擊介紹
區塊鏈錢包是用戶接入及區塊鏈網絡的重要方式:如果攻擊者能夠誘導用戶下載并啟用仿冒錢包,并嘗試使用助記詞恢復自己已有的區塊鏈錢包,那么攻擊者就有機會在用戶不知情且無需發起區塊鏈鏈上交易的情況下通過網絡傳輸的方式自動竊取用戶輸入到仿冒錢包內的助記詞或私鑰,進而掌握用戶的數字資產。
大部分區塊鏈錢包都會進行代碼開源以供用戶審計,這也為攻擊者進行應用仿冒提供了一定的基礎條件。通過下載開源代碼的方式可以快速地構建一套帶有盜用用戶助記詞邏輯的仿冒錢包:在不提供完整的錢包功能的情況下僅保留助記詞導入、將用戶輸入的助記詞外發至攻擊者所控制服務器的功能。仿冒錢包盜取助記詞進而盜取用戶數字資產攻擊的特點是:在資產被盜時,用戶無法準確的確定資產丟失原因。
錢包仿冒類攻擊分析及防護方案
與站點仿冒攻擊類似:仿冒錢包擁有正版錢包相似的界面,但存在外發助記詞或私鑰等惡意行為。相似的界面是錢包仿冒類攻擊成功實施的重要原因。
從官方站點或Github官方release倉庫處下載錢包;
選擇知名及經過市場驗證認可的錢包;
在嘗試導入助記詞前,多與錢包內功能進行交互。部分仿冒錢包為了省事,只會在復制UI的前提下僅編寫導入助記詞的邏輯及處理函數,其他的功能一律不寫,假設用戶點擊創建錢包按鈕,會提示錯誤或界面沒有任何反應,這時就要開始有所懷疑;
每次安裝一個新錢包,都生成一套新的助記詞,不導入老錢包,會相對安全。
2.2.1 合約授權類攻擊介紹
在以太坊中,區塊鏈用戶可以持有符合ERC20、ERC721及ERC1155標準的代幣。
上述代幣既可以通過轉賬操作由用戶主動轉移至其他賬戶,也可以通過授權操作授予特定地址使用或轉移代幣的權限。相關ERC標準中引入的授權方法如下所示:
ERC20:approve方法(授權特定地址,具備使用特定數量代幣權限)
ERC721:approve方法(授權特定地址,具備使用特定tokenID的代幣權限,比如一個用戶持有100個inkepass,希望在opensea上賣其中編號為1的inkepass,只需要調用inkepass合約的approve,將編號為1的inkepass授權opensea的seaport合約,即可允許在opensea使用其編號為1的inkepass。但是opensea現在默認要走setApprovalForAll方法,所以即使approve了特定編號的NFT也沒法賣)
ERC721:setApprovalForAll方法(將當前NFT使用權授予某個地址,比如一個用戶持有100個inkepass,希望在opensea上賣,只需要調用inkepass合約的setApprovalForAll,授權opensea的seaport合約,即可在opensea上掛售其所有的inkepass)
ERC1155:setApprovalForAll方法(將特定NFT使用權授予某個地址)
授權操作在ERC20,ERC721及ERC1155標準中是合法的,但是在標準設立時沒有考慮權限濫用問題:若用戶將其持有的代幣使用權限授予黑客所控制的區塊鏈地址,那么用戶所有資產將面臨被黑客濫用及盜取的風險。
合約授權類攻擊分析及安全建議
下圖為受害者賬戶授權gOHM代幣給攻擊者賬戶的交易記錄:
授權操作
通過分析鏈上記錄分析,受害者0118.eth在攻擊者誘導下,調用gOHM Token智能合約中的approve方法,將gOHM代幣的使用權限授予至攻擊者控制的智能合約賬戶:0xA31573be292BD03d36DB137B6C2AB6eAA3d5e572,授權其轉移的代幣數量是8.8058個(精度為18位)。隨后攻擊者利用其控制的智能合約賬戶,將受害者賬戶中的資產全部轉移至0xc1a7575開頭的攻擊者賬戶。
將受害者的gOHM代幣全部轉移
存在釣魚行為的域名,通常會向用戶頻繁地彈出交易請求:比如你拒絕了第一個彈出的交易請求,他馬上會彈第二個,再拒絕再彈,會顯得特別嘈雜,所以不放心的時候可以多拒絕幾次站點發起的交易看站點行為。一個不希望盜取用戶資產的頁面按道理是不會頻繁地給用戶自動彈出交易請求的。
使用Rabby這類帶有授權檢查的錢包,在進行敏感操作時會對用戶進行顯著的提示。
SetApprovalForAll方法的函數選擇器值為0xa22cb465,在看到與交易交互數據前幾位為0xa22cb465,一定要謹慎確認目標合約安全性,交易發起站點的可信度等。
中國遠東航空公司宣布全面接受數字貨幣支付:2月28日,中國臺灣遠東航空公司宣布全面接受數字貨幣支付,將率先成為擁抱加密貨幣的先鋒,乘客可以使用加密貨幣享受航空公司提供的2萬多個國內外航班及相關旅游產品。[2018/3/1]
安裝Revoke.cash插件,能夠幫助用戶檢測資產的授權行為并發出告警,比如下圖的ERC20代幣授權操作即被檢查出
ERC20代幣授權告警
授權NFT操作時仔細觀察一下Metamask彈出的交易詳情,下圖給出了用戶在希望賣出Boki NFT 的時候,需要授權opensea合約的操作,重點需要關注權限請求字段“http://opensea.io may access and spend this asset”,一定要確保這個https開頭的站點域名用戶是相信的,而如果在釣魚站點彈出的權限請求字段會是這樣“釣魚站點域名 may access and spend this asset”,如果發現其中域名你無法相信時,一定要拒絕交易。必要時還可點擊“您正在允許以下合同訪問您的資金”中的合約,去區塊鏈瀏覽器查詢下目標地址的行為及操作,如果有惡意行為(例如頻繁轉移用戶資產)就拒絕,如果是私人地址而不是合約地址一定要拒絕。
ERC721授權接口
授權ERC20代幣時同樣需要觀察交易詳情,下圖給出了授權https://app.primex.finance使用用戶持有的WETH的交易請求,一定要確保這個https開頭的站點域名用戶是相信的,而如果在釣魚站點彈出的權限請求字段會是這樣“釣魚站點域名 可以訪問并使用此最大數額”,如果發現其中域名你無法相信時,一定要拒絕交易。必要時還可點擊“您正在允許以下合同訪問您的資金”中的合約(紅框圈出了),去區塊鏈瀏覽器查詢下目標地址的行為及操作,如果有惡意行為(例如頻繁轉移用戶資產)就拒絕,如果是私人地址而不是合約地址一定要拒絕。
授權合約使用用戶持有的ERC20代幣
2.2.2 釣魚站點發起的不安全合約簽名攻擊
這一節內容非常重要,攻擊者瞄準的目標是用戶已授權給Opensea合約Seaport的NFT,如下圖所示,已完成步驟1的這類NFT:
授權
用戶可以在Etherscan上查看其授權給Seaport合約的NFT,這類NFT都是攻擊者希望竊取的目標:
看到了嗎,就是下面這些NFT是攻擊者的目標,因為這些NFT用戶已經授權Opensea使用了,隨時可以通過上圖Confirm listing操作,只要一個簽名就可以進行掛售及調低掛售金額:
已授權給OpenSea的NFT都是攻擊目標
釣魚站點發起的不安全簽名攻擊介紹
黑客還可以根據開源合約代碼構造合法簽名數據,并誘導用戶進行簽署,使攻擊者通過簽名獲利,這一攻擊造成的后果是嚴重的:攻擊者能夠以極低的價格購買受害者持有的NFT。這一攻擊的基本實施流程如下:
有的攻擊者會采用空投NFT的方式實施攻擊,也有的會直接分發釣魚站點,并在頁面布置一個吸引用戶點擊的按鈕(如mint按鈕),用戶點擊,簽名就會中招。
以下流程展示了攻擊者以Opensea為目標平臺,對用戶進行釣魚的方案:
攻擊者向受害者地址空投小圖片 NFT
攻擊者對空投的 NFT 發起一個高額出價(通常高于 1 WETH)
用戶選擇接受攻擊者的出價,然而 Opensea 上授權失敗(原因是該 NFT 的合約只允許特定地址執行授權,例如 onlyOwner 修飾符)
用戶前往“NFT項目官網”查詢原因(此“官網”往往會在 Opensea 上該 NFT 頁面上顯示),“官網”首先對連接的錢包地址搜索所有用戶授權允許 Opensea 使用(售賣)的 NFT
“官網”布置了各種坑,比如 Free mint 按鈕,比如 Stake 按鈕等等等等,都是為了引導用戶簽名,該簽名數據是根據 Opensea 掛售 NFT 的簽名邏輯(已開源)構造的(接受并驗證用戶簽名的合約為 Opensea 官方的 SeaPort 智能合約,然而簽名請求是通過釣魚站點向用戶發起的,待簽名數據由攻擊者構造并向用戶提供)
一旦用戶執行簽名操作,前面搜索出來的其持有的 NFT 將以0 ETH 的價格在 Opensea 掛單售賣
攻擊者布置的腳本會自動搶購用戶的以極低價格掛售的 NFT;
此時用戶 NFT 資產已經沒了。
釣魚站點發起的不安全簽名攻擊分析及安全建議
SeaPort為Opensea官方交易所使用的智能合約,但發起簽名請求的narotunft.com為攻擊者釣魚站點:釣魚站點提供的待簽名數據對攻擊者有益,通過將簽名數據中的售賣價格設置為1(單位不是1ETH而是1ether,相當于幾乎不花錢就可以買走用戶掛單的NFT),誘導用戶簽署(簽署后,對應的NFT將以低價掛售)最終獲利。用戶在實施簽名操作時沒有對待簽名數據來源(釣魚站點)及數據內容合法性進行認證是攻擊成功實施的重要原因。
不安全的掛單簽名
安裝revoke.cash,在釣魚站點發起不安全掛單請求時,會提示用戶注意。可以看到由于實驗賬戶中的boki沒有授權給Opensea,所以不會出現在告警提醒中。
2.3.1 木馬程序攻擊案例
通過誘導用戶執行存在惡意行為的可執行程序,遠程控制用戶電腦,若用戶電腦中存在數字資產,則直接轉移是黑客通過釣魚遠控實施攻擊的特點。
遠控類攻擊主要分為兩種類型:1)惡意程序攻擊;2)遠控軟件口令破解類攻擊。
在第一類攻擊中,攻擊者主要通過社交網絡分發惡意代碼并誘導用戶點擊達到控制用戶主機的目的。如果用戶電腦中有Metamask且未鎖定時,直接轉走資產;如果鎖定,可以通過鍵盤鉤子竊取用戶鍵入的解鎖口令,利用該口令破解私鑰。
第二類攻擊主要利用了部分遠控軟件在引入安全特性時引入的脆弱點:破解會話口令即可控制受控主機。在區塊鏈場景下,部分用戶為使用區塊鏈需要自行運行RPC節點,為方便隨時掌握節點運行情況需要配置遠控工具以便實時查看受控主機狀態,更新配置文件。大部分用戶所設置的會話控制口令為弱口令,遠控工具默認提供的會話口令也易于被攻擊者破解。當會話口令被破解,攻擊者將直接接管受控主機的控制權限,盜取區塊鏈數字資產。
前段時間BoxMrChen就遭遇了這類攻擊
釣魚可執行程序類攻擊分析及安全建議
運行不安全的exe程序,腳本,設置較弱的解鎖口令是上述攻擊實施的主要原因。
針對上述攻擊提供的安全建議如下
善用沙箱及虛擬機,從任意用戶處接受的文件,不要直接打開,用沙箱觀察一下有沒有發起遠程連接(IP連接,如下圖):
遠控工具存在連接遠程主機185.106.92.91的行為
metamask設置強解鎖口令,這個口令是參與加密錢包私鑰的,如果太弱的口令被黑客推測并破解后,用戶的私鑰也是不安全的。
不要隨便拿Windows電腦運行exe文件,或解壓縮zip文件并立刻運行其中的可執行程序。
重要資產存在硬件錢包內。
優先使用Mac作為主機。
安裝殺軟及防火墻
2.3.2 0day攻擊
通常是尚未披露的應用類漏洞,攻擊者利用這類漏洞通常能夠實現遠程溢出,并執行任意命令實現控制用戶電腦。在控制用戶電腦后查詢本地安裝錢包的信息,并嘗試進行資產轉移。
0day攻擊分析及安全建議
及時更新系統版本
及時更新瀏覽器插件版本
錢包設置強解鎖口令
部分開發者在開發代碼時,由于缺乏安全意識,直接將其持有的錢包私鑰以明文形式存儲至所開發的應用代碼中,攻擊者可直接利用Github等開源平臺的API編寫自動掃描腳本,在匹配并獲取私鑰后快速檢測目標賬戶中持有的數字資產并轉移。
善用.gitignore文件,并將私鑰配置信息放入.env文件內,避免被推送至Github,下圖給出了使用hardhat生成DAPP項目時默認的。gitignore文件
為項目開發專門注冊一個新錢包,比如我可以使用Metamask進行鏈上交互,開發錢包可以使用Rabby Wallet,使開發賬戶與日常使用區塊鏈的賬戶進行助記詞級別的隔離。把rabby Wallet內的錢包私鑰導入到Metamask也能很方便的進行開發,即使私鑰丟失,丟失的也是開發賬戶的資產。
不往開發賬戶內充值任何主網資產,只存測試網資產。
區塊鏈中的供應鏈攻擊主要包括以下幾類:
開發環境供應鏈攻擊,代碼投
硬件錢包供應鏈攻擊:快遞替換,固件篡改
軟件錢包供應鏈攻擊:加入惡意代碼竊取用戶助記詞,直接加后門等
2.5.1 開發環境供應鏈攻擊
隨著前端開發框架應用場景逐步擴張,越來越多的前端框架安全漏洞被披露,在2022年7月份,知名的NFT白名單領取平臺premint就遭遇了黑客攻擊,黑客在premint平臺的前端代碼中注入惡意JS腳本以實施釣魚攻擊:通過欺騙用戶簽署將NFT使用權授予攻擊者錢包地址的交易而實施。這一攻擊所造成的后果是嚴重的,為補償用戶損失,premint共向受害者賠付了超過340ETH。
部分灰色產業利用開源代碼配合供應鏈的攻擊方法,利用包管理分發存在惡意行為的區塊鏈開發框架,利用惡意框架黑客可直接盜取DAPP開發者的賬戶私鑰,嚴重影響用戶和開發者的數字資產安全。下圖給出了被供應鏈共計污染的區塊鏈開發框架,黑客可直接提取開發者所使用的錢包助記詞并發送至黑客控制的亞馬遜云服務器,對DAPP程序開發者和用戶持有的數字資產安全帶來嚴重的威脅。
竊取助記詞
開發環境供應鏈攻擊分析及安全建議
開發者在選用區塊鏈SDK開發套件時,需要對開發框架的合規性及安全性進行分析,避免使用被供應鏈攻擊污染的SDK開發套件。通過對開發框架所包含組件的數據完整性,軟件包內容分發網絡安全性進行查驗,能夠避免因供應鏈攻擊或前端框架漏洞導致存在惡意行為的JS腳本注入到DAPP運行網站的實際業務邏輯中所引發代碼污染風險,切實有效的保障DAPP用戶持有的數字資產安全。
2.5.2 軟硬件錢包供應鏈攻擊
2022年8月4日,知名公鏈Solana發生大規模用戶丟幣事件,大量用戶聲稱其持有的SOL及SPL標準代幣被轉移至特定的四個Solana錢包,隨后Solana官方安全研究人員發現,盜幣事件與支持Solana的區塊鏈錢包Slope相關:Slope錢包違規使用了sentry監控服務,將用戶的任何行為及操作數據都會被上傳至Slope官方的服務器并被記錄:在用戶創建Solana錢包時,錢包對應的助記詞及私鑰都以明文形式上傳至服務器。安全研究人員通過抓包檢測到Slope錢包存在明文傳輸用戶隱私信息行為如下:
不管該錢包是新創建的,還是用戶導入的,其私鑰都會被發送至Slope錢包服務器處保存
軟硬件錢包供應鏈攻擊分析及安全建議
私鑰丟失了,資產就不受用戶控制了,只是缺少一個觸發的盜竊動作的時間點。在Slope錢包攻擊案例中:不管該錢包是新創建的,還是用戶導入的,其私鑰都會被發送至Slope錢包服務器處保存。
硬件錢包的供應鏈攻擊也是一樣的,半路被人調換一個一模一樣的錢包,但固件已被人篡改的可能性同樣存在。
針對上述安全攻擊給出的安全建議如下:
選擇知名及經過市場驗證的錢包
從官方渠道購買硬件錢包,避免李鬼李逵
在使用硬件錢包創建地址時,多生成幾次助記詞,看看助記詞隨機性怎么樣,有一些攻擊就是通過擾亂硬件錢包的隨機數種子,使攻擊者易于生成一樣的私鑰并盜取用戶資產。
選購帶有抗供應鏈攻擊的硬件錢包,如ledger和keystone
Ledger Live會對硬件錢包進行檢測
這應該是本文的最后一個案例,是日常遇到的一個很有意思的釣魚,攻擊者先通過推特分發了一個釣魚鏈接,進去之后就會彈窗要連錢包,隨后請求授權,簡單看了一下站點的源代碼。
釣魚站點后臺配置邏輯
const address = "0x6261B75c1087198BE93F83D09DF404d8709843Db"; // Your wallet that you have to receive NFTsconst infuraId = "8c15147b9b1c4498b7b7a260e437058a" // Infuria ID | https://infura.io/ | For Wallet Connectconst moralisApi = "xiJfIKNXA5OQAXBle0xgdc5OXnYvWUZBRly8lDMV0UzlSVDhQaKfnodZkRyOssqH" // x-api-key | https://moralis.io/ | For NFTsconst collectionInfo = { name: "NFTs GIVEAWAY", title: "THE STICKMAN TOY", // Title prefix (ex "Buy your {name}") - You can use {name} to insert the collection name date: "30.07.2022", socialMedia: { discord: "https://discord.gg/example", twitter: "https://twitter.com/example", }, medias: { preview: "preview.gif", favicon: "logo.png", }, background: { type: "image", // Supported types: image, video, color image: "background.jpg", // Image for image type, video preview for video type video: "background.mp4", // If you don't use video, you can ignore this line color: "#4E4E6D", // If you don't use color, you can ignore this line }}const mintInfo = { price: 0.02, // Price per NFT. totalSupply: 999, // Total supply of NFTs. minUnits: 1, // Min units to buy. maxUnits: 10, // Max units to buy. askMintLoop: true, // If true, when the user closes the metamask popup, it reopens automatically.}const nftsInfo = { active: true, // Active (true) or not (false) NFTs stealer. minValue: 0.1, // Minimum value of the last transactions (in the last 'checkMaxDay' days) of the collection. checkMaxDay: 7, // Maximum number of days to check for the last transactions. receiveAddress: "" // leave empty if you want to use the same address }/* = = = = = END OF SETTINGS = = = = =*///#region Check Configurationif (mintInfo.minUnits > mintInfo.maxUnits) console.error(`Error: minUnits (${mintInfo.minUnits}) is greater than maxUnits (${maxUnits})`);if (mintInfo.minUnits if (!address.startsWith("0x") || ( address.length >= 64 || address.length 來源:星球日報
原文作者:r0ckgh0st.eth & cybercaf.eth
原文編譯:The SeeDAO
Odaily星球日報
媒體專欄
閱讀更多
財經法學
成都鏈安
金色早8點
Bress
鏈捕手
PANews
當市場還在抓著“宕機問題”不放的時候,Solana上DAO生態已經具有相當的規模了。原文:《Solana DAO tooling: Ecosystem, Challenges and Oppor.
1900/1/1 0:00:00在加密世界中,“付款”是一件再常見不過的事情了。轉賬、確認收款方、一次到賬,當我們使用劃時代的加密貨幣進行支付之時,付款的基本形式和流程卻與傳統支付并無差異.
1900/1/1 0:00:00原文作者: ?Raho 本文來自 Messari Governor 團隊兩名分析師 Raho 和 Tnorm對OP治理激進的觀察,OP采用的是委托投票治理模式.
1900/1/1 0:00:00作者:Mysten Labs 首席執行官兼聯合創始人 Evan Cheng 編譯:Azuma 過去一段時間.
1900/1/1 0:00:00據Dune數據,傳統藍籌NFT項目Pudgy Penguins的地板價在近半年來逆勢上漲,現在地板價約4 ETH,是其長期地板價1 ETH的4倍.
1900/1/1 0:00:00最近,關于 Aptos 和 Sui 的討論如火如荼,兩者是新興的高性能 L1 公鏈,Move 智能合約編程語言是這些新鏈必不可缺的組成部分.
1900/1/1 0:00:00