查看原文
其他

认真对待安全性:Trail of Bits 评估的两项顶级 ICP 功能

Dfifans Internet Computer 2023-12-01



DFINITY 基金会是互联网计算机区块链的主要贡献者,非常重视安全性,工程和产品安全团队不仅在功能发布之前在内部进行各种安全检查和审查,还开发并开源了安全工具、最佳实践和正式模型,因此开发人员可以执行自己的代码检查以检测错误和提高 dapp 的整体安全性。
此外,许多基于互联网计算机的主要技术功能都经过了由专门从事软件安全保证的领先组织(例如 Trail of Bits 和 NCC Group)进行的额外外部安全评估。
获得外部审查可以补充内部安全工作,并使工程和产品安全团队有机会从专家审查者根据其他区块链项目的知识和经验提供的不同观点中获益和学习。
解决问题后,DFINITY 会公开审核报告,以便社区能够独立了解某个功能的安全状况,此类报告向用户和开发人员表明,最大限度地减少构建和使用互联网计算机的安全风险至关重要。
最近, Trail of Bits 评估了两个主要的互联网计算机功能 - 去中心化比特币孪生链密钥比特币(ckBTC)和 DAO 框架服务神经系统(SNS)。
没有发现高严重性漏洞,并且这两个功能都获得了积极的评估,主要是低严重性问题和一致的积极的代码成熟度评估。
查看 ckBTC 和 SNS 的评估报告(2022 年评估、2023 年评估):
  • github.com/trailofbits/publications/blob/master/reviews/2022-09-dfinity-sns-securityreview.pdf

  • github.com/trailofbits/publications/blob/master/reviews/2023-06-dfinity-sns-securityreview.pdf


什么是 Trail of Bits?
Trail of Bits 总部位于纽约,自 2012 年起在全球开展业务,专注于将高端安全研究与现实世界的攻击者心态相结合,以降低风险并强化代码。
该组织为世界上一些最具针对性的组织提供技术安全评估和咨询服务,帮助保护支持数十亿最终用户的关键软件元素,包括 Kubernetes 和 Linux 内核。
Trail of Bits 还运营着一个区块链安全卓越中心,著名的项目包括对 Algorand、Bitcoin SV、Chainlink、Compound、Ethereum 2.0、MakerDAO、Matic、Uniswap、Web3 和 Zcash 的审计。


评估范围、工具和技术
Trail of Bits 被要求专门评估 SNS 和 ckBTC 功能的安全性,这两项功能均在去年发布,并受到开发人员和终端用户的关注,因此除了严格的内部检查之外,现在是启动外部安全评估的好时机。
对于 SNS DAO 功能,调查异步 SNS 容器智能合约交互是否容易受到由竞争条件引起的称为检查时间/使用时间(TOCTOU)的一类软件错误的影响至关重要,或者如果 SNS 代币交换功能容易受到双花攻击,检查基于票据的支付协议的正确性对于确保安全的用户体验也至关重要。
对于涉及持有、发送和接收比特币的 ckBTC,有必要启动检查来评估是否有可能双重支出资金或执行拒绝服务攻击,同样重要的是,确保 ckBTC 铸币者不会被欺骗签署无效交易或在不花费比特币的情况下销毁 ckBTC。
Trail of Bits 的安全研究人员总共进行了三项评估,采用手动代码安全审查结合自动化测试的方式,揭示每个功能各个方面的安全问题,并评估每个功能项目目标的可靠性。


审查 ckBTC 的安全性
链密钥比特币(ckBTC)是互联网计算机上的“比特币双胞胎”,由比特币(BTC)以 1:1 的比例支持,因此 1 ckBTC 始终可以兑换为 1 BTC,反之亦然。
它为与比特币挂钩的其他代币提供了更安全的替代方案,因为 ckBTC 不依赖任何第三方链桥来进行 BTC 和 ckBTC 之间的转换。
由于 ckBTC 代币可以在几秒钟内完成转移,并且与常规比特币交易相比,交易费用要低得多,因此对于可以受益于快速、可靠和廉价的比特币交易的应用程序来说,它是一个可行的解决方案。
由于 ckBTC 涉及转移比特币价值,因此评估该功能的潜在安全风险是 DFINITY 及其社区的首要任务,评估涵盖测试可能的风险,包括三个关键领域:资金双重支出、拒绝服务攻击和访问控制不足。
必须保证托管的比特币总量必须至少等于 ckBTC 代币的总供应量(由于交易费用,ckBTC 的总供应量较小),以维持 1:1 的挂钩,考虑到这一点,例如,在不提供相应 BTC 数量的情况下,防止双花资金铸造 ckBTC 至关重要,在不支付相应的 BTC 金额或支付超过燃烧金额的情况下,也不可能销毁 ckBTC。
由于 ckBTC 有潜力成为不断发展的比特币经济的关键推动者,因此它必须始终可用,因此,针对 ckBTC 功能的拒绝服务攻击如果成功,可能会产生可怕的后果,因此,Trail of Bit 的评估协议中添加了对此的安全检查以及访问控制不足或缺失。


ckBTC 中没有中度或高度严重性的发现
Trail of Bits 安全专家团队仔细扫描了 ckBTC 代码库,验证代码是否符合规范,并查找代码中的错误,例如访问控制配置错误、算术溢出或舍入错误,这些错误可能导致安全问题。
总体而言,结论非常积极,专家团队强调了该功能的出色代码质量(请参阅代码成熟度评估),没有发现严重性评级为“高”或“中”的发现,仅确定了两个“低”发现和三个“信息”发现。
从 Trail of Bits 的代码库成熟度评估来看,“身份验证/访问控制”和“测试和验证”被评为“强”,所有其他方面都被评为“满意”,除了一些不一致的错误记录之外,“信息”调查结果还揭示了一些与升级参数验证不充分的风险有关的小问题。
所有“信息”调查结果以及“代码质量建议”均得到 DFINITY 工程团队的充分关注,并在评估完成后得到解决,这两个低严重性的调查结果与了解您的交易(KYT)流程有关。
目前,它集中在单个 KYT 提供商上,并且 KYT API 密钥存储在容器内,这些发现已经被 DFINITY 和互联网计算机社区所识别,并且仍然是合理的担忧。
关于中心化问题的评级较低,因为 KYT 提供商不太可能故意提供错误信息,此外,如有必要,可以更换 KYT 提供程序,或者将来可以通过容器升级添加更多提供程序。
假设 API 密钥可以被部署 ckBTC 容器的子网的节点运营商读取,但这种风险很低,因为提取 API 密钥需要相当大的努力,这对攻击者来说没什么用处,而且很容易被替换,由于 DFINITY 同意低严重性评级,因此决定暂时接受这些风险。
总之,正如我们的修复说明所示,除了围绕 KYT 的两个低严重性发现之外,所有发现和代码质量建议均已得到解决。


对 SNS DAO 进行压力测试
服务神经系统(SNS)功能是一个去中心化自治组织(DAO)框架,从本质上讲,它是一种机制,允许将任何建立在互联网计算机上的 dapp 移交给 SNS - 一个将各个 dapp 的所有权和控制权交给社区以进一步开发和治理的 DAO。
每个 SNS 都包含一个基于权益的治理系统,用于协调决策和变更,以及一个为每个 SNS DAO 定义唯一代币的分类账,这个 SNS 框架有一个启动的既定程序:创建一个 SNS,通过去中心化交换将治理控制权分配给用户,通过收集初始资金来换取治理控制权,然后将 dapp 的控制权移交给新的用户。
由于存在资金质押,并且每个 SNS DAO 都由许多以异步方式交互的容器智能合约组成,因此评估该功能是否存在潜在安全风险是当务之急,出于保护终端用户的主要目标,有必要确保交换期间不会出现双重支出,并且不会丢失任何代币。
关于容器交互的异步性质,进行了安全检查,以确保不存在重新进入和检查时间/使用时间问题的风险,由于 SNS 生命周期有许多状态,因此确保只允许合法的状态转换并在容器之间保持一致同步非常重要,评估还包括访问控制和算术等标准检查。
两部分评论
审查的第一部分重点关注该项目的特定阶段,即 2022 年秋季测试启动之前,评估针对的是 SNS 框架的关键要素,从 SNS 交换容器到控制所有 SNS 容器的 SNS 根容器和 dapp 容器、SNS 账本、SNS 治理机制以及参与 SNS 启动和升级的 NNS(治理互联网计算机的 DAO),由于此功能的架构非常复杂,因此对每个组件进行安全检查非常重要。
2023 年初,该功能在主网上线,第一个社区项目成功成为 SNS DAO,其他项目也于今年上半年陆续展开,由于对 SNS 发布、技术优化和 SNS 交换容器新增功能(包括票务系统)的活动和兴趣增加,需要进行充值审核。
此后续审查再次针对 SNS 框架,进行另一轮检查,包括检查与异步容器交互相关的重入性和检查时间/使用时间问题,即 SNS 交换容器和 ICP 分类账之间的交互、SNS 账本和 SNS 治理容器。
该评估测试了双重支出漏洞以及 Swap 容器中新票证系统的正确性,并验证了容器之间的状态处理,以确保 SNS 治理机制完好无损,SNS 框架的所有主要接触点都经过彻底审查,从社区基金(现称为 Neuron 基金)到 ICRC-1 分类账,再到 SNS 分类账和 SNS Swap 容器。
调查结果和修复
总体而言,SNS 功能获得了积极的评价,值得注意的是对特权应用程序编程接口进行适当的访问控制、仔细的令牌算术和防御性容器交互,包括自动系统地筛选代码重入的时间逻辑操作(TLA +)模型错误。
两项审查均未发现严重问题,2022 年评估强调了 1 个中等严重性、2 个低严重性和 4 个信息性问题作为需要解决的问题。
特别是,中等严重性问题(TOB-DFSNS-1)涉及使用自定义 SNS 代币转移费用,导致 SNS 神经元的创建失败,问题修复后,Trail of Bits 团队进行了修复审查(详细信息请参阅报告中的附录 A),除两个信息性问题不构成对系统的威胁外,所有问题均已解决。
2023 年的第二次评估得出了一项中严重性、一项低严重性和两项信息性调查结果,中等严重性问题(TOB-DFSNSR-3)突出显示了一个错误报告,该错误可能会阻止用户参与交换。
自审核完成以来,所有问题均已得到解决(请参阅修复说明),该审查还包括一系列质量建议,例如简化代码以提高可读性,除一项建议外,所有建议均已得到考虑和应用。


认真对待安全
除了外部安全审查之外,DFINITY 的产品安全团队还系统地对新功能及其相关风险进行优先级排序,以进行内部安全审查,这些评审是软件开发生命周期的一部分,甚至在开发开始之前就包含了设计评审。
在开发过程中,在功能上线之前需要进行增量实施安全审查,这些通常包括手动代码审查以及静态和动态安全测试的组合,其结果详细记录在内部报告中。
然后,工程团队按照有关如何处理这些安全错误的内部协议,掌握在各自组件中发现的安全错误。


赋能生态系统
DFINITY 的产品安全团队还评估容器的安全性,包括服务于网络的 dapp,在这些审查中,评估了几类现实世界的安全漏洞,包括重入、TOCTOU、缺乏去中心化、DoS、身份验证和加密错误,从这些评论中获得的经验教训也可以使 IC 社区受益。
认真对待互联网计算机的安全意味着为生态系统提供工具和技巧,以创建安全、强大的 dapp,为了将内部审查的经验教训传递给社区,发布了安全最佳实践指南,以帮助生态系统在开发生命周期的早期避免错误:
  • internetcomputer.org/docs/current/developer-docs/security/

最近,DFINITY 还开源了其 TLA + 模型,并提供分步教程,以帮助开发人员为其容器创建类似的模型,这些形式模型是内部开发的,以确保功能设计的正确性,它们已应用于主要互联网计算机功能中的容器交互,包括 SNS 和 ckBTC,以及部分底层协议栈。
最后,互联网计算机的安全性和稳健性是协作努力的结果,鼓励社区通过错误赏金计划报告与区块链核心组件相关的任何潜在安全错误,此外,论坛上也非常欢迎有关安全最佳实践的讨论和意见,通过内部和外部措施的到位,创建最安全、防篡改区块链的机会就会增加。
这一点至关重要,尤其是在 Web3 攻击仍在不断增加的世界中,根据《2022 年全球 Web3 安全和反洗钱报告》,2022 年 Web3 攻击造成的总损失接近 36 亿美元,比 2021 年增加了 47.4%。
查看所有 DFINITY 安全报告:
  • wiki.internetcomputer.org/wiki/Third-party_security_audits

在论坛上询问有关安全评估的问题:
  • forum.dfinity.org/t/ckbtc-and-service-nervous-system-sns-third-party-security-assessments-by-trail-of-bits/24380

了解有关互联网计算机的更多信息:


来源:DFINITY翻译:Catherine

-              -


宣布推出“从零到 Dapp 教育系列” - 在互联网计算机上学习和构建!

黑客马拉松获奖者将顶级 ICP 功能付诸实践

Vertu 奢侈手机品牌与 IC1101 Space 元宇宙平台携手打造全新 Metavertu 全球发布会





你关心的 IC 内容

技术进展 | 项目信息 | 全球活动



长按关注 IC 微信公众号

掌握最新资讯


*添加小助手微信 comiocn 进交流社群


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存