用途
Solana Security Standard 是一套针对 Solana 程序的安全规则标准,编号为 SOL-0XX,共 37 条规则。这些规则从超过 5.14 亿美元的真实 Solana 漏洞利用案例中提炼而来,用于在编码过程中扫描、检测和预防 Solana 程序漏洞。它能够捕获调用方控制的时钟值、跨市场状态不对称、缺失的 Anchor 约束、包装器/引擎逻辑漂移等 37 类缺陷,并可在 AI 工具、编辑器、CLI 和 CI 中实时触发。
主要能力
该标准覆盖链上关键规则与集成方/客户端规则。链上关键规则包括:SOL-001 未认证的 now_slot/时钟欺骗(已有 2 次确认的赏金获胜案例)、SOL-002 跨市场状态不对称、SOL-003 包装器重新实现引擎逻辑、SOL-004 缺失签名者检查、SOL-005 缺失所有者检查、SOL-006 账户数据类型混淆、SOL-007 未初始化账户、SOL-008 算术溢出/下溢、SOL-009 PDA 派生不匹配、SOL-010 缺失租金豁免等。集成方/客户端规则包括:SOL-029 客户端算术溢出(TypeScript/JS)、SOL-030 缺失交易模拟、SOL-031 客户端硬编码程序 ID 等。每条规则都关联到真实已披露的漏洞利用案例,例如 SOL-001 关联 Wormhole(3.25 亿美元)与 percolator 赏金,SOL-008 关联 Mango Markets(1.14 亿美元),SOL-010 关联 Cashio(5200 万美元),SOL-017 关联 Crema Finance(880 万美元)。
使用方式
该标准支持多种集成方式:
- Claude Code:可通过 curl 下载 plugin-guidance.md 与 security-patterns.yaml 到 .claude 目录,然后安装 security-guidance 插件;或通过插件市场添加并安装完整的 MCP 驱动插件。
- CLI:使用
npx @jelleo/solana-security-standard scan ./programs即可扫描,无需安装,零依赖。支持扫描目录或指定文件,支持 JSON 与 SARIF 输出格式,支持--min-tier按严重级别过滤,支持--baseline基线模式仅对新增发现进行拦截。CLI 在发现问题时以非零状态退出,可用于 CI 门禁。 - GitHub Action:在
.github/workflows/solana-security.yml中配置,支持 paths、fail-on-findings、upload-sarif、min-tier、baseline 等选项,需要security-events: write权限。 - VS Code / Cursor / Windsurf:从 Open VSX 安装扩展,或在 VS Code 中侧载 .vsix,可在 Rust 和 TypeScript/JS 文件中输入时显示内联警告。
- MCP:在 MCP 设置中添加
npx -y @jelleo/solana-security-mcp,暴露 scan_solana_code 工具与 list_solana_security_rules 资源。 - AI 代理:为 Codex/AGENTS.md、GitHub Copilot、Cursor、Windsurf、Cline、Aider 等工具复制对应的规则文件到仓库。
- Semgrep:通过
semgrep --config指向远程规则文件进行扫描。
适用场景
适用于 Solana 程序开发过程中的安全审查,包括本地开发时的实时检测、提交前钩子检查、CI 流水线门禁、多仓库 monorepo 扫描,以及通过 MCP 让 AI 代理自动扫描代码或查询规则。基线工作流可用于仅对回归问题进行拦截。
限制
CLI 不支持按单条规则过滤,但可通过 JSON 输出配合 jq 进行筛选。基线模式仅拦截新增发现,不会抑制已知发现。对于误报,可通过注释或使用 Anchor 的 Signer/UncheckedAccount 来抑制。GitHub Action 需要确保 security-events: write 权限以避免 SARIF 错误。