宣布 sec3 Premium:Solana 智能合约的自动审计工具

  • Sec3dev
  • 发布于 2022-03-01 19:25
  • 阅读 19

本文介绍了 sec3 X-Ray Premium,这是一个针对 Solana 智能合约的自动审计服务,能够检测超过 50 种常见的安全漏洞。该服务支持 Anchor 和非 Anchor 基于的项目,能快速生成报告,并提供友好的 web 界面,旨在提高智能合约的安全性。文章详细列出了各种漏洞、使用指导,以及与完整审计服务的关系。

我们高兴地宣布 sec3 X-Ray Premium 的首次发布:由 sec3(前身为 Soteria)团队提供的自动审计服务,用于扫描 Solana 智能合约中的大量安全漏洞。

sec3 X-Ray Premium 具有以下多个特点:

  • 它可以检测 50+ 种常见安全漏洞,适用于用 Rust 编写的 Solana 程序,包括所有 Neodyme 的常见陷阱 和所有 不安全的 Anchor 用法在 sealevel-attacks 中。完整列表请见“Solana 漏洞与暴露(SVE)”部分。该列表正在扩展。
  • 它是 快速 的:即使对于像 Metaplex 这样的较大项目,通常也在 五分钟内 生成报告。
  • 它适用于 Anchor 和非 Anchor 的项目
  • 它提供 网页 UI 用于浏览报告的漏洞
  • 它是 7x24 可用

以下是 Sec3 Premium 的仪表板:

Solana 漏洞与暴露 (SVE)

自动审计程序目前检测以下特定于 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

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 审计的关系

我们预计 sec3 Premium 将在开发阶段使用,以便在任何代码更改时随时持续审计 Solana 程序。这将显著减少最终手动审计的时间和成本。

注意,自动审计服务与 sec3 团队提供的 完整手动审计 并不相同。sec3 的完整审计依赖于人类专家进行全面的人工审查(辅以内部的 X-Ray 工具)。

完整审计有望发现自动审计未涵盖的漏洞。


sec3 审计

Sec3 由区块链安全和软件验证领域的领先人才创立。

我们很高兴为 Solana 上高影响力的 Dapp 提供完整的审计服务。请访问 sec3.dev 或发送邮件至 contact@sec3.dev

  • 原文链接: sec3.dev/blog/announcing...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Sec3dev
Sec3dev
https://www.sec3.dev/