• 小心!FOMO3D的坑


    null
    01

    前方高能

    近日,区块链机构安比(SECBIT)实验室审计后确认,FOMO3D游戏的智能合约存在随机数漏洞可被利用,FOMO3D合约及所有抄袭源码的山寨合约均存在该安全漏洞。

    原本设计上随机性较大的空投游戏可通过特殊手段操纵,大大提高中奖概率。

    02

    举个栗子

    随机数在密码学中应用广泛。随机数分为真随机数和伪随机数,一般程序使用的基本都是伪随机数。伪随机又分为强伪随机数和弱伪随机数。

    弱伪随机数只需要满足随机性,强伪随机数需要满足随机性和不可预测性。引发安全问题的关键点在于不可预测性。

    随机数导致的安全问题一般有两种:第一,应该使用随机数,开发者并没有使用随机数。第二,应该使用强伪随机数,开发者使用了弱伪随机数。

    在弱伪随机数的安全漏洞中,有一种情况比较罕见,但是一直存在,那就是种子的泄露。

    比如在区块链中,算法很多时候是公开的,但是一旦种子泄露,相当于随机数已经泄露了。FOMO3D此次的漏洞就属于这种。

    此次漏洞细节为:以太坊智能合约环境中难以生成无法预测的随机数,FOMO3D开发者在其合约中增加了判断调用者是普通人类还是合约的判断逻辑来尝试规避,但此逻辑实现存在漏洞。攻击者利用借助合约提前预测随机数,从而大大增加自身中奖概率。

    攻击者可以通过把钱包地址当作随机计算的部分来避开Fomo3D的判断。在其合约的airdrop函数中,产生随机数的种子是通过当前块信息(例如,第1416行的timestamp、第1417行的difficulty等)和msg.sender一起计算出来的(随机变得不随机),攻击者可以在攻击airdrop函数之前在合约中预先计算出结果(必然会开奖)。

    null

    如果能够得到一个针对当前airDropTracker_的可用种子,攻击者可以使airdrop函数返回true(第1424行),从而在正确时间点实施“薅羊毛”行动。

    (合约地址可以不停尝试新的合约地址,试到可以时便可进行精准投注,这样就会确保一定能得到空投,其随机性就遭到抑制,所以就会变得很像挖矿)。

    产生结果:攻击者可以通过把钱包地址当作随机计算的部分来避开Fomo3D的判断。能够在类似的合约游戏(FOMO Short、FOMO Lightning和RatScam)中薅羊毛。

    一个攻击者曾经花了7.6ETH 中了空投奖励 51个ETH。

    null

    03

    追踪溯源

    本质上,区块链是一个分布式账本,随机数就是随机选择出块人的问题,这个随机性要能被全网确认,并且不能被操控,也不能被预测,否则恶意节点通过操控这个随机数就可以操控长链,因此随机数对于区块链技术来说很关键。

    随机数的应用场景非常多,在游戏场景就有广泛使用。比如开发一个抽奖游戏,如果没有随机数,将很难做到公平。随机性和不可预测性一直是游戏令人着迷的地方之一。

    目前FOMO3D这个类型的游戏只有在以太坊、EOS 和星云链(有和FMO3D几乎一样的游戏只是名字不同)上有,别的链目前暂时还没有。

    有别于以太坊和EOS,星云链通过VRF(Verified Random Functions可验证随机函数)提供了链上真随机数,合约可以直接通过Math.random()获取真随机数,且在合约间调用时做了防作弊处理,随机数无法被预判。

    因此在星云链上的FOMO3D类游戏没有此次随机数漏洞问题。

    VRF用在区块链中的意义很好理解——用以完成出块节点的随机选择。VRF算法作为一种基于密码学的新型共识模型,最大的优势是快速共识、抗攻击能力、极低算力需求。

    业界已问世的解决方案有图灵奖得主Silvio Micali提出的Algorand算法、Cardano的POS类算法OuroborosPraos、Dfinity中基于BLS的算法、Ontology的VBFT算法等,

    VRF在区块链世界有广泛应用,我们知道,开发智能合约和应用时,如果公链没有提供一个好的随机数方案,开发者很难自己去实现,这将大幅限制区块链应用开发。

    而VRF可以天然地生成随机数将带来三大优势:1.生成的随机数公平安全;2.生成随机数的门槛更低;3.支持功能更为丰富的智能合约开发。

    04

    星辰大海

    7月20日,在工信部旗下赛迪研究院赛迪全球公有链技术评估指数(第三期)中,星云链(NAS)以108.8的综合指数跃升至全球第三名,仅次于EOS、以太坊。

    星云主网(1.0鹰星云)是唯一使用LLVM的区块链公链,交易处理能力达到2000TPS,星云主网日交易数峰值曾超过百万量级,依旧稳定运行,性能全面超越以太坊,系统安全可靠。

    null

    目前星云主网DApp数量已近7000,超以太坊2倍多,证明了星云的高度可用性。为什么那么多的开发者选择在星云链上开发?

    1、“星云激励计划”是最大的推动力,其他公链没有如此大规模大力度的激励计划;

    2、大部分的dapp开发者在星云之前都有过以太坊的开发经验,但是以太坊的扩容问题长久未解决;而EOS的节点竞争以及之后的主网混战导致EOS经常调整更新,变数颇多,此前的ram炒作更是引来争议无数;

    3、星云链对开发者而言,入门门槛低。星云链支持当前最常见的编程语言JavaScript编写智能合约和DApp,这让更多的程序员无需额外学习,就可以在星云链上进行开发,让开发者进入生态的成本最低。

    null

    迄今为止“星云激励计划”(Nebulas Incentive Program)已经吸引了2300多位开发者开发各类DApp。

    其中《细胞进化》在获得星云激励计划5月月冠之后,估值3000万元,斩获了500万人民币的天使投资。《隐秘世界OL》也先后收到NEO、QTUM、EOS等公链投资机构抛出的橄榄枝。

    同时,星云已经和若干行业头部企业实现战略合作,例如,Egretia,金山云,Cocos,星云的生态圈正在逐步扩大。

  • 相关阅读:
    Linux中配置别名
    Linux下的IO监控与分析
    RHEL6 Systemtap 安装笔记
    记一次多事件绑定中自己给自己设置的坑——click,dblclick,mousedown,mousemove,mouseup
    springboot打jar获取不到static静态资源文件问题
    关于springboot默认日志框架Slf4j+logback,自定义Appender问题
    spring 时间格式问题
    springboot 部署到tomcat,获取根路径问题。空格变为%20
    前后端分离 vue+springboot 跨域 session+cookie失效问题
    springboot 部署到tomcat中,项目总是重新部署
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9563562.html
Copyright © 2020-2023  润新知