实战必读! 发现百万级用户公链漏洞,我们靠的是这套方法

本文作者负责支撑工信部、发改委、央行、雄安新区及多省市区块链产业落地,保障场景建设质量。受托测试的公链是国际两大楔入式侧链技术解决方案之一,拥有注册用户百万级。本文将介绍如何利用一套测试方法,发现该公链账户系统设计缺陷的实战过程和经验总结。

测试——最经济有效的区块链质保手段

对于区块链产品或系统而言,质量问题,如可靠性、兼容性、性能和安全性等都是无法回避的关键问题,也是其影响相关应用和行业发展的重要因素。

业界常用的质量保障手段,包括软件工程方法、正式技术评审、度量与控制、标准与过程、SCM和SQA、测试等方法。从工程实践看,只有综合运用上述方法才能获得高质量系统,其中测试是保障区块链信息系统质量最有效、最经济的手段之一。

图1 质量保障手段

百万级用户待测公链简介

本次受托开展测试的公链A,是以侧链技术为基础的新型非中心化应用,已成为国际两大楔入式侧链技术解决方案之一,拥有注册用户百万级,关注量近千万。其实现了双向SPV楔入方式与侧链系统或DAPP进行数据交互,适用于金融、保险、电子商务、虚拟代币、股权众筹、医疗信息等行业领域。其核心技术(侧链技术)是一种在不改变区块链信息系统或区块链场景现有架构基础上,采用扩容方式增加新功能,实现新业务场景的重要解决方案。如下图所示:

图2 公链A系统架构

公链A有几大优势:

  1. 各侧链系统上数据存储交易相对独立;
  2. 侧链系统扩容不会增加区块链信息系统主链负担,不会降低主链运行效率;
  3. 能有效避免区块链信息系统主链上数据的过度膨胀和不可控;
  4. 实现灵活定制的各项区块链侧链参数,如区块间隔、交易费、奖励等。

测试环境部署详解

数字资产提现和充值操作是区块链信息系统两个原子操作,在精准扶贫场景下,使用充值和提现原子操作,可实现贫困人口扶贫款入账和出账、扶贫物资的发放和使用、扶贫权限的监督和控制等。充值和提现原子操作,其远不止书面意义,所有涉及数值变化的所有操作可简单归纳为提现和充值两部分。公链A的提现和充值操作,在其构建的全球数字资产交易网络中,提现操作可根据资产名字、数量、接收者地址、一级密码、二级密码生成的交易数据,实现不同侧链、不同账户、不同资产之间的基于虚拟货币构建的数字资产价值的上链和转移。

以提现和充值原子操作为测试对象,为充分验证公链A升级前后的功能,可如下构建一套区块链仿真测试环境,测试仿真环境物理部署如下。

图3 仿真环境物理部署图

测试环境主侧链逻辑部署如下,不同侧链(也是由区块依次链接构建的区块链信息系统)之间无法直接交互,需通过主链之间完成价值传递。

图4 仿真环境逻辑部署图

测试用例设计细节

为较好开展提现和充值测试,分析公链A升级前后的结构变化,由于账户体系变化,结合影响域理论,建议重点对不同账户体系下的提现和充值进行测试。本次,采用探索式测试方法,结合正交矩阵法设计测试用例,设计侧链A采用base58check地址(新账户体系),侧链B采用Digital地址(旧账户体系)。

图5 测试用例设计图

如上图,对采用Digital实现的旧账户体系与采用base58check实现的新账户体系之间的充值、提现原子操作采用正交矩阵法进行用例设计,基于公链A开源代码编写测试脚本,共设计4组16个用例,对新账户到新账户、新账户到老帐户、老帐户到老帐户、老账户到新账户之间的充值和提现操作进行单笔和多笔交易。(因可能涉及用户隐私,故详细测试用例暂不披露)

测试过程展现

结合上述思路,侧链A采用base58check地址(新账户体系),侧链B采用Digital地址(旧账户体系),预期通过多次调用数字资产提现测试脚本,侧链B资产将转移至侧链A。

  1. 批量执行提现操作(如图4次),侧链A资产从100增加至500;
  2. 侧链B资产从799.29减少至 399.29(不包含手续费)。

图6 批量提现操作

系统批量执行提现,侧链A资产成功从100增加至500,侧链B资产未减少,数字资产凭空增加。反之,也存在数字资产凭空消失现象。

侧链A提现前后资产变化:

侧链B提现前后资产变化:

测试结果剖析

公链A发生数字资产提现操作异常,提现操作后侧链A资产增加,侧链B资产未有变化。采用如下步骤,对测试结果进行剖析,分析定位缺陷所在。

  1. 分析测试脚本、执行日志,未发现缺陷和异常告警;
  2. 分析侧链A/B间通信数据,侧链B发布充值成功通知;
  3. 静态分析侧链B源代码,发现提现或充值操作设计缺陷。

公链A迭代升级后,新引入一种采用base58check实现的新账户体系,且同时存在采用Digital实现的旧账户体系,从而导致新旧账户体系之间提现和充值原子操作异常。采用Digital实现的旧账户体系存在设计缺陷,其对于非Digital发起的任一操作不做响应,但又返回非空的特定值。在旧账户体系中,特定值代表执行失败,然而不同账户体系下,非空值也许意味着成功(非空即为真)。也就是基于此,采用Digital实现的旧账户体系对于采用base58check实现的新账户体系发起的任一充值和提现原子操作均返回特定值,旧账户体系是未正确执行,在新账户体系下,却意味着成功执行。

经深入了解其开发流程,发现其根本原因在于新版本上线前,未严格执行准入准出制度,自测试用例不足,测试不充分,无法保障新系统上线质量,从而引入账户系统设计缺陷,新版本无法向下兼容,最终导致公链A提现异常。

对读者的建议

运营人员:建议提早禁止旧版本登陆,强制升级至新版本,同步对采用base58check实现的新账户体系进行升级改造,防范采用Digital实现的旧账户体系进行重放攻击,并全面禁止数字地址跨链转账到侧链或应用链,拥有数字地址的老账户可以先把资产中转到新的base58check账户,然后再跨链转移到侧链。

开发人员:建议对升级补丁或版本变更部分做合理、有效分析,邀请同行确定其影响域,充分开展自测试后再提交合并。

测试人员:采用下述准入准出制度,充分设计测试用例,严格执行确保测试未达到要求前,系统测试不进入下一阶段。

建议的准入准出制度:

1. 测试用例设计已经通过评审

2. 按照集成构件计划及增量集成策略完成了整个系统的集成测试

3. 达到了测试计划中所规定的覆盖率的要求

A. 语句覆盖率最低不能小于 98%

B. 测试用例执行覆盖率应达到 100%

C. 测试需求执行覆盖率应达到 100%

4. 在测试中发现的错误已经得到修改,各级缺陷修复率达到标准。

A. 一、二级错误修复率应达到100%

B. 三、四级错误修复率应达到98%以上

C. 五级错误修复率应达到90%以上

作者简介:相里朋,工信部电子五所高级工程师、中国计算机学会区块链专委会委员、贵阳区块链测试认证中心、重庆区块链测试认证中心主任,开展区块链质量保障技术研究。支撑工信部、发改委、央行、雄安新区、重庆市、贵州省、广东省等地市,推进区块链产业落地,保障场景建设质量。借调贵阳副市长秘书,市秘书长助理。完成省课题2项,标准5项(《区块链系统测评和选型规范》、《区块链与分布式记账信息系统评估规范》),区块链丛书1本(区块链与产业创新),发表SCI及期刊5篇。

原文发布于微信公众号 - 区块链大本营(blockchain_camp)

原文发表时间:2018-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链大本营

BTA | 李谱:区块链归根到底是一个程序,没有什么太特殊的!

3628

简单介绍区块链技术

重要提示:如果你拥有价值超过1000美元的加密货币,那么你肯定应该使用硬件钱包,而不是在交易所保留硬币。 我推荐使用Trezor,你可以直接从他们的网站花费€8...

1.6K4
来自专栏liuchengxu

为什么施诺尔签名有助解决今天比特币的两大难题

如果问币圈中任何一个人: 比特币面临的最大挑战是什么? 你很可能会听到的回答是: "可扩展性".

882
来自专栏申龙斌的程序人生

块66:软分叉

阅读此文前,强烈建议先预习《分叉》这篇文章。 类比时刻: 我在2017年5月23日开设了《区块链生存训练》饭团,三个多月已经完成了65篇文章,使用简单的语言和类...

2827
来自专栏区块链入门

第二十二课 无多签硬件钱包,如何实现以太坊通证的多签合约?

【本文目标】 1) 了解目前辉哥调研的多签硬件钱包的现状; 2) 提供一个智能合约多签钱包的实现方案和测试结果;

1784
来自专栏企鹅号快讯

投资钛值的你,知道钛链是什么吗?

技术 钛链技术到底有多牛?钛值从技术考量到底有多值?为普及和推广钛值背后的区块链技术,我们的钛值极客团队来给大家上课啦! 搬好小板凳,拿出笔记本,开始学习! 1...

2548
来自专栏区块链大本营

区块链开发实战:如何从零打造一个去中心化应用

8636
来自专栏丑胖侠

智能合约中存在的3种最常见的误解

作为一名受欢迎的区块链平台的开发者,我们有时被问到类似以太坊的智能合约是否走多链路线。我总是回答说:没有,至少目前还没有。

3859
来自专栏云计算D1net

区块链安全如何保证?公有私有哪家强?

区块链,比特币背后的分布式账本技术,日后可能会被证明比它支持的货币更有价值,但这种价值必须建立在安全的基础上。当我们开始将该技术付诸实践时,一定要确保我们设置的...

3476
来自专栏区块链入门

第十八课 【ERC875】Hiblock黑客马拉松门票从定制到编码实现

【本文目标】 通过本文,可以从一个HiBlock黑客马拉松活动门票定制,转让,出售和签到为例,说明ERC875的设计初心,ERC875的标准接口分析,也给出了...

872

扫码关注云+社区