T

solana-vulnerability-scanner

作者 trailofbits

solana-vulnerability-scanner 是一個專注於 Solana 的安全稽核技能,適用於原生 Rust 與 Anchor 程式。它能協助檢查 CPI 邏輯、PDA 驗證、signer 與 ownership 檢查,以及 sysvar spoofing,在部署前找出六種 Solana 特有的重大漏洞。

Stars4.9k
收藏0
評論0
加入時間2026年4月30日
分類安全稽核
安裝指令
npx skills add trailofbits/skills --skill solana-vulnerability-scanner
編輯評分

這個技能獲得 86/100,因為它提供了一套可信、且具 Solana 特性的稽核流程,代理系統能以較低的猜測成本直接觸發。對目錄使用者來說,如果需要針對 Solana/Anchor 安全問題進行重點檢查,特別是 CPI、PDA 與帳戶驗證相關漏洞,這個技能相當值得安裝;不過它比較像是專門的掃描器,而不是涵蓋全面的資安框架。

86/100
亮點
  • 明確聚焦於 Solana/Anchor 稽核,使用情境也寫得很清楚,例如 CPI 檢視、PDA 驗證、signer/ownership 檢查,以及上線前的安全評估。
  • 操作指引相當完整:技能包含平台偵測線索、程式碼識別項,以及一份詳細的漏洞模式參考檔,並附有具體範例與修補方式。
  • 對代理系統來說觸發性強:frontmatter 與正文都明確說明何時使用、要檢查哪些模式,降低了相較於一般提示詞的模糊性。
注意事項
  • 沒有提供安裝指令、腳本或自動化工具,因此這比較像是重指引、輕執行的工作流程,而不是可直接執行的掃描器。
  • 此儲存庫看起來只聚焦於六種重大漏洞模式,因此超出這些範圍的 Solana 稽核需求,可能不會被完整涵蓋。
總覽

solana-vulnerability-scanner 技能概覽

solana-vulnerability-scanner 是一個專門用來審查 Solana 程式安全問題的稽核技能,特別擅長找出一般 Rust code review 很容易漏掉的漏洞。它最適合在部署前,由工程師、稽核人員與安全團隊檢查原生 Solana 或 Anchor 程式,尤其是程式裡有 CPI、PDA 邏輯、signer 檢查、account ownership 檢查或 instruction introspection 的情況。

solana-vulnerability-scanner 不是一個泛用的 smart contract linter;它的設計目標,是找出少數幾種高影響力、Solana 特有的錯誤,幫你判斷這個程式到底夠不夠安全可以上線,還是需要更深入的人工審查。

技能能抓到什麼

這個 repo 以六種關鍵漏洞模式為核心,包括 arbitrary CPI、PDA 驗證不當、缺少 signer 或 ownership 檢查,以及 sysvar spoofing。這讓 solana-vulnerability-scanner 在你真正想問的不是「這段程式能不能編譯」,而是「攻擊者能不能利用 Solana 的 account model 重新導向信任假設」時,特別有價值。

最適合的使用情境

在即將上線的程式、升級審查、protocol integration,以及任何帳戶被當作特定 program、authority 或 sysvar 來信任的 code path 上,最適合使用 solana-vulnerability-scanner 進行 Security Audit。若是一般商業邏輯審查,或非 Solana 的 Rust crate,它的幫助就相對有限。

它有什麼不同

solana-vulnerability-scanner 的價值,在於它的 Solana 專屬判斷邏輯。它會把你導向 account validation 與 CPI 的關鍵邊界,幫你專注在真正影響可利用性的地方,而不是把時間花在任何 Rust 專案都通用的建議上。

如何使用 solana-vulnerability-scanner 技能

安裝這個技能

使用以下指令安裝 solana-vulnerability-scanner:

npx skills add trailofbits/skills --skill solana-vulnerability-scanner

這個安裝路徑很重要,因為這個技能位於 trailofbits/skills repo 裡的 plugins/building-secure-contracts/skills/solana-vulnerability-scanner,所以你應該把它當成安全稽核工作流程來使用,而不是一般寫程式助理提示。

先給它正確的目標與範圍

solana-vulnerability-scanner 最好的用法,是先把稽核目標講清楚:repo 名稱、program entrypoint、框架類型,以及你在意的信任邊界。好的輸入像是:「請稽核這個 Anchor program 是否有 arbitrary CPI、PDA 推導錯誤,以及 initialize 和 withdraw 流程中缺少 signer 檢查。」

像「掃描這個 Solana app」這種模糊輸入,通常會漏掉真正重要的特定 accounts 和 instructions。

先讀對檔案

在安裝與審查 solana-vulnerability-scanner 時,先從 SKILL.md 開始,再檢查 resources/VULNERABILITY_PATTERNS.md。那個資源檔會提供這個技能建立時所依據的具體檢查項目與範例,比單看檔名猜測有用得多。

也建議快速掃過定義以下內容的 program 檔案:

  • 使用 invoke()invoke_signed() 的 CPI 呼叫
  • Anchor 中的 #[derive(Accounts)] structs
  • PDA derivation 與 seed 驗證
  • account ownership 與 signer 約束
  • sysvar 或 program account 檢查

實際工作流程

建議分兩輪使用這個技能。第一輪先請它找出可能的漏洞類別,以及受影響的 instructions。第二輪則針對每個被標出的路徑,要求它做 account-level 的細看,例如哪個 account 是使用者可控制的、預期的 program ID 是什麼,以及驗證是在 CPI 之前還是 state change 之前完成。

一個好的提示詞格式是:
“Review these Solana/Anchor instructions for the six critical vulnerabilities in solana-vulnerability-scanner. Focus on account validation, CPI targets, PDA seeds, and sysvar trust. Return findings by instruction, explain exploitability, and note false positives.”

solana-vulnerability-scanner 技能 FAQ

solana-vulnerability-scanner 只適用於 Anchor 嗎?

不是。這個技能同時涵蓋原生 Solana Rust programs 與基於 Anchor 的 programs。只是 Anchor code 通常會更明確地表達各種檢查,所以審查重點會轉向約束是否完整,以及 program 與 account types 是否都被正確限制。

這和一般 code review prompt 有什麼不同?

一般 prompt 可能會察覺到可疑邏輯,但 solana-vulnerability-scanner 是針對 Solana 的 account model,以及攻擊者如何濫用 CPI、PDA 處理和 account validation 所調校的。結果就是,它能更完整地覆蓋 Solana security audit 最重要的那些問題。

這對初學者友善嗎?

友善,只要你能先找出 program entrypoints 和主要 instruction accounts。初學者最有價值的用法,是把 solana-vulnerability-scanner 當作引導式清單來使用,然後針對每個被標記的 instruction 追問細節,而不是一開始就想一次審完整個 repo。

什麼情況下不該使用它?

不要把 solana-vulnerability-scanner 當成 tokenomics、商業邏輯或 governance design 的唯一審查工具。它最擅長的是 security-critical 的 Solana 模式,而不是更廣泛的 protocol correctness 或經濟模型。

如何改進 solana-vulnerability-scanner 技能

把要審的 instruction 路徑講到最精確

提升品質最大的方式,是直接點名 instruction、預期 authority 和 account 角色。不要只說「檢查我的 program」,而是說清楚你要看哪個 handler,以及哪些 accounts 應該是 trusted、可變動、需要 signer gate,或必須由特定 program 擁有。這能幫 solana-vulnerability-scanner 把真正的暴露面,和無害的周邊程式碼區分開來。

一開始就把信任假設講明白

如果某個 account 應該是 token program、system program、metadata program,或某個特定 PDA,請直接說明。如果某個 account 可以由使用者提供,也要一起講清楚。明確的信任假設會讓 solana-vulnerability-scanner 的輸出更精準,因為很多 Solana bug 本質上就是缺少驗證的 bug。

要求它說明可利用性,不只列出問題

要讓 solana-vulnerability-scanner 更有用,可以要求它說明攻擊路徑,以及讓每個問題可被利用的前提條件。這會逼它把「風格問題」和「安全漏洞」分開,這正是 Security Audit 工作流程真正需要的資訊。

用具體程式碼區段逐步迭代

如果第一輪已經標出某個 CPI 或 PDA pattern,就把審查重新聚焦到那個特定 function 和它的 Accounts struct。最好的結果,通常來自一次只縮小到一個 instruction,再問 account constraints、program IDs 與 seeds 是否完全符合預期的信任模型。

評分與評論

尚無評分
分享你的評論
登入後即可為這項技能評分並留言。
G
0/10000
最新評論
儲存中...