Cian 协议的收益层允许用户将资产存入 Vault 合约,通过多种策略赚取收益。该协议是跨链互操作的,在各种链上提供池,可以持有 Vault 代币的表示形式,可以在给定的链上兑换为存款代币。该审计报告发现了 26 个问题,从信息级别到中等严重性不等,并建议编写文档、创建全面的测试套件,并关注中间部门和计算期间的精确度。
Cian 协议的收益层允许用户将资产存入 Vault 合约,通过多种策略赚取收益。该协议是跨链互操作的,在各种链上提供池,可以持有 Vault token 的表示。这可以在给定的链上兑换为存款 token。
与客户确认审计范围,并将审计员加入到项目中。审查提供的文档,并将其与被审计的系统进行比较。
使用 Solidity 静态分析工具 Wake 以及 Solidity (Wake) 扩展进行深入检查,在流程早期标记潜在的漏洞以供进一步分析。
审计员逐行手动检查代码,识别漏洞和代码质量问题。主要的重点是识别潜在的边缘情况和项目特定的风险。
合约部署在本地 Wake 环境中,有针对性地尝试利用漏洞。评估合约对各种攻击向量的抵抗能力。
运行单元测试以验证预期的系统行为。如果发现任何覆盖差距,可以使用 Wake 框架编写额外的单元或模糊测试。目标是验证系统在真实条件下的稳定性,并确保针对预期和非预期输入的稳健性
我们首先使用静态分析工具(包括 Wake)进行审查。然后,我们深入研究了合约的逻辑。对于测试和模糊测试,我们使用了 Wake 测试框架。有关模糊测试的更多信息,请参阅完整审计报告中的相应部分。
在审查期间,我们特别关注:
审计是在 commit 54e953
上进行的,范围包括所有合约,不包括策略。修订版 1.1 是在 commit 06f333
上进行的,范围是第一次审查中发现的修复。
未发现严重程度为严重的问题。
未发现严重程度为高的问题。
M1:由于中间除法导致计算无效
M2:池状态变量的数据验证不足
M3:用户几乎无法控制其存入的资金
L1:双入口点初始化函数
L2:使用 transfer
而不是 call
L3:构造函数上缺少初始化器
L4:策略仓位限制计算不准确
W1:严格的余额相等性检查
W2:基于 ETH 的资产可能脱钩
W3:Vault 不符合 ERC4626 标准
W4:协议所有者可以为池设置任意兑换价格
W5:Ownable 合约的陷阱
W6:协议所有者可以人为地铸造 Vault 份额
W7:下溢可能导致 confirmWithdrawal
中的 DoS
W8:用户无法请求多次提款
W9:检索借款和供应上限的潜在问题
I1:一个函数可以声明为 view 函数
I2:缺少文档
I3:拼写错误和不正确的 NatSpec 注释
I4:内部函数名称中缺少下划线
I5:访问控制上的修饰符一致性
I6:未使用的变量
I7:未使用的 using-for 指令
I8:未使用的导入
I9:未使用的事件
I10:OFT 收据的未检查返回值
用户必须信任协议所有者诚实地行事。这是因为一旦他们将资金存入 Vault,如果未经外部确认,他们就无法提取资金,并且提取的金额也由确认提款请求的实体决定。提出了几个与信任模型相关的发现(参见 M3、W6、W4)。
我们的审查发现了 26 个发现,范围从信息性到中等严重程度。所有问题都已解决,并已修复、部分修复或通过注释解释原因。
该协议表现出中心化,使其正确运行高度依赖于协议所有者(参见 M3)。此外,我们发现算术和数据验证问题可能导致不正确的协议会计处理(参见 M1)。
Ackee Blockchain Security 建议 Cian:
Ackee Blockchain Security 的完整 Cian 审计报告,其中包括所有发现和建议的更详细描述,可以在 这里 找到。
我们很高兴能审计 Cian,并期待再次与他们合作。
- 原文链接: ackee.xyz/blog/cian-yiel...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!