超越智能合约:深入探讨区块链基础设施安全审计

本文探讨了区块链基础设施安全的重要性,解释了它与智能合约安全的不同之处,并提供了一些针对区块链基础设施进行安全审计的实用方法。文章强调了基础设施审计需要关注的组件及其潜在风险,例如验证节点、数据可用性层、执行客户端和P2P网络,以及如何采用系统性的方法来识别和缓解这些风险,确保区块链网络的整体安全。

介绍

当我们谈论 Web3 安全时,智能合约漏洞往往占据主导地位。重入攻击、整数溢出和闪电贷攻击频频登上头条,往往导致数百万美元的损失。然而,智能合约只是区块链安全难题的一部分。在每个去中心化应用程序背后,都存在着一个庞大而复杂的基础设施——验证器节点、共识客户端、数据可用性层、执行客户端和 RPC 端点——所有这些都在保护和维护区块链网络方面发挥着至关重要的作用。

与在以太坊虚拟机或类似环境的约束下运行的智能合约不同,区块链基础设施直接与硬件、文件系统、网络层和加密库交互。这种根本区别带来了新的安全风险。区块链基础设施中的一个漏洞可能会削弱整个网络,导致停机、资金损失或链分叉,从而导致网络不稳定和缺乏共识。

这篇博文探讨了审计区块链基础设施与智能合约安全评估的不同之处。我们将介绍:

  • 区块链基础设施的关键组件及其安全风险。
  • 基础设施审计与智能合约审计的比较——包括异同点。
  • 审计员在评估分布式系统与智能合约时必须进行的思维转变

无论你是希望扩展到基础设施安全的智能合约审计员,还是负责保护关键网络组件的区块链开发人员,本指南都将帮助你了解区块链基础设施安全面临的独特挑战,以及为什么它与保护在其上运行的智能合约同样重要。

让我们开始吧。

理解区块链基础设施组件

区块链基础设施由多个相互依赖的组件组成,这些组件共同确保网络安全、数据完整性和协议效率。这些组件在区块链堆栈的不同层运行,每个组件都有独特的攻击媒介,安全审计员需要考虑这些媒介。

  • 验证器节点和共识客户端通过验证交易并就状态更新达成一致来确保网络完整性。但是,它们容易受到 slashing 风险、女巫攻击和密钥管理问题的影响,这些问题可能导致共识失败或网络中断。
  • 数据可用性层为 rollups 和轻客户端提供可靠的交易数据存储,但它们必须防范数据扣留攻击、欺诈性地包含无效交易和纠删码失败。
  • 执行客户端和 RPC 节点处理交易并将区块链数据暴露给 dApp,使其成为 DDoS 攻击、mempool 抢跑交易和不一致状态问题的目标。正确的身份验证和速率限制对于保护 RPC 端点至关重要。
  • SDK 和 API 允许开发人员与区块链网络交互,但它们会带来依赖项中毒、供应链攻击、不安全的反序列化和 API 滥用等风险。攻击者可以破坏第三方库、操纵智能合约交互或泄露敏感凭据。
  • 点对点 (P2P) 网络确保节点之间的通信,但它仍然容易受到日蚀攻击和垃圾邮件传播的影响,这些攻击可能会中断交易传播并分割网络。

鉴于这些基础设施组件的巨大安全足迹,解决这些风险需要强大的身份验证、加密证明、冗余机制和持续监控,以确保区块链网络能够抵御内部错误配置和外部威胁。

更广泛的攻击面

审计区块链基础设施与智能合约审计在攻击面、风险模型和安全方法方面存在根本不同。

智能合约安全侧重于自包含的、确定性的执行环境(例如,以太坊虚拟机、WASM),具有预定的入口点或调用路径(例如,公共或外部函数),而基础设施审计涉及联网的、多组件的系统,这些系统跨不同的层和不同的地域运行。基础设施的这种分布式复杂性成倍地增加了攻击面。

虽然智能合约中的安全风险围绕逻辑正确性、访问控制和经济漏洞展开,但基础设施安全方面的担忧范围更广,如果受到破坏或利用,往往会造成更灾难性的后果。例如,在 Golang 中,map 本质上是无序的,这意味着即使两个系统包含相同的 map 数据,元素的顺序也可能不同。因此,任何依赖 map 顺序的进程都将表现出不确定性。

区块链基础设施组件的安全性在很大程度上取决于它在整个架构中的适应程度。为了准确评估其攻击面,必须了解该组件如何与其他系统元素交互以及整个区块链生态系统如何作为一个整体运作。安全风险通常出现在集成点,因此系统范围的视角对于识别漏洞至关重要。

虽然区块链基础设施审计与智能合约审计存在显着差异,但仍然存在重叠的关注点,尤其是在检查业务逻辑、交易处理、帐户状态更新、舍入误差和精度问题时。此外,两个领域的一个常见风险是供应链攻击,其中 SDK 和节点软件中的恶意依赖项或受损的第三方库可能会引入后门,从而可能危及多个节点甚至整个区块链网络。这反映了智能合约开发中的风险,在智能合约开发中,集成受损的外部依赖项可能会导致已部署合约或 dApp 交互中出现漏洞。

RBAC(基于角色的访问控制)在区块链基础设施和智能合约安全中都发挥着至关重要的作用,它确保只有经过授权的实体才能执行敏感操作。与在智能合约中使用 RBAC 类似,在基础设施中,RBAC 控制验证器权限、RPC API 访问和执行客户端状态修改,以防止未经授权的操作,从而维护操作的完整性。智能合约和基础设施领域都面临权限提升风险,在这种风险中,缺乏适当的访问控制可能会允许攻击者接管合约或操纵节点行为。

这些风险强调了严格的依赖项审计、确定性构建和第三方代码验证对于维护基础设施安全的重要性。基础设施和智能合约审计都需要深入了解如何计算、存储和更新值,确保不一致和意外行为不会损害区块链生态系统的完整性。此外,审计底层基础设施可以更深入地了解智能合约如何与区块链交互,从而实现更彻底和高效的智能合约审计。

审计区块链基础设施的实用方法

作为一名审计员,由于代码库的庞大规模和可用于审查的有限时间,对区块链节点进行逐行代码审查是不可行的。鉴于这些限制,客户投资的最佳价值在于识别攻击模式和安全隐患,而不是执行详尽的逐行分析。这种有针对性的方法确保了更高效和有效的审计,重点关注最关键的风险。

对于建立在 OP-Geth 或 EigenDA 等现有框架之上的基础设施项目,与全面的代码审查相比,差异审计对客户来说更具成本效益。在这些情况下,最好的方法是在信任底层技术堆栈按预期运行的同时,对经过审计的系统有深刻的理解。

有时,基于工具的方法(如模糊测试和静态分析)是提升区块链基础设施审计的关键。模糊测试使用不同的输入探测各种系统组件,从而发现手动检查遗漏的错误。静态分析扫描代码中是否存在整数溢出和过时依赖项等漏洞。这些自动化方法提高了审计员有效查明关键缺陷的能力。

处理基础设施审计的最佳方法之一是考虑可能影响系统每个组件的攻击媒介,并尝试以黑客的心态来破坏代码。需要关注的一些关键领域是:

  • 阅读文档以充分了解系统的设计和预期功能。
  • 分析集成点——经过审计的组件如何与更广泛的区块链技术堆栈交互?
  • 评估系统是否存在可能导致网络分裂的任何不确定性行为。
  • 寻找 DoS 向量,例如过载处理单元、无界循环或网络垃圾邮件攻击。
  • 加强执行客户端以抵御内存损坏、RPC 端点暴露、恶意 P2P 有效负载和与 MEV 相关的漏洞。
  • 确保数据可用性机制能够有效抵御审查。
  • 检查依赖项的过时版本以缓解已知问题。
  • 评估区块生产效率、容量限制和费用动态以检测网络瓶颈。
  • 验证访问控制是否符合安全策略和设计决策,防止未经授权使用特权功能。
  • 识别特定于语言的漏洞,例如 Golang 中的整数溢出、Rust 中不安全的内存处理或多线程环境中的并发错误。
  • 通过评估系统的 Tokenomics 是否提供足够的攻击威慑来评估经济安全性。

通过关注这些关键领域,审计员可以最大限度地为客户创造价值,同时确保识别关键的安全漏洞并在基础设施中得到缓解。

结论

区块链安全不会止步于智能合约——区块链基础设施必须得到同样严格的保护

基础设施审计员需要分布式系统、密码学和网络方面的专业知识,这需要将思维方式从专注于 Solidity 的安全性转变为协议级别的弹性。

随着区块链领域的增长,对基础设施安全专家的需求也在增加。如果你是 web3 协议,现在是通过与 OpenZeppelin 的区块链基础设施安全专家交谈来扩展你的安全足迹的绝佳时机。以下是我们之前为节点和基础设施客户进行的一些审计:

  • 原文链接: blog.openzeppelin.com/be...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。