本文介绍了 sec3 X-Ray Premium,这是一个针对 Solana 智能合约的自动审计服务,能够检测超过 50 种常见的安全漏洞。该服务支持 Anchor 和非 Anchor 基于的项目,能快速生成报告,并提供友好的 web 界面,旨在提高智能合约的安全性。文章详细列出了各种漏洞、使用指导,以及与完整审计服务的关系。
我们高兴地宣布 sec3 X-Ray Premium 的首次发布:由 sec3(前身为 Soteria)团队提供的自动审计服务,用于扫描 Solana 智能合约中的大量安全漏洞。
sec3 X-Ray Premium 具有以下多个特点:
以下是 Sec3 Premium 的仪表板:
自动审计程序目前检测以下特定于 Solana 的 SVE 列表(由 Sec3 团队汇总):
SVE | Checker | 描述 | 解释 |
---|---|---|---|
SVE1001 | MissingSignerCheck | 该账户缺少签名者检查 | 示例 |
SVE1002 | MissingOwnerCheck | 该账户缺少所有者检查 | 示例 |
SVE1003 | IntegerAddOverflow | 加法操作可能导致溢出 | 示例 |
SVE1004 | IntegerUnderflow | 减法操作可能导致下溢 | 示例 |
SVE1005 | IntegerMulOverflow | 乘法操作可能导致溢出 | 示例 |
SVE1006 | IntegerDivOverflow | 除法操作可能导致溢出 | 示例 |
SVE1007 | UnverifiedParsedAccount | 在解析其数据之前该账户未经过验证 | 示例 |
SVE1008 | DuplicateMutableAccount | 这两个账户都是可变的,可能是同一个账户 | 示例 |
SVE1009 | InsecureAccountClosing | 该账户未安全关闭 | 示例 |
SVE1010 | TypeFullCosplay | 这两个账户数据类型完全兼容,可能被用于发起类型混淆攻击 | 示例 |
SVE1011 | TypePartialCosplay | 这两个账户数据类型部分兼容,可能被类型混淆攻击利用 | 示例 |
SVE1012 | DivideByZero | 算术操作可能导致除零错误 | 示例 |
SVE1013 | AccountReInitialization | 该账户易受程序重新初始化攻击 | 示例 |
SVE1014 | BumpSeedNotValidated | 该账户的增益种子未经过验证,可能易受种子规范化攻击 | 示例 |
SVE1015 | InsecurePDASharing | 这些种子与 PDA 共享可能不安全 | 示例 |
SVE1016 | ArbitraryCPI | spl_token 账户可能任意 | 示例 |
SVE1017 | MaliciousSimulation | 该程序可能包含恶意模拟 | 示例 |
SVE1018 | UnsafeSysVarAPI | sysvar 指令 API 不安全且已弃用(wormhole攻击) | 示例 |
SVE1019 | UnvalidatedAccount | 该账户未正确验证,可能不可信 | 示例 |
SVE1020 | OutdatedDependency | 程序有过期和脆弱的依赖项 | 示例 |
SVE1021 | UnsafeRust | 程序包含不安全的 Rust 代码 | 示例 |
SVE1022 | OverPayment | 代码未检查以防止过度支付 | 示例 |
SVE1023 | StalePriceFeed | 代码可能使用过时的价格信息(solend损失) | 示例 |
SVE1024 | MissInitTokenMint | init 指令未能铸造池代币 | 示例 |
SVE1025 | MissRentExempt | 该账户缺少租金豁免检查 | 示例 |
SVE1026 | MissFreezeAuthority | 该账户缺少冻结授权检查 | 示例 |
SVE1027 | FlashLoanRisk | 该指令可能遭受闪电贷攻击 | 示例 |
SVE1028 | InconsistentRounding | 这里的算术操作具有不一致的舍入 | 示例 |
SVE1029 | CastTruncation | 此处的强制转换操作可能因截断而失去精度 | 示例 |
SVE2001 | IncorrectLogic | 循环中使用的是 break 而不是 continue(jet-v1攻击) | 示例 |
SVE2002 | IncorrectCalculation | 清算条件应为 > 而非 >= |
示例 |
SVE2003 | ExponentialCalculation | 该计算具有指数复杂度 | 示例 |
SVE3001 | BestSecurityPractice | 该代码未遵循最佳安全实践 | 示例 |
SVE3002 | RedundantCode | 该代码冗余或未使用 | 示例 |
SVE3003 | InconsistentAnchor | 该程序在不同指令中不一致地使用 Anchor | 示例 |
SVE3004 | InconsistentConfig | 配置和初始化数据不一致 | 示例 |
以上 SVE 列表将随着 Sec3 团队对更多 Solana 项目的审计而持续扩展。
sec3 Premium 目前对短期 Pilot(付费)客户开放。
每个试点客户将收到一个邀请链接。该链接提供唯一 ID 以访问 sec3 Premium 服务:
以下是使用该服务的步骤:
1. 点击“创建新任务”:
2. 输入“任务名称”并提供“源代码”(如果是开源的,可以通过 GitHub URL 提供,或上传压缩文件夹):
3. 点击“创建任务”,然后“确认付款并运行任务”:
4. 等待任务完成,然后“查看完整报告”:
典型项目的分析时间不超过两分钟
5. 最后,浏览报告的漏洞:
注意: 大多数 SVE 是语义或逻辑问题,因此报告的漏洞只是潜在警告,但不一定会被攻击者利用。
要忽略某些警告:添加注释 //#[x-ray(ignore)]
任何用此注释标记的语句将被忽略。例如:
//#[soteria(ignore)]
let system_program_info = next_account_info(account_info_iter)?;
对于 Anchor:
#[derive(Accounts)]
pub struct Withdraw<'info> {
//#[soteria(ignore)]
pub authority: AccountInfo<'info>,
我们预计 sec3 Premium 将在开发阶段使用,以便在任何代码更改时随时持续审计 Solana 程序。这将显著减少最终手动审计的时间和成本。
注意,自动审计服务与 sec3 团队提供的 完整手动审计 并不相同。sec3 的完整审计依赖于人类专家进行全面的人工审查(辅以内部的 X-Ray 工具)。
完整审计有望发现自动审计未涵盖的漏洞。
Sec3 由区块链安全和软件验证领域的领先人才创立。
我们很高兴为 Solana 上高影响力的 Dapp 提供完整的审计服务。请访问 sec3.dev 或发送邮件至 contact@sec3.dev
- 原文链接: sec3.dev/blog/announcing...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!