本文是 Liquity 分叉项目漏洞分析的第二部分,主要讨论了 Liquity 分叉项目中存在的潜在风险和漏洞,包括不正确的 Gas 补偿、大量抵押品导致的问题、最大债务上限、Zapper 机制引入的风险以及非标准 ERC20 代币的使用。同时强调了在分叉 Liquity v2 时,需要详细审查已知问题和风险。
Liquity 分叉中的漏洞,第二部分
这是我们关于 Liquity 分叉中漏洞文章的第二部分。你可以在此阅读第一部分。
让我们进一步讨论 Liquity 分叉中的漏洞和需要关注的领域。
Liquity V2 有一个 gas 补偿参数,用于在 trove 开启时由 trove 的所有者提交特定的 gas Native Token 数量。它用于补偿 trove 清算人的 gas 成本。这个 gas 成本参数应该根据要部署分叉的链来考虑。在更便宜的链上,预计会更少,而在更昂贵的链上,预计会有更大的值。
Liquity v2 中的所有分支几乎都是不相交且孤立的。但是有一个共同的操作会一次性利用所有活动分支。它是赎回操作。它迭代所有活动分支。使用大量的抵押品会使赎回操作的 gas 效率低下,并使核心Hook操作不稳定,因为机器人通过赎回来维持Hook。因此,必须使用逻辑数量的抵押品分支。
如果使用有风险的抵押品作为分支的底层抵押品。存在跨分支污染的风险,即在一个分支中稳定币的抵押不足铸造会有效地影响整个系统。因此,如果使用非常危险的抵押品或具有不可信预言机的抵押品,则最好在该特定分支上设置债务上限,以便只能从该分支发行有限数量的稳定币。
为了改善用户体验,Liquity V2 提供了“Zapper”合约,该合约抽象出了复杂的多步骤操作,例如通过单笔交易打开杠杆 trove。它们包括诸如闪电贷、交换等操作。
分叉极有可能通过创建自己的自定义 Zapper 来扩展这个概念,以支持新的抵押品类型或提供独特的、复杂的借贷策略。这些自定义 Zapper 不可避免地需要与外部 DEX 集成,以执行 token 交换作为其工作流程的一部分。这种集成创建了一个重要的外部依赖和一个新的攻击面。
Liquity V2 代码的设计仅适用于标准 ERC20。任何使用非标准 ERC20 的行为都可能在分叉中引入漏洞,这些非标准 ERC20 可能包括转移费用、重入等。因此,在分叉 Liquity v2 时,必须仅使用标准 ERC20 作为抵押品。
Liquity V2 文档包含一份非常全面的已知问题/风险列表。每当协议分叉代码时,必须结合分叉中实施的更改来详细审查这些问题/风险。
- 原文链接: x.com/vulsightsec/status...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!