智能合约安全:敏捷的 SDLC 方法 PlatoBlockchain 数据智能。垂直搜索。人工智能。

智能合约安全:一种敏捷的 SDLC 方法 

阅读时间: 10 分钟

区块链被引用为去中心化和防篡改的分类帐。 但是这个防篡改的账本很容易受到黑客攻击。 去中心化是区块链最强大的优势之一,也是劣势之一。 

好吧,那很好,但是 SDLC 呢? 

我们即将讨论的软件生命周期方法是基于将智能合约中的安全漏洞分为多个阶段。 

在第一节中,我们列出了智能合约中的安全问题。 在下一节中,我们将讨论其解决方案,分为四个阶段; 安全设计,安全实施,部署前测试,最后一个,监控和分析。 

智能合约安全问题分析 

智能合约容易受到各种黑客攻击。 这些与现实世界法律协议同义的合约根据本地区块链的条款独立运行。 

但是你有没有想过,即使是那些原生区块链也可以对智能合约中的潜在安全威胁负责? 下面,我们介绍区块链的一些特性:

权力下放: 它被认为是基于区块链的协议的优势之一。 但攻击者设计了一种方法,将这种积极特征转变为消极特征。 

恶意行为者可以创建虚假身份来开发和部署智能合约。 有时,很难识别易受攻击的合约,因为公共区块链上只有公共地址(或)公钥可用。 

开源代码:这可能会让您感到惊讶,但是是的,一般来说,大多数智能合约代码都是开源的。 

比如说,在以太坊虚拟机 (EVM) 的情况下,它的字节码始终是公开的。 一些 Solidity 反编译器可以帮助你获得智能合约地址和 Solidity 代码。 源代码的公开使攻击者具有此功能优势。 

未发展的区块链平台:对于开发者来说,熟悉开发平台是首要要求。 有许多未开发或新的区块链平台,因此开发人员无法深入了解区块链上的操作。 

由于缺乏同步,这种不一致会影响智能合约。 区块链平台的缺陷由于其不断发展而未被注意到。 

未知交易:第一点,我们讨论了匿名身份; 同样,区块链上的交易也未公开。 无法追踪交易,导致许多非法活动。 由于涉及金融交易,任何安全问题都可能导致巨大的经济损失。 

智能合约安全解决方案

现在,在智能合约安全方面取得进展,我们可以将保护智能合约所需的所有必要步骤与其演变进行比较。 与传统的软件开发一样,我们倾向于遵循开发生命周期; 同样,我们可以对合约开发生命周期进行分类。 

智能合约开发生命周期可以分为四个阶段:安全设计、安全实施、部署前测试、监控分析。

从智能合约生命周期角度回顾安全主题
从智能合约生命周期的角度概述安全主题

1. 安全设计 

第一阶段包含三个主题; 设计原则、设计模式和安全建模(如上图所示)。 这些主题的主要焦点是合同设计以及如何避免安全威胁。 

设计原则

设计原则是在区块链上设计安全智能合约的基本思想。 合约有五个基本设计原则:为失败做好准备、谨慎推出、保持合约简单、保持更新以及必须了解区块链属性。 

现在,您可能会想,它们将如何帮助创建安全的智能合约? 

让我们采用上面的任何一个原则,比如“为失败做准备”,这意味着在没有补丁方案的情况下,合约应该能够响应错误。 如果发生任何攻击,合约应该能够暂停以防止任何进一步的损失。 

设计模式

在软件设计中,设计模式是可以重用以解决问题的解决方案。 

如果我们以以太坊为例,有六种安全模式; 检查效果交互、紧急停止、互斥、减速带、速率限制和平衡限制。  

我们可以使用这些安全模式来解决区块链中的安全问题,例如可以通过 Mutex 模式处理重入漏洞。 

同时,紧急停止模式可以帮助我们在合约受到漏洞影响时终止合约的执行。 

安全建模

由于使用 Solidity 创建合约,因此开发的代码与合约所需的代码可能存在差异; 这种语言满足图灵完备性,但容易出错。 

上图显示,这个子阶段包括两个阶段; 安全设计和实施。 

安全建模与业务逻辑直接相关; 由于规范是从业务中衍生出来的,逻辑可以通过无错误语义进行分类。 这有助于稍后在执行正式验证过程以减轻漏洞。 

2. 安全实施

在本节中,我们将介绍三个主题中的两个; 安全

开发和安全模板,因为我们已经在上一阶段介绍了安全建模。

安全开发

本节将了解如何在合约实施过程中避免漏洞。 

在以太坊平台上,我们有安全 EIP(以太坊改进提案)——针对以太坊上的安全问题的建议 以太坊 平台。 因此,这些 EIP 对于安全实施智能合约是值得注意的。 

安全模板

模板作为新文档的来源。 带有操作参数的智能合约模板将法律协议连接到可执行代码。 

在智能合约安全的背景下,可以提取具有升级安全参数的标准合约模板,例如安全模式和安全库。 这将减少手动编码出错的可能性。 

3. 部署前的测试

同样,这一阶段的要求源于智能合约的优势之一——“不变性”。 

一旦创建了智能合约,就无法更改它们。 因此,在部署之前必须进行足够的测试以确保智能合约的安全性。

此阶段涵盖部署智能合约之前要遵循的三个安全参数; 严格的形式验证、代码分析工具和安全审计。 

严格的形式验证

形式验证是一个定义明确的过程,它利用数学推理和数学证明来验证系统的所需属性。 

我们可以对智能合约进行形式验证,因为合约程序很短且有时间限制。 有多种方法可以严格地形式化和验证智能合约; 有些基于合约代码,有些基于以太坊虚拟机(EVM)的语义。 

代码分析工具

代码的分析是在不执行程序的情况下完成的。 为此,我们使用了一些称为静态应用程序安全测试 (SAST) 工具的工具。 这些工具有助于发现源代码中的安全漏洞。 

这些工具执行的分析可能包括以下一个或所有步骤:

(ⅰ) 创建中间表示 (IR),例如抽象语法树 (AST),以进行详细分析。 

(ⅱ) 用从静态控制或数据流分析和形式验证技术中获得的足够信息来补充 IR; 这些技术包括:符号执行、抽象解释和符号模型检查。 

但是可以使用哪些工具对智能合约进行代码分析呢? 

尽管可以使用许多工具来进行安全分析,但 Oyente 是最受欢迎的一种。 

奥恩特 可用于对 EVM 智能合约进行安全分析。 它使用“符号执行”来发现四个常见错误; 事务顺序依赖、时间戳依赖、错误处理异常和重入。 

奥扬特的建筑
奥扬特的建筑

Oyente 的架构表明它采用字节码并将以太坊全局状态作为输入。 

Oyente 的另一面是它只检测安全漏洞。 Oyente 使用的符号执行技术并未探索所有可能的路径。 因此,需要其他工具,例如安全性和手动审计。 

安全审计

我们将从离开上一节的地方开始本节; 人工审核。 

但首先,让我们了解安全审计的必要性; 无论是 Ronin Network hack 还是 Poly Network hack,未经审计的代码最容易受到黑客攻击和攻击。 

它们导致巨大的经济损失。 事实上,不仅要审核您的 Web3 项目,还要让专家对其进行审核也很重要,因为这取决于审核员执行安全审核的专业能力。 

再次,在哪里可以找到那些专业的专家? 您无需去任何地方寻找值得信赖的审计师; 点击 https://t.me/quillhash 与其中一位取得联系! 

理想的智能合约审计是手动和自动代码分析的结合; 正如我们在前一点中讨论的那样,即使使用 Oyente 等工具进行自动代码分析,合约中也可能存在未识别的漏洞。 

因此,为了克服这个问题,安全审计员可以手动分析每一行代码,并针对潜在的漏洞进行测试。 

4. 监测和分析

还记得我们最初讨论的区块链不断发展的原则吗? 

这个阶段基于相同的主题; 一旦合约部署并运行,由于新版本和频繁更新导致合约效率降低,可能会出现一些在先前阶段未被注意到的漏洞。 

我们可以执行; 漏洞赏金、安全监控和事后分析以克服这些障碍。 

漏洞赏金

当我们正在考虑合同的部署后安全问题时,Bug Bounties 可能会有所帮助。 前面讨论的形式验证技术是一种静态分析技术。 另一方面,Bug 赏金是一种动态分析技术。 

Bug 赏金背后的概念很简单; 黑客发现漏洞,作为回报,他们会获得一些经济奖励。 看起来是双赢的局面,对吧? 但事实并非如此!

这里的问题是; 错误的价值可能高于灰色市场的赏金,并且黑客可能会利用或出售错误以获取高价。 

有时,除非错误得到确认,否则项目所有者会拒绝支付赏金; 黑客还担心漏洞暴露后支付的不确定性。 

为了克服这个问题,提出了一个漏洞赏金框架,称为“Hydra”。 

Hydra 利用一种名为 N-of-N-version Programming (NNVP) 的漏洞利用技术作为区块链上的漏洞赏金系统。 

带头的 Hydra 框架
带头的 Hydra 框架

安全监控

我们可以使用静态代码分析来发现安全漏洞,但这种方法是在部署智能合约之前使用的。 

但要实时发现错误和潜在漏洞,我们必须监控和分析区块链上的交易数据。 

这些通过分析智能合约发现的漏洞可以称为跟踪漏洞。三种类型的合约是这些跟踪漏洞的焦点; 

(ⅰ) 贪婪合约(仍然有效并无限期锁定以太币的合约)。

(ⅱ) 挥霍合同(不小心将资金泄露给任意用户的合同)和,

(三) 自杀式合约(任意用户都可以杀死的合约)。 

甚至提出了有效无回调 (ECF) 对象的概念,以通过监视 ECF 对象来识别漏洞。 

在此背景下,还提出了一种在线算法; 它有助于发现未知漏洞。 在同一个提案中,建议在部署到主网上之前在测试网上执行智能合约。 

Monitoring UI 是一个使用 React.js 的区块链监控平台。 该平台可用于进行交易,检查资产,查询区块链状态。 

我们不能依赖这个平台对智能合约进行安全监控,但由于大部分与智能合约相关的交易数据都可以找到,我们可以通过跟踪资产转移来实时检测漏洞。 

事后分析

事后分析使用区块链交易数据以通俗易懂的方式分析、发现或追踪区块链上的潜在威胁。 

如果我们讨论图分析,它被设计为一种收集所有交易数据的方法(这包括来自智能合约的内部交易)。 

在这些数据的帮助下,他们准备了三张图表; 

(ⅰ) 资金流向图 (MFG)

(ⅱ) 合同创建图(CCG)和,

(三) 合约调用图 (CIG)

基于对上述图表的分析,提出了许多新发现,例如解决多个相互交互的合约之间的安全问题。 

图分析概述
图分析概述

庞氏骗局是经典诈骗骗局之一,通过该骗局可以获取大量资金并影响原生区块链。 为了打击这种欺诈,提出了一种分类器机制来检测以太坊上的庞氏骗局。 

该机制利用数据挖掘和机器学习来检测庞氏合约。 即使智能合约的源代码不可用,此过程也有效。 

智能庞氏骗局检测框架
智能庞氏骗局检测框架

关键外卖

就是这样,是的,现在就是这样!

如果您一直和我们在一起直到现在,我们将不胜感激。 没有更多的延伸,在结束语中,我们只会说智能合约的生态系统是分散的,并且很难修补错误。 

我们试图从软件生命周期的角度打破智能合约的安全性。 

我们首先讨论了区块链的主要功能 智能合约中的安全问题. 我们将智能合约的安全解决方案分为四个阶段。 我们希望带来更多帖子,让您在不断发展的 Web3 生态系统中应对挑战。 

您如何看待这种用于智能合约安全的敏捷 SDLC 方法? 在下面的评论中分享您的想法!

46 观点

该职位 智能合约安全:一种敏捷的 SDLC 方法  最早出现 博客.quillhash.

时间戳记:

更多来自 散列