Kamino Lend 模糊测试总结

  • Ackee
  • 发布于 1天前
  • 阅读 21

本文是关于Kamino Lend协议的模糊测试报告,由Ackee Blockchain Security执行。报告总结了多次模糊测试的结果,包括发现的警告和信息级别的问题,并建议Kamino团队进行调查和修复。测试范围包括Kamino Lending,不包括外部依赖。

Kamino Lend 是一个部署在 Solana 区块链上的去中心化借贷平台,使用户能够以灵活的条款和利率借出和借入资产。

Kamino 委托 Ackee Blockchain Security 执行模糊测试,重点关注 Kamino Lend 协议,总时间捐赠为 6 个 工程日,时间为 2025 年 1 月 20 日至 1 月 30 日期间。未执行手动 代码审查

然后,Kamino 委托 Ackee Blockchain Security 执行第二轮 Kamino Lend 协议的模糊测试,总时间捐赠为 15 个工程日,时间为 2025 年 6 月 23 日至 7 月 28 日期间。

修订版 2.1 审查了先前版本中 发现 的修复。

方法论

模糊测试遵循以下系统方法:

  1. 代码和架构分析
    1. Solana 程序 规范、Rust 源代码和指令处理程序进行高级审查,以了解程序的大小、范围和功能。
    2. 分析 Solana 程序入口点,以识别指令处理器、帐户验证逻辑和关键操作。
    3. 比较 Rust 实现和给定的规范,确保程序逻辑正确地实现了所有预期内容。
  2. 使用 Trident 进行模糊测试
    1. 接口分析
      1. 详细检查 Solana 指令处理程序及其帐户参数
      2. 识别程序派生地址 (PDA)、帐户所有权和跨程序调用模式
      3. 映射帐户状态转换和 Solana 运行时数据流
    2. 初始行为探索
      1. 编写简单的 Trident 模糊测试来观察 Solana 程序指令执行
      2. 了解帐户验证约束和 Solana 运行时限制
      3. 识别指令处理中意外的程序行为、panic 或极端情况
    3. 不变性定义
      1. 根据预期的 Solana 程序属性和帐户状态要求编写不变性
      2. 定义帐户所有权、余额约束和权限验证的安全关键条件
      3. 建立帐户状态一致性和程序派生地址完整性的断言
    4. 复杂的状态模糊测试
      1. 编写复杂的 Trident 模糊测试,模拟跨多个 Solana 指令的状态交互
      2. 测试事务序列及其对帐户状态和程序数据的影响
      3. 探索指令处理程序和跨程序调用之间的相互依赖性
    5. 扩展模糊测试活动
      1. 运行扩展的 Trident 模糊测试活动,以探索指令执行中的所有极端情况
      2. 允许模糊器探索深层帐户状态组合和程序执行路径
      3. 最大化 Rust 代码覆盖率和 Solana 指令处理程序路径探索
    6. 仪表板分析
      1. 在整个过程中持续分析 Trident 模糊测试仪表板
      2. 监控程序 panic、指令失败和 Rust 代码覆盖率指标
      3. 识别指示潜在 Solana 程序漏洞或运行时问题的模式
  3. 漏洞评估
    1. 根据严重性和对协议安全的影响对发现的 Solana 程序问题进行分类
    2. 为关键发现开发概念验证事务序列
    3. 根据 Trident 模糊测试结果提出 Rust 代码修复建议

范围

模糊测试是在 commit 829c1f3 上执行的,范围如下:

  • Kamino 借贷,不包括外部依赖项。

第二次模糊测试是在 commit fe1ad10 上执行的,具有扩展的覆盖范围,范围如下:

  • Kamino 借贷,不包括外部依赖项。

第三次模糊测试分别在给定的 commit 4c5843989a6a81542ffdb 上完成。先前版本中报告的发现已得到修复 - 在下面链接的完整 审计 报告中查找包括 Kamino 确认的完整详细信息。

发现

安全发现的分类由两个子评级确定:影响和可能性。这种二维评级使问题的严重性更加清晰,而不会丢失任何信息。可能性因素通常会降低中等问题的严重性,这些问题将被团队确认为信息和警告。

我们的审查产生了 8 个发现,其严重性为警告和信息:

严重程度

未发现严重程度的问题。

高严重性

未发现高严重性问题。

中等严重性

未发现中等严重性问题。

低严重性

未发现低严重性问题。

警告严重性

W1:WithdrawObligationCollateralV2 减法溢出

W2:RepayAndWithdrawAndRedeemV2 减法溢出

W3:未处理的 panic

W4:借款限额在验证借款金额时未包括费用

W5:清算指令由于 None 值上的 unwrap 导致 panic

W6:由于不可变的所有者,取款义务抵押品指令会恢复

W7:当存款值为零时,指令由于除以零而导致 panic

信息严重性

I1:未使用的代码

结论

Ackee Blockchain Security 建议 Kamino:

  • 调查发现的问题和严重性;
  • 阅读和审查完整的审计报告;并且
  • 解决所有已查明的问题。

Ackee Blockchain Security 的完整 Kamino Lend 模糊测试报告可以在此处找到。

我们很高兴审计 Kamino,并期待再次与他们合作。

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

0 条评论

请先 登录 后评论
Ackee
Ackee
Cybersecurity experts | We audit Ethereum and Solana | Creators of @WakeFramework , Solidity (Wake) & @TridentSolana | Educational partner of Solana Foundation