安全移动

AptosLabsandOtterSec
2023年5月22日 18:22
收藏
在 Aptos,我们遵循严格的强制代码审查和持续测试与集成流程,并结合 Rust 生态系统的最佳实践。

作者:Aptos Labs and OtterSec

 

Aptos Network 使用 Move 智能合约语言作为底层编程模型。虽然 Move 是为安全智能合约的生态系统而设计的,但 Move 本身的错误实施可能会危及这些属性。在 Aptos Labs,我们致力于与社区一起使 Move 尽可能安全。

我们都在投资于编写正确智能合约的工具(例如主要由 Aptos 开发的 Move Prover),以及 Move 虚拟机等运行时核心组件的正确性。在本文中,我们描述了我们如何与我们的合作伙伴一起通过审计、错误赏金、模糊测试和底层实现的安全强化来实现后者。

 

我们要保护什么?

 

Move 的安全性基于一些基本属性。这些属性是根据 Move 执行引擎使用的字节码定义的,并且独立于源语言:

  • 类型安全:每个值都有一个唯一且不可伪造的类型。例如,不可能获取类型为“address”的某些值并将其转换为类型为“signer”的安全相关令牌。
  • 模块化封装:存储中的资源只能通过声明这些资源的模块内的代码进行操作。只有具有匹配可见性的函数才能称为跨模块。
  • 所有权和生命周期:Move 的能力系统强制不复制、删除、存储或用作键,除非为值类型声明了相应的能力。
  • 引用安全:引用不会比它们指向的值长寿。可变引用是专有的,因此不可能使用别名。

Move 虚拟机的传统架构将上述属性的验证委托给(字节码)验证器,如下图所示:

image

以下是我们感兴趣的问题:字节码验证器是否完整,是否保证每个程序都满足上述所有属性?这很重要,因为违反上述任何属性都可能导致资产损失。给定的 Move 字节码程序会使执行引擎崩溃吗?因为在复制状态机中,所有节点都执行相同的程序,这可以用来停止网络。给定的程序是否会导致执行引擎耗尽资源(内存或时间)?这可以被用来进行 DoS 攻击,从而减慢或暂停网络。

 

我们是怎么做到的?

 

开发无错误代码的核心是严格的软件工程实践与正确的工具相结合。在 Aptos,我们遵循严格的强制代码审查和持续测试与集成流程,并结合 Rust 生态系统的最佳实践。除了这些传统方面之外,我们还采用以下措施来确保 Move 的安全性符合其设计要求。

 

审计和咨询

 

业内最受推崇的衡量区块链网络信心的措施之一是审计。在 Aptos Labs,我们与 Certik(报告)和 Halborn 签订了审计 Move 虚拟机的合同。发现了多个关键问题,其中之一属于类型安全类别。

除了外部审计外,Aptos Labs 还领导并组织了社区审计工作,重点是字节码验证器。来自 Mysten Labs、Starcoin 以及 MoveBit 和 OtterSec 等审计公司的工程师与 Aptos 工程师合作完成这项工作,投入了大约 6 人周的审计时间。此电子表格中捕获了此结果,参考了在此审计期间创建的数十个文档。在 Aptos 进入主网之前,这项审计工作发现并解决了多个问题。

最后但同样重要的是,我们与 OtterSec 有着密切的合作。 OtterSec 团队执行了手动代码审查并为各种目标开发了模糊测试技术,确定了 Move VM 和 Aptos 框架代码中的多个关键问题。他们还带头努力向 Move VM 添加冗余的纵深防御逻辑(见下文),影响我们正在进行的设计工作,以减轻进一步的资金损失漏洞。

 

Bug Bounty

 

Aptos Labs 运行一个漏洞赏金计划。对于可能导致资产损失的严重错误,提供高达 1,000,000 美元的赏金。同样,崩溃错误最高可获得 100,000 美元的奖励。

通过赏金计划,我们与一群才华横溢的安全研究人员密切合作,以查找和修复漏洞。其中一些错误属于严重类别,而其他错误是通过使用模糊器发现的崩溃。

Aptos Labs 履行了其在漏洞赏金方面的承诺,并支付了可观的赏金。此外,Aptos Labs 继续利用我们通过赏金计划遇到的白帽专家的专业知识,并打算继续与这个社区合作。

 

模糊测试

 

赏金计划促使我们自己投资 Aptos Labs 的模糊测试。 Move VM 代码已被修改以在相关点实现“Arbitrary”Rust 模糊测试特性,从而允许使用“cargo fuzz”来动态生成和验证字节码模块。我们有一些连续的工作在运行这些模糊测试目标。

 

冗余

 

实现额外安全保证的一种方法是通过冗余。我们向 Move VM 添加了一种所谓的偏执模式,它在执行时强制执行类型安全和上述其他规则。虽然字节码验证器在代码进入系统时已经检查了这些属性,但偏执狂模式会在字节码执行期间再次验证相同的检查。偏执模式在 Move 社区内得到了广泛讨论,Aptos 工程师领导了设计。有关更多信息,请参阅此 PR(最终版本)和此 PR(中间版本)。下一步是什么?

在 Aptos Labs,我们致力于使 Move 尽可能安全,并在该领域投入了大量资金。在这里,我们描述了我们和我们的合作伙伴围绕审计、漏洞赏金、模糊测试和强化所做的持续努力。展望未来,我们计划继续投资这个领域。我们将继续提供漏洞赏金计划,与信誉良好的安全审计师合作,并推动安全强化工具的开发,例如模糊测试技术。

链捕手ChainCatcher提醒,请广大读者理性看待区块链,切实提高风险意识,警惕各类虚拟代币发行与炒作, 站内所有内容仅系市场信息或相关方观点,不构成任何形式投资建议。如发现站内内容含敏感信息,可点击 “举报”,我们会及时处理。
ChainCatcher 与创新者共建Web3世界