区块链网站|NFTS 柚子币(EOS) EOS九大核心安全风险分析

EOS九大核心安全风险分析

广告位

EOS九大核心安全隐患分析

不走。EOS Force.io最后警告!

这是一篇技术文章,写给广大节点候选团队的开发者和对EOS安全研究感兴趣的朋友。

EOSForce.io作为一个对EOS代码进行了深入研究并进行大量部署测试的团队,多次提醒主网安全问题,并对发现的问题进行了修复和修改。近年来,随着研究的深入,我们发现了更多的安全隐患,一些候选节点开始关注主网的安全。

接下来,我们揭示了至今仍困扰我们的九个核心安全风险。既然Block.one声称不负责任何主网的安全,我们自己也做了一些初步的解决方案。在这里我试着帮你理解:

为什么EOSForce.io对EOSIO的改动是必要的。如果有更好的解决方案,希望大家可以和我们交流,一起为EOS的安全做出贡献。EOSForce.io承诺不为超级节点运行,在EOS主网公测结束验证安全性之前,不会贸然启动主网。也不建议用户在此之前导入私钥来激活主网络资产。

为了解决EOS目前的麻烦,EOSForce.io采取了最新的预防措施,以最少的功能安全启动EOS主网,然后经过各约束模块的正式验证和大规模测试验证后,再慢慢释放相应的功能。

一个

麻烦一:

EOS基于资源抵押模型,有所创新,但还没有达到最初的预期水平。目前已经在运行的公链都是收费的模式。

收取手续费有两个好处:

1.防止链级DDOS。众所周知,以太坊的POW测试网络经常被攻击,因为硬币没有价值,没有防止链级攻击的阈值。以太坊中各种码气价格的合理设定也是为了这个目的。众所周知,防止DDOS最好的方法就是强制攻击成本远大于获利成本。

2.手续费可以作为激励的来源,保持整个链条的生态稳定,向前发展。

EOS基于抵押模式’的想法很有新意,而且没有手续费。当时大家(包括BM)都期望通过资源抵押来阻止DDOS,后来又期望设置EOSRAM等相关资源令牌来产生激励。这就解决了收取交易费用的问题。

而交易费问题只是系统契约和底层的一点点联系,并没有被预料到。

对于开发者来说,只要随便搭建一个测试网络,就可以发送交易,不需要任何成本,从而验证我说的问题。这个问题在链级是致命的,远远超过360“史诗级”的传统内存泄露问题。因为只要有人打开电脑,就会不断向EOS主网批量发送交易。EOS网络将会失败。

EOSForce.io预防1:

鉴于此,EOSForce.io在EOS的基础上增加了每个动作设定的价格收费。只是现在EOS没有完成资源模块的时候,增加了一个交易费过滤器。BM神完成这个功能后,EOSForce可以关闭交易费的过滤,真正可以通过资源阻止DDOS攻击,刺激全链生态。

2

麻烦二:

EOS代码中有一个超级权限,不需要私钥就可以通过认证。还有以eosio开头的账户。都是准超级特权账号(eosio现在存在)。

这违背了区块链哲学的基本功能:在私人钥匙的保护下,个人资产是不可侵犯的。

EOSForce.io预防2:

鉴于此,EOSForce.io将整个系统限制为只有一个特权账户,即eosio,并使该账户的公钥数据段全为零,检查后的地址为

EOS 111111111111111111111111111111111114t 1 anm .没有人拥有或知道私钥。

麻烦三:

交易的设计结构太复杂

你可以看到完整的EOS数据块,我们已经拿起。EOS的一个事务可以由action数组和多个contextfreeaction数组组成。并且内联动作可以添加到动作中,contextfreeaction不需要签名,动作中可以设置大量的内联动作。

EOS是按动作顺序执行的。该事务也可以是延迟的事务。等等,这些设计都是创新,感谢BM。但是这么复杂的功能太庞大了,可以攻击和组合的点很多。事务集延迟,事务中有一个动作,动作也可以设置inline_action。这个复杂的函数需要很长的时间,多种案例组合,以及漫长而有力的测试和验证。

EOSForce.io预防3:

我们也在组织大量的团队对这一块进行测试和验证。而是为了持有者的安全。我们将事务中的动作限制为单个动作,并且我们首先限制没有签名的contextfreeaction。在正式的证明结果和各种大规模真柱测试验证成功后,这层过滤就出炉了。

麻烦四:

EOS查询接口如get table不能批量指定关键字查询。

在这里,不得不佩服BM这个技术天才,他用的是多插件可插拔模块编程。很多模块都是单行模式,可以互相访问。

此外,他还使用了消息总线微服务编程模式。只要每个模块对相应的消息感兴趣,并注册了相应的消息总线,就可以接受相应的消息。但是这些模块中有很多查询接口只能批量查询。

当数据很小时,是可以接受的。但是达到百万tps之后,基本上就没有机器能满足这样的查询了。虽然- key是EOS中的一个字段,但它在EOS代码中一直和transfer接口中的memo参数一样,只有它的名字,没有它的实现。

EOSForce.io预防4:

Join – key定点微查询按关键字。

麻烦五:

EOS水龙头模块用了很久,模块不工作。

水龙头模块是一个插件,允许用户通过第三方注册用户名。

EOSForce.io预防5:

添加水龙头插件。

麻烦六:

链接库数据库不稳定。

可以调用chainbase的接口,将相同的数据存储两次,程序就会核心转储。EOS契约中的multiIndex表也使用了chainbase。当你同时修改一个表中同一行数据的不可通行列时,只会更新最后一次操作。

EOSForce.io预防6:

认真复习这一块相关的代码,把有问题的地方都复习一遍。

麻烦七:

EOS的Wasm-jit是fork Andrew Scheidecker近两年的代码,fork有官方的webassembly。有多少只虫子?需要大规模测试。

EOSForce.io预防7:

EOSForce.io在创始块内置了系统契约,这样系统契约就是来自创始块的内置契约。EOSForce.io限制setcode、setabi接口。

麻烦八:

EOS没有世界状态,所以只能通过块级验证来分叉。

比如节点A和B的事务顺序表都是一样的,也就是块都是一样的。但是,对每个帐户进行了不同的数据库清点,链条是未知的。

攻击的可能性:虽然BM在apply_context.cpp中做了,但是只有契约表所有者可以修改表。但不排除你无法通过在外面构造相应的键值,直接对不同契约账户的表进行相关状态drop攻击。

此时,链中的所有块都是相同的,但每个节点中的状态存储会相应不同,甚至可以跨帐户覆盖对应的表。更改不同合同帐户的状态。

EOSForce.io预防8:

先限制自由提交代码的功能,等这些都正式证明后再放开。

麻烦9:

MongoDB,SQL插件的不稳定性。

EOS数据库的插件模块在mongodb之前是不错的,但是中间他们想把它抛弃,换成sql模块。然而,过去的这种变化对生态开发的用户来说是致命的。

EOSForce.io预防9:

EOSForce.io正在大规模招募区块链开发者,滤镜模块和数据库模块会更好更持续更新。

区块链开发并不比传统软件开发更好。如果一个模块的漏洞导致大规模丢币事件,即使性能真的达到一百万tps,也没有任何意义。安全稳定怎么强调都不为过。在保证安全稳定的基础上,拓展性能,拓展特色。

我们相信BM,尊重BM带来的充满希望的EOSIO。然而,没有bug的程序是不可能的。区块链和中央集权制有本质的区别。集中式系统的代码更新和数据修改权限完全由集中式组织负责,可以随意上线,查找bug,修复bug,回滚数据,抵消账目,高速迭代。

然而,区块链不能在没有bug或者特别明显的bug的情况下上线。链上的数据都是和最高价值的用户资产相关的。就算99%没问题,也一定有问题。只要有任何一个点或维度可以攻击,区块链网络就一定会失败。不要冒险。

EOSIO代码一年来不断迭代,尤其是四五月份,更复杂的设计减少了,一路修改到6月1日发布1.0版本。没有多少团队对EOSIO进行过完整的测试。然而,传统的安全攻防水平运维测试并不是真正的测试。真正需要测试的是网络投票流程、资源关联、自定义合约等。这种测试用例需要几个月的时间来编写。众所周知,以太坊的测试数据和测试脚本是代码本身的数倍。

如今EOS市值一度达到1000亿元,明细多如牛毛,远超比特币和以太坊推出时的规模。如果不能基本保证链本身的安全性,那么用户的资产就会大大减少或者为零。

Block.one官方一直强调不会负责主网的安全。EOSForce.io对EOSIO本身存在的重大风险做了大量的测试和修复,目前不敢说一定安全。接下来诚挚邀请EOS社区用户、节点候选人、第三方安全团队验证一个安全的EOS主网。确认无重大安全隐患后上线。欢迎来到EOSForce.io参与EOS主网公测。

向Oracle chain、EOS深圳等投了No go的团队致敬。在安全问题上没有妥协的余地。

通告

EOSForce.io底层公链代码已经开发完善,下周将逐步开源。目前docker可以参与主测试网络,开源后节点可以自行编译。欢迎大家参与验证更安全的EOS骨干。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/eos/61231.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部