一文了解針對 Solana 生態用戶的攻擊手法
封面:Solana
Solana 作為一條高性能且可擴展的區塊鏈協定,從去年起,其生態一直處於快速發展的狀態。 Lido 和 Jito 等流動性質押專案和各種 Meme 熱潮讓 Solana 的 TVL 和交易量增長迅猛,而 Solana 的 PayFi、DePIN 專案則讓用戶和投資者看到了區塊鏈與現實世界結合的巨大潛力。
目前,越來越多的用戶進入到 Solana 的生態。 在此趨勢下,很多駭客早已伺機而動,利用 Solana 的特性,實施欺詐行為,並且新型的攻擊手法層出不窮。 作為 Solana 生態的安全合作夥伴,Beosin 此前已為 Sonic SVM、Space Runners 等多個專案提供安全服務。 針對此類安全風險,Beosin 整理並解析了針對 Solana 生態的攻擊手法,用戶可從中瞭解並採取對應的預防措施,説明大家更加安全地交互 Solana 生態專案。
Solana 帳戶與交易模型
在了解針對 Solana 生態的攻擊手法之前,使用者首先需要對 Solana 的帳戶與交易機制有一個基本的瞭解。
Solana 帳戶
在 Solana 的設計中,所有的資訊都存儲在帳戶(Account)物件中,而帳戶類型分為三類:
1. 資料帳戶,用於儲存數據。 資料帳戶又分為系統所有帳戶和程式派生帳戶(Program Derived Address)
2. 程式帳戶,用於存儲可執行程式,即使用者/Solana 官方開發並部署的智能合約。 值得注意的是,Solana 的智慧合約是可以被更新/銷毀的。
3. 原生帳戶,指 Solana 上的原生程式,它們是由節點在部署時生成的智慧合約,普通使用者無法更新/銷毀,但和其它智慧合約一樣,可以被合約/RPC 調用。
注:Solana 的程式(Program)本質上和其它區塊鏈的智能合約(Contract)類似,下文的程式等同於智能合約。
而普通使用者通過錢包生成的帳戶屬於數據帳戶中的系統所有帳戶,可以理解為使用者通過系統程式生成了一個系統所有帳戶,這個帳戶存儲了地址資訊和加密資產等數據。
Solana 交易
首先,使用者需要瞭解一個概念:指令(instruction),指令定義了 Solana 交易中的操作,例如程式交互、代幣轉帳等。 Solana 上的一筆交易可以包含多個指令,這表示使用者在 Solana 鏈上進行交互時,可以在同一筆交易中執行多個不同的操作,例如使用者可以將多筆轉帳指令打包到同一個交易中(batch transfer),這些指令將按順序執行。
用戶可以在 Solana 的區塊鏈瀏覽器中,選擇一筆特定的交易,然後在 Instruction Details 裡查看該交易包含的指令,從而獲得相關指令調用的程式,以及涉及到的轉帳雙方的地址等資訊。 以 Solscan 的某一筆交易為例:
該筆交易調用了系統程式和代幣程式的 burn 函數,將一定數量的 $PONK 代幣銷毀。
針對 Solana 生態的攻擊手法
隨著 Solana 的熱度上漲,釣魚攻擊與 Rug Pull 在其生態中也日漸猖獗。 根據 Scam Sniffer 的報告,今年 9 月,大約 1 萬名使用者因釣魚攻擊而造成了總共超過 4600 萬美元的損失,使用者需要格外對釣魚攻擊提高警惕。 以下是 Solana 生態主要存在的造成使用者損失的攻擊手法:
1. 空投詐騙
釣魚攻擊者在社交媒體上發佈偽裝成空投活動的釣魚網站連結,或是向使用者的錢包位址轉入 NFT,誘騙使用者訪問釣魚網站並簽署交易,導致使用者的資產被盜。
由於 Solana 允許將多筆轉帳打包成一個交易,因此使用者只需一次簽名即可將錢包中的所有資產一次性轉移到釣魚者的位址中,造成巨大的損失。 在使用錢包簽署交易時,用戶必須謹慎確認每一次簽名的結果,以免遭受損失。
2. 類比交易的失效
由於 Phantom 等錢包提供類比交易,用戶可通過觀察錢包的類比交易結果來避免釣魚。 但類比交易的結果並不是實際的交易結果,釣魚攻擊者可以合併交易、惡意瀏覽器外掛程式等方式偽造錢包的類比交易結果,誘導使用者簽署惡意交易。
今年 8 月,有 Solana 的使用者下載一個名為「Bull Checker」的瀏覽器外掛程式,其許可權為可讀取和改變你訪問的所有網站的所有數據,導致了使用者的 Solana 資產被盜。 具體原因如下:
當錢包類比用戶發起的交易時,由於攻擊者位址的 SOL 餘額為 0,不會執行惡意轉帳的操作,可以順利通過類比交易的檢查。 在實際交易時,Bull Checker 這個外掛程式會將 Wallet Adaptor 的 signTransaction()替換為它的惡意實現,將未簽名的交易發送到攻擊者的伺服器,附上一個釣魚程式的調用。 交易中用戶會發送小額的 SOL 到攻擊者地址,從而觸發惡意的轉帳。
如果一個瀏覽器外掛程式同時具有「讀取」和「更改」等廣泛的許可權,請確認該外掛程式是否需要這些許可權。 比如 Bull Checker 的功能實際上只需要讀取數據即可。 使用者也應格外注意類比交易的結果並不能代表實際交易的結果,釣魚者有多種手段去修改/阻止顯示類比交易的結果。
3. 許可權轉移
這種釣魚手法與乙太坊生態的手法類似,釣魚者通過誘導使用者簽署交易,轉移代幣帳戶的擁有權。 使用者在簽署交易時,儘管許多錢包會發出警告,但許多使用者仍然可能被誘導。
Solana 生態的每一個代幣,都有一個單獨的帳戶(Token Account),每個代幣帳戶中會有一個擁有者(Owner)的屬性。
在預設情況下代幣帳戶的所有者會被指定為當前持有代幣的位址,但這是可以通過調用 createSetAuthorityInstruction()進行修改的。 當使用者被誤導調用了該函數,其錢包某個代幣帳戶的擁有權會被轉移到駭客位址,隨後駭客可將使用者的代幣轉移走。
4. 位址投毒
釣魚者通過偽造與使用者常用位址相似的釣魚位址,使得使用者將資產誤轉到釣魚者偽造的位址。 這種手法此前在乙太坊和 Tron 鏈較為常見,近期也開始在 Solana 上大量出現。
5. 代幣拓展
今年 9 月,有部分 Solana 用戶發現自己在進行代幣兌換/轉賬之後,代幣被銷毀了。 Beosin 研究發現,代幣被銷毀的原因是該代幣程式有一個名為 Permanent Delegate 拓展功能。
Permanent Delegate 是 Solana 官方對代幣功能的擴展,管理員在任何時候都有權轉移或銷毀代幣。 其目的是為了適用於特殊的應用場景,例如代幣回收、穩定幣的監管。 在創建代幣時,建立者需要利用 createInitializePermanentDelegateInstruction 指令來初始化 permanentDelegate。
由於 Permanent Delegate 的許可權過大,一些駭客利用該拓展功能發行代幣,吸引使用者購買其代幣後,通過銷毀或轉移獲益。
除了 Permanent Delegate 這個拓展功能外,攻擊者還可能利用Transfer hooks、Transfer fees 等拓展功能對使用者造成資產損失。
總結
通過以上介紹,我們希望大家能夠對 Solana 的帳戶、交易和攻擊手法有更全面深入的瞭解。 從選擇安全性更高的錢包和外掛程式、提高自身反詐騙意識,到瞭解新型的攻擊手法,這些預防措施能夠在很大程度上降低風險,確保使用者的資產安全。 Beosin 也將會在之後為大家帶來更多騙局分析與安全指南。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。