主页 > imtoken最新版app > 应对黑客攻击——浅谈数字货币安全问题

应对黑客攻击——浅谈数字货币安全问题

imtoken最新版app 2023-03-11 07:47:26

摘要:随着智能合约的快速发展,越来越多的项目基于以太坊发行代币,链上资产的种类和规模呈指数级增长。 “虚拟世界”中的数字资产也点燃了黑客的“热情”。 以太坊区块链被认为是区块链的2.0时代。 各种新的数字资产都是基于以太坊发行早期代币,甚至实现一些功能,虽然国外的区块链社区甚至认为以太坊的体量已经变得太大了。 它太大了,不容易被打败,但以太坊也是数字货币历史上造成安全问题最多的货币。 从2016年的The DAO事件到最近BEC、EDU、SMT的安全漏洞事件,以太坊的智能合约可以说是布满了安全漏洞。 大多数代币在其主网上线之前使用以太坊代币。 作为投资者,为了自身资产的安全,熟悉智能合约漏洞的概念尤为重要。

比特币之父能不能随意制造比特币_比特币转错到比特币现金地址了_0.025比特币

【ETH和ETC被黑客入侵】

作为全球最大的众筹项目,The DAO一度被寄予厚望。 正所谓“成则萧何,败则萧何”,智能合约一度被捧上天,但在这次The DAO事件中,其递归调用(recursive calling)漏洞却成了黑客的敲门砖。 此后,“黑客”现身大谈攻击合法性的场面更令人意外。 这首次引发了智能合约代码监管的问题。

2016年6月17日,一场在区块链历史上留下浓墨重彩一笔的攻击事件发生了。 由于其编写的智能合约存在重大缺陷,区块链行业最大的众筹项目TheDAO(攻击前资产约1亿美元)遭到攻击,导致超过300万以太坊资产被剥离TheDAO 资产池 TheDAO 在编写的智能合约中有一个 splitDAO 功能。 攻击者通过该函数的漏洞,复用自己的DAO资产,不断从TheDAO项目的资产池中分离出DAO资产归自己所有。

攻击者结合了两种漏洞攻击。 攻击者利用的第一个漏洞是递归调用splitDAO函数,也就是说splitDAO函数在第一次被合法调用后,会再次非法调用自己,然后重复这个非法调用自己的过程。 这样的递归调用可以使攻击者的DAO资产在攻击者的DAO资产清零之前,从TheDAO的资产池中反复分离数十次。 攻击者利用的第二个漏洞是为了避免在DAO资产分离后从heDAO资产池中销毁。 一般情况下,攻击者的DAO资产分离后,TheDAO资产池会销毁这些DAO资产。 但是攻击者在递归调用结束前将自己的DAO资产转移到其他账户,从而避免了这部分DAO资产的破坏。 利用第一个漏洞进行攻击后,将安全转移的DAO资产转回原账户。 这样,攻击者仅用2个相同的账户和相同的DAO资产就成功地进行了200多次攻击。

被攻击后,Vitalik亲自支持分叉提案,也支持软分叉的发展,支持矿工升级客户端进行分叉。 不过,Vitalik 也承认,这个提议存在着激烈的争论,而且任何一方都存在强烈的反对意见。 因为分叉不需要回滚交易,不会对用户和交易所造成不便,这让Vitalik更倾向于采取行动。 也有很多人,包括基金会内部,倾向于反对另一边的分叉。 Vitalik 不会阻止或反对对方公开发表自己的观点,甚至不会游说矿工抵制这次分叉。 在这件事上,维塔利克坚决不与任何站在他一边的人争论。

简而言之,他们所做的是改变以太坊区块链来修复 DAO,但只有运行以太坊区块链网络的大多数计算机同意,才能更新软件以消除漏洞,就好像攻击从未发生过一样之前发生过。 这个过程称为硬分叉(hard fork)。 从此,以太坊创造了一个平行世界。 现在的以太坊其实是一个分叉的“以太坊”,一年后就飙升到数百美元。 ,而原本不愿分叉的包含 The DAO 漏洞的以太坊变成了以太坊经典(ETC)。 该决定引发强烈反对,一年后仍存在争议,以太坊社区和比特币用户都坚持认为区块链的历史不可篡改,一些比特币用户认为硬分叉违反了最基本的价值观。

【币安被黑VIA事件】

2018年3月7日(北京时间)深夜,不少用户发现自己币安账户中持有的各种代币和数字货币以市场价格兑换成BTC。 据网友反馈,被盗号的不在少数。 很多人认为是币安系统出错导致的,并试图向币安客服寻求解释。 还没等他们反应过来,黑客们已经开始了有组织、有预谋的行动。

黑客激活了所有被盗账户的交易引擎。 交易规则是卖出所有山寨币,以市价买入VIA。 而恰好黑客手中持有大量的VIA,相当于高价购买了黑客手中的VIA。 于是,威盛的K线出现了惊人的振幅:2分钟内爆了110次。 从成交量和价格涨幅来看,约有1000个BTC买单,将VIA的价格从0.000225btc拉至0.0250.025比特币,价格上涨了约110倍。

但黑客的行为触发了币安的预警系统,黑客未能直接提出高价出售所获得的比特币。 于是转而以超低价砸掉比特币现货的订单单,引起其他交易所期货价格的连锁反应。 于是,黑客提前埋伏的巨额空单,赚取了巨额利润。 黑客攻击已经分散。

[数据溢出]

2018年4月22日(北京时间)中午,BEC美密遭遇黑客毁灭性攻击,天量BEC被两个地址转出,引发市场抛售潮。 那一天,BEC的价值几乎为零。

以太坊区块数据显示0.025比特币,黑客利用以太坊ERC-20智能合约中的数据溢出漏洞,在攻击过程中凭空转移了57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.79200395695648 BEC。 转账数量远超BEC发行总量70亿,市场顿时陷入疯狂抛售,近65亿元的BEC市值几乎瞬间归零。

攻击成功的原因是BEC的一段代码忘记使用safeMath方法,导致系统存在整数溢出漏洞。 根据PeckShield团队今天凌晨发布的安全报告,黑客使用in-the-wild(一种从代码中获取漏洞的手段)方式,从BEC程序中获取漏洞并发起攻击。 利用这个漏洞,黑客可以通过转账的方式生成合约中不存在的代币,将这些开箱即用的数字货币转入正常账户。 这些凭空创造的代币可以与真实代币无异地使用。

4月25日,SMT也爆发了类似的漏洞问题。 SMT智能合约中的proxyTransfer函数存在一个经典的整数溢出问题。 攻击者可以控制两个输入参数_fee 和_value_。 如果 _fee + _value 的结果恰好为 0(即溢出),则第 206 行的检查将失败。

这意味着攻击者可以将大量代币转移到一个没有任何代币的地址(第 214 行); 同时,根据第217行的代码,还会向msg.sender发送一笔可观的手续费。

要理解数据溢出的漏洞,首先要明白任何类型的值都有自己的表达范围。 计算机中的整数分为两类:无符号整数(也称为无符号整数),此类整数必须是正整数; 有符号整数(signed integers),这类整数可以表示正整数和负整数。 无符号整数常用于表示地址、索引等正整数,可以是8位、16位、32位、64位甚至更多。 8位二进制表示的正整数取值范围为0~255(-1),16位二进制表示的正整数取值范围为0~65535(-1),32位二进制表示的正整数位的范围为 0~65535 (-1)。 取值范围为0~-1。

short值可以表示的取值范围是:-32768~32767,有负数也有正数,这是有符号数的表达范围,无符号数的表达范围是0~65535。 你会发现这两种情况都有65536个数,是2的16次方,也就是说short类型的数是用16位来表示的。

那么当一个运算使得运算的结果超出类型所能表达的范围时,计算机会如何处理呢? 如上图所示,65535加1后变为0,加2后变为1,这就是所谓的数值反转,所谓溢出超出数值的表达范围。 BEC的数据类型不是unsigned short类型,而是用uint256代替。 不管是什么类型,只要是定长的,都有它的表达范围。

当cnt和_value的乘法运算超出uint256的表达范围时,amount得到的值会比预期的值小很多,就像上面的例子,65535这么大的数加1的结果变成0 . 那么当 amount 的值很小,但是当cnt和_value很大的时候,签名红色箭头所指的所有检查都会通过。 但是最后转账的时候,不是使用的金额,而是使用的_value。 黑客攻击的数据溢出漏洞。

比特币转错到比特币现金地址了_0.025比特币_比特币之父能不能随意制造比特币

【权限漏洞与联合套现】

继BEC和SMT代币溢出漏洞曝光后,EDU和BAI代币也存在重大安全漏洞,但与之前的BEC和SMT溢出问题不同。 这次是权限控制导致的漏洞,攻击者不需要私钥就可以转移任意地址上的EDU/BAI资产。

该漏洞为条件判断缺失的低级漏洞。 transferFrom函数中allowed[_from][msg.sender] >= _value 未验证,函数中allowed[_from][msg.sender] -= _value; 没有使用SafeMath,导致无法抛出异常回滚事务。 通过该漏洞,攻击者可以在没有私钥的情况下转移指定账户中的所有EDU,并且由于合约没有Pause设计,所以损失无法止损。 漏洞被发现后,发生了大量的洗劫活动。 攻击者可以在没有私钥的情况下转移您账户中的所有 EDU 和 BAI。 智能合约中的 transferFrom 是批准转账过程中的关键函数。 由于不像transfer那样常用,所以很容易被不小心忽略。 这个过程最大的问题是权限问题。

这次EDU攻击其实很快就被发现了,黑客也无法提币。 但黑客又一次上演了拿取不能提现的现货砸比特币价格,然后到隔壁交易所做空比特币的一幕。 黑客用2个小时将比特币砸到7400美元,爆仓近3万张期货订单,成功收割期货和现货。 黑客的攻击从5月20日开始,当天完成了4笔交易。 第一笔交易是利用Allow函数的漏洞从项目方地址盗取了30亿个EDU Token,然后用三笔交易兑换了Token。 易手。

黑客拿到Token后,开始往交易所充值,交易了约20亿个Token。 火币专业交易所发现合约漏洞问题后,立即暂停了EDU/BTC和EDU/ETH的交易对。 因为全球只有火币Pro可以交易EDU Token,这里EDU Token的市场交易已经完全停止。 按照上述20亿个EDU Token的交易金额计算,黑客的账户中已经有1000多枚比特币。 虽然黑客的账户无法提现,EDU也无法交易,但账户Coin中的比特币仍然可以在市场上进行交易。 于是黑客用与3月7日相同的方式成功在当地交易所抛售比特币,引起市场波动,同时跨交易所做空期货。 比特币价格从23:30开始暴跌,从7880美元跌至7400美元,2小时跌幅6%。 与此同时,OKEx的期货交易开始清算多头头寸。 从23日23:36到24日1:49,共爆仓28664手,共计369枚比特币。 期间,OKEx期货市场做空交易量达到1.58亿美元。 如果黑客按照砸比特币价格的思路在OKEx做空,然后在这段时间做空,就可以赚取近2000万元离场。

[EKT的安全设计]

由于货币需要稳定的系统,智能合约设计越复杂,出错的可能性就越大。 因此,在早期,中本聪认为货币系统不需要图灵完备的语言。 比特币不支持智能合约的原因也是我觉得币种需要极其稳定。 那么,如何在保持区块链币值稳定的同时开发Dapp呢? 更好的解决方案是将 Token 链与 DApp 链分开。

在EKT中,Token链是平行的多链结构,多链多共识,共享用户基础。 作为DAPP开发者,最关心的肯定是三样东西:1.开发难度2.用户体验3.社区生态。 那么Token链的设计就是针对不想重新开发一条公链,而是想发行代币和链的开发者。 EKT主要针对开发者,所以在设计代币链的时候最大的想法就是设计一个可以吸引大家发币的平台(大家来发币是因为TPS高,手续费低,可以选择发行链使用自己的Token作为交易手续费,也可以与其他链共享用户),使得在EKT上开发DAPP的开发者可以获得更多的用户资源。

EKT的中心思想是设计一个社区机制,让开发者可以轻松开发一个DAPP,剩下的就交给EKT来处理。 当然,安全问题也是EKT最初设计的重点。 即使是早期在以太坊上运行的 EKT 代币,我们也认真考虑过潜在的安全风险。

0.025比特币_比特币转错到比特币现金地址了_比特币之父能不能随意制造比特币

比如这次对多个项目发起攻击的“transferFrom”函数中,EKT代币在require(balances[_from] >= _value); 下一行添加 require(allowance[_from][msg.sender] >= _value); 判断,确保合约转账不存在可被黑客利用的漏洞。

我一直坚持的一个观点是,token不应该是一个智能合约,而是一个预定义事件的“对象”。 这个“对象”可以有自己的参数(比如总量、共识机制等),接受的代币地址有两种:普通用户地址和合约地址。 合约地址收到代币后,可以执行非图灵完备的合约语言,进行简单的状态计算和代币转账。 EKT 将 Token 链和 DApp 链分开,可以在很大程度上避免未来前面提到的以太坊合约的漏洞。

以上是我对区块链共识机制的一些思考,设计EKT的多链多共识时的一些安全考虑,以及Token链与DAPP链分离的解决方案。

【结论】

公链是区块链发展的前提和基础,也是区块链行业未来发展的核心保障。 然而,目前区块链的发展现状是,底层公链的性能还没有发挥出来,其上构建的各种DAPP在性能上受到严重限制,各种共识算法存在不完善之处,安全问题也令人担忧。 . 由于智能合约是公开的,一旦上传就不能更改,所以大多数“区块链2.0”项目都有安全验证需求。 一些团体也开始致力于形式化验证技术的应用,为智能合约和区块链生态提供安全保障。 将智能合约转化为数学模型,通过逻辑推理计算对模型进行验证,从而证明智能合约的安全性。

但是由于智能合约是“不可变的”。 一旦部署,他们的代码就无法更改,因此无法修复发现的任何错误。 在整个组织都由智能合约代码管理的潜在未来,对适当安全性的巨大需求。 过去的黑客如 TheDAO 或去年的 BEC、SMT、EDU、BAI 等漏洞事件已经引起了开发者的警惕,但我们还有很长的路要走。

各种公链在可扩展性、适用性、共识理念、安全建设等方面的竞争将长期持续。 我们认为,既然没有完美的漏洞防范方法,将Token链与DApp链分离,让Token的“对象”尽可能简单,是现阶段区块链行业较好的解决方案。

参考阅读:

20180306 3月7日晚上,黑客坑了大家

20180423 BEC美蜜发现重大漏洞价值几乎为零,OKEx暂停BEC提现和交易。

20180423 BEC瞬间归零:黑客大量转移币种,黑产大军开始监控币种漏洞

20180503 智能合约漏洞是以太坊的缺陷吗? 没有 SafeMath 溢出? 别惹事!

20180524 EduCoin(EDU)智能合约漏洞分析及修复方法

《以太坊白皮书》

《EKT白皮书》