老牌公鏈 Solana 在經歷 FTX 交易所破產風波後,在 2023 年底迎來生態爆發、市值也水漲船高,但隨著巨大的財富效應,不少釣魚詐騙也開始興風作浪。下文總結目前 Solana 上常見的幾種釣魚攻擊類型,避免讀者掉入此類陷阱。本文源自 GoPlus Security 所著文章,由 BlockBeats 整理及撰稿。
(前情提要: 安全示警|Solana 授權釣魚事件解析 : 是授權轉移還是「直接偷⾛」?)
(背景補充: 燒垃圾 NFT 就能賺 SOL!Solana錢包Phantom推新功能打擊空投釣魚)
近期 Solana 的市值水漲船高,一度超越 BNB 排名全球前三,巨大的財富效應吸引了大量的活躍玩家,更吸引到了大量 Wallet Drainer(錢包釣魚)團伙從 EVM 的鏈轉入 Solana,針對 Solana 的釣魚網站、空投詐騙開始被大規模部署,且已造成大量使用者損失慘重。
近日,GoPlus 安全團隊分析了多筆 Solana 的釣魚事件,發現詐騙團伙利用 Solana 目前部分錢包的安全基礎設施不完善的情況,快速升級空投誘騙、實施社交帳號竊取,對此 GoPlus 總結如下常見的 Solana 釣魚攻擊手法,幫助使用者有效避免相關釣魚事件,減少資產損失。
延伸閱讀:深入理解Solana:帳戶、Token、交易資產和以太坊有什麼不同?
攻擊型別
在近期的幾起釣魚事件中,GoPlus 發現釣魚團伙大多是以「誘騙領取空投」、「假專案網站」、「免費抽獎」、「通過 NFT 空投引導進入」..等方式進行詐騙,這些方式和 EVM 常見的幾種釣魚引導方式幾乎一致,主要區別是騙子利用 Solana 與 EVM 的機制不同,從而以不同的「代幣或授權轉移」的方式進行釣魚活動。以下是幾種我們觀察到的不同的攻擊方式。
誘導轉移原生代幣 SOL
這種型別的攻擊方式是最簡單的,詐騙團隊在使用者連結完錢包後會在前端計算出當前所有 $SOL 的餘額,並且利用 SystemProgram.transfer 的功能直接完成代幣的轉移,以某個釣魚網站舉例,該網站顯示了一個 Swap 的介面 UI,使用者往往以為是以低價可以購買到某種代幣,但實際上執行的只是單純的 $SOL 的轉移。
誘導轉移多個代幣
除了盜取原生代幣 $SOL 之外,騙子可以在同一筆交易簽名中同時盜取所有當前錢包持有的 Token 資產。在 Solana 上的每一筆交易都可以由多個 Instruction 組成,每一個 instruction 可以完成一個單獨的邏輯,比如轉帳、程式的互動以及 Account 的建立等等。這就意味著,釣魚團伙完全有能力可以在同一筆交易中塞入多個操作指令,舉例來講,如果使用者持有三個不同的 Token,那麼釣魚網站只需要在程式碼中往同一筆交易中塞入三個 Token 的分別的轉帳指令即可。這樣一來就不需要單獨騙取某一個資產,而是可以利用這個特性完成一次性的錢包洗劫。
和第一種誘導一樣,駭客也是通過各種手段矇騙使用者點選按鈕進行交易,我們可以看到,該型別交易將會一次性轉走所有資產,不僅包含原生 $SOL 代幣,同時包括 NFT 型別資產,也包含代幣型別資產。這裡詐騙團隊主要利用了 Solana SPL Token 的 createTransferCheckedInstruction 完成對非原生資產的轉移 instruction 構造。
誘導代幣帳戶所有權轉移
另外,GoPlus 還發現了部分的釣魚網站採用了 createSetAuthorityInstruction 的操作將 instruction 打包進交易中,該操作的本質是將帳戶上代幣的所有權進行轉移,Solana 的帳戶模型和 EVM 有所不同,每一個帳戶地址對於每一個代幣,都會有一個專門的 Token Account 對應,Token Account 會有一個 owner,該 owner 就是當前的帳戶,Token Account 同時記錄了對應 Token 的餘額和相關資訊。
而 createSetAuthorityInstruction 操作可以直接將當前代幣的所有權轉給另外一個帳戶,實際最終的效果等同於將當前的代幣全部轉給了該帳戶。我們分別在 Phantom 和 Backpack 上進行了該操作實驗,慶幸的是,這兩個錢包都進行了特別的提醒和警告。即使使用者點選了 Ignore and proceed anyway 的選項,依舊可以通過交易模擬顯示出餘額的變化。
注意
以上三種類型的攻擊手段目前大部分的主流 Solana 都已經通過交易模擬能夠實現對於結果的預測,使用者能夠很清晰的看到點選後的餘額變化,因此只要使用者耐心仔細的檢視每一次的交易變化結果,就可以相對來說規避部分釣魚風險,這是因為 Solana 的官方 JSON RPC 的介面中就能夠提供「交易模擬」的能力。
但是,隨著釣魚詐騙技術的升級,我們也發現了一些非常不易察覺的釣魚手法。
騙取代幣授權
對於熟悉 EVM 的使用者而言,代幣授權是一個常見的操作,但在 Solana 上,這一操作有所不同。在 Solana 網路中,騙子會利用使用者對 EVM 授權機制的誤解來實施詐騙。釣魚網站通過誘導使用者進行看似正常的互動操作,實際上卻在背後通過 createApproveCheckedInstruction 執行了授權交易 Delegate。這種手法的關鍵在於,它不直接轉移資產,而是通過賦予攻擊者控制使用者資產的許可權。這類攻擊通常隱藏在誘人的互動介面後,如假裝進行投票、質押等,實際上卻在悄無聲息地更改帳戶的授權設定。
一旦攻擊者獲得了對使用者資產的控制權限,他們便可以隨時操縱這些資產,包括轉移或交易。這種型別的攻擊往往不易被及時發現,因為它並沒有立即產生資產轉移。這類的攻擊也往往影響面最廣,因為攻擊者會等到上當使用者足夠多、金額足夠大的時候才開始實施代幣轉移。使用者需要特別注意,任何請求更改授權設定的操作都應引起警惕,尤其是在不熟悉的網站或應用上。通過交易模擬能夠看到授權變化,因此不僅需要關注直接的代幣餘額變化,也要小心授權的變化導致的釣魚風險。
Durable Nonce 騙取交易簽名
Durable Nonce 是 Solana 區塊鏈中的一個功能,它允許建立一個特殊的帳戶來儲存一個持久的、不會過期的 nonce 值。在 Solana 中,每個交易都需要一個最近的區塊hash(recent blockhash)作為一部分,這用於確保交易的時效性和唯一性。通常,這個區塊hash會在大約 150 個區塊之後過期,使得交易無法被處理。Durable Nonce 機制通過提供一個不會過期的 nonce 值,允許建立可以在更長時間內有效的交易。
在釣魚詐騙中,騙子可能會濫用 Durable Nonce 機制,誘導使用者簽署看似正常但實際上包含惡意操作的交易。由於使用了 Durable Nonce,這些交易不會因為區塊hash過期而失效,給騙子更長的時間視窗來執行交易。例如,騙子可能會設計一個偽裝成合法操作的交易,如參與空投或活動,但實際上交易中包含了將使用者資產轉移給騙子的指令。使用者在不知情的情況下籤署了這樣的交易,但使用者會發現在區塊上根本沒有該交易的發生,因為攻擊者只是拿到了該交易的簽名,交易本身並沒有被髮送到區塊鏈上,他們可以在之後的時間裡隨時將交易廣播上鏈。
但是,無論交易是否發生,我們發現這種型別的簽名並不會影響交易模擬的結果判斷,幾個主流錢包依舊能夠將交易本身進行模擬和解析並且告知結果,因此我們之前對於交易模擬結果的判斷還是有效的方法論。
不過,我們依舊發現了一種極其隱蔽並且複雜的攻擊方法,能夠「瞞天過海」。
合約升級逃避交易模擬檢測
這個方法就是結合了 Durable Nonce 以及 Solana 合約特有的特性 —— 可升級,這種攻擊手段的潛在危險性因為可升級合約的特性被進一步的加大,Durable Nonce 機制通過建立一個持有長期有效 nonce 值的帳戶,允許交易在更長的時間視窗內保持有效。
這意味著即使使用者在簽署交易的時候不立即傳送到區塊鏈上,交易仍然可以在未來任何時候被廣播和執行。攻擊者可以利用這一點,首先讓使用者簽署一個看似正常的合約交易,這個交易在簽名時看起來完全無害,即使是主流的錢包和交易模擬工具也難以在簽名時提前警告使用者。
然而,在使用者簽署交易後,攻擊者成功拿到了 Durable Nonce 的簽名。此時,他們並不著急將交易廣播上鏈,而是利用 Solana 的合約升級功能,將原本正常的合約變更為一個惡意的版本。這種惡意合約能夠執行例如資產轉移等操作。在進行升級後,攻擊者再將簽好的交易發到區塊鏈上,來執行該惡意操作,達到自己的目的。這種型別的攻擊特別隱蔽,對使用者來說構成了極大的隱患,因為即使是經驗豐富的使用者在簽署交易時也可能無法識別出潛在的風險。為了防範這種攻擊,使用者需要對合約的信譽和歷史進行仔細審查,對任何不尋常的交易行為保持懷疑態度,避免與不明來源或新成立的合約進行互動。同時也希望所有 Solana 的錢包能夠注意該攻擊手段,及時的在錢包側能夠形成有效的提醒和對使用者資產的保護。
防範措施
在面對 Solana 網路中的釣魚攻擊時,以下是一些綜合性的防範措施,可以幫助最大限度地減少風險:
- 提高安全意識: 對於任何加密貨幣相關的交易,始終保持高度警惕。瞭解 Solana 釣魚攻擊的常見手段,如誘導轉移代幣、代幣帳戶所有權轉移、騙取交易簽名等。
- 仔細檢查交易細節: 在進行任何交易之前,認真檢查交易的具體內容。對於使用 Durable Nonce 或涉及合約互動的交易,應額外小心。
- 使用交易模擬功能: 利用錢包提供的交易模擬功能,仔細審閱交易模擬結果。但要注意,這不是萬無一失的保護措施,因為存在部分交易模擬失效的情況。
- 關注授權變化: 對於非交易後代幣餘額發生變化的操作,也要保持警惕。在不熟悉的網站或應用上,特別要小心授權變化的操作。
- 定期取消無用授權:通過 Solana Revoke 的工具,定期取消一些無用的授權,保障資產的安全。
- 定期更新知識: 定期更新自己關於區塊鏈和加密貨幣的知識,特別是關於新出現的釣魚手段和防範策略。
- 保持軟體更新: 使用的錢包和相關軟體應保持最新狀態,以確保擁有最新的安全特性和修復。
- 備份和保護私鑰: 保護好自己的私鑰和重要資訊,避免在不安全的地方儲存或分享。
同時,GoPlus 安全團隊呼籲 Solana 公鏈及其生態深度關切使用者安全,加快提升使用者安全的基礎設施建設,給使用者提供更安全的交易環境,從而實現生態的穩定和繁榮。
📍相關報導📍
小心!X充斥MetaMask假空投釣魚,社群罵爆:馬斯克放任詐騙肆虐