Silo Finance 的一个新杠杆合约模块在测试阶段遭到攻击,由于过于宽泛的批准设置导致借款操控漏洞。该模块与核心Silo协议隔离,因此核心协议、金库、市场或用户资金未受影响。Certora 此前对该合约进行了安全审查,但未发现此漏洞,事后进行了风险评估和补救措施,并确认现有Silo代码是安全的。
Silo是一个无需许可、风险隔离的借贷协议,为所有token资产提供安全的货币市场。为了给用户提供一种便捷的方式来开设杠杆头寸,Silo构建了一个新的、隔离的杠杆合约模块。Certora在6月9日至6月13日期间对新的杠杆合约进行了人工安全审查。在此期间,我们根据提供的代码识别并标记了几个潜在的和具体的担忧。然而,被利用的漏洞并未在审查期间被识别出来。
6月25日,Silo 团队告知我们,在对新引入的杠杆模块(与核心Silo协议隔离)进行持续测试期间,发生了一起事件,其中过度宽泛的授权无意中启用了一个借款操纵漏洞。重要的是,这个模块完全与核心Silo合约分离——没有保险库、市场或用户资金受到影响或面临风险。
Silo团队要求我们确认,除了其他团队和形式化验证之外,我们还广泛审计过的其他Silo合约,不受此易受攻击的合约的影响。
详细的分步解释记录在Silo的以下章节中。
在立即进行分类和识别漏洞之后,我们进行了有针对性的风险评估,以确定Silo协议的其他用户资金或组件是否存在风险。
该分析使Certora和Silo团队确信该漏洞已得到完全控制,并且不会影响面向用户的组件或资金。
Certora犯的最大错误是没有使用我们的形式化验证工具Certora Prover,尽管我们已经对所有其他Silo合约(包括比杠杆更简单的合约)都使用了该工具。
此外,我们的人工安全审查没有向Silo团队提供有关用户控制的交易所代理风险的具体建议,仅提供了关于地址是否为有效silo的一般建议。
通常,我们的安全研究人员与我们的形式化验证专家合作来识别和预防问题。在这种情况下,即使在没有规范的情况下运行Certora Prover,也会发现有问题的代码可能受用户控制。如果没有确定调用任意合约的影响,就无法验证任何规则。如果安全研究人员和形式化验证研究人员在内部讨论过这个特定的外部调用,那么这个bug就会被发现。
我们正在与Silo团队就补救措施和修复计划进行持续沟通。我们正在对代码进行额外的安全审查,并对其进行形式化验证,以实现最高级别的安全保证,确保其达到我们对所有其他Silo合约的相同信任级别。除了杠杆之外,所有已部署的Silo合约都经过了安全审查和形式化验证。
我们犯了一个错误:隔离的杠杆合约包含一个过度宽泛的授权,允许攻击者操纵借款。由于缺乏对外部输入的验证,这导致了漏洞的可利用性,从而为漏洞利用创造了机会。
幸运的是,该问题已完全隔离,仅影响了新的杠杆模块。所有现有的Silo核心组件,包括市场、金库和用户资金,仍然完全安全且未受影响。通过立即暂停杠杆合约,可以有效地缓解该漏洞。
我们已经吸取了有关限制批准、列入外部调用白名单和加强验证的重要教训。我们还了解到,最有效的安全审查包括手动审查和形式化验证,因为这两种方法在识别细微的攻击向量方面是互补的。
Silo用户资金从未处于风险之中,因为新合约正处于测试阶段,并且资金来自Silo自己的账户,而不是用户的账户。
所有当前上线的Silo代码都是安全的。
- 原文链接: certora.com/blog/silo-in...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!