美文网首页
几十亿的代币损失,只因为手误

几十亿的代币损失,只因为手误

作者: 优得小蜜蜂 | 来源:发表于2018-11-06 10:42 被阅读0次
    image

    学生时代,很多人喜欢用“马虎”安慰自己,觉得“差一点”没什么大不了,小失误不会造成多大影响,但“马虎”如果出现其他事情上,稍不留神,就会造成极大损失。

    区块链技术近几年飞速发展,在数字货币等领域得到大量应用。由于数字货币的匿名性和价值认可度,安全事件层出不穷。大量黑客将token作为攻击目标,或将数字货币作为传统攻击行为的获利出口,对区块链生态以及传统行业造成极大不稳定因素。

    但其实,对于很多被黑客攻击的代币,项目方只要在智能合约的代码审计上稍下功夫,就能避免大量不必要的损失。

    image

    ATN被盗,只因为底层函数运用不当

    5月11日,ATN Token遭受恶意攻击,攻击者利用DSAuth库与ERC223搭配使用的混合漏洞,窃取了ATN的所有权。

    这次事件主要是利用了开发者对以太坊底层函数call、callcode、delegatecall的不当使用。

    黑客通过ERC223方法与DS-AUTH库的混合漏洞,将ATN Token合约的owner变更为自己控制的地址。获取owner权限后,黑客发起另外一笔交易对ATN合约进行攻击,调用mint方法给另外一个地址发行1100万枚ATN。

    image

    攻击者的操作可能造成如下影响:

    1. 绕过权限检查,调用敏感函数,例如setOwer;
    1. 窃取合约地址持有的代币;
    1. 伪装成合约地址与其他合约进行交互;

    因此,在编写合约时,此类函数使用时需要对调用参数的安全性进行判定,建议谨慎使用。

    为了避免此类漏洞,我们提醒开发者注意以下几点:

    谨慎使用call、delegatecall等底层函数。此类函数使用时需要对调用参数进行限定,应对用户输入的call调用发起地址、调用参数做出严格限定。比如,call调用的地址不能是合约自身的账户地址,call调用的参数由合约预先限定方法选择器字符串,避免直接注入bytes可能导致的恶意call调用。

    对于一些敏感函数,不要将合约自身的账户地址作为可信地址。

    准备修复措施,增加Guard合约禁止回调函数向ATN合约本身回调。

    增加黑名单合约,随时冻结黑客地址。

    image

    综合上文的分析,call函数的使用一定要小心,在智能合约开发中尽量避免call函数的使用,如果使用,也一定要对其相关参数进行严格的限定。另一方面,智能合约在部署之前应进行安全审计,比如代码的形式化验证等。

    不过,合约的安全审计,仅依靠开发者的经验和能力总有隐患。

    image

    20亿EDU被盗,稍加注意就能避免

    区块链时代,智能合约的安全性被无限放大,一个小小的bug就能导致上亿美元的损失。

    EDU智能合约中的transferFrom函数, 主要目的是实现EDU的转账:将一定数量(_value)的EDU从源地址(_from)转账到接收地址 (_to):

    image

    然而此函数并未设置转账合法性的检查:

    allowed[_from][msg.sender] -= _value;

    因此,即使要转出的金额超过了允许的限制 (allowed[_from][msg.sender]),转账也能成功。而黑客就是利用了EDU的这个漏洞,将任意地址的EDU无限制地转到自己的账户。也就是说,任何一个EDU币的持有者都会面对被洗劫一空的风险。

    但如果EDU的智能合约在提交之前能够做代码检查,那么这些损失是完全可以被避免的。

    image

    智能合约安全漏洞频现并非偶然,当前智能合约缺少监管机制,缺少安全审计流程,其代码安全性与逻辑漏洞仅靠开发人员人工审核,难免存在隐患和漏洞。

    image

    代码审计为您保驾护航

    2018年10月24号,国家互联网应急中心(简称:CNCERT)与长沙经开区成立区块链安全技术检测中心。

    天河国云公司作为Ulord项目的技术提供方,在区块链领域具备很强的技术优势,其技术骨干由十余名博士构成,具备区块链、密码学、互联网信息安全、大数据、云计算、人工智能、金融、管理等多个领域专业背景。

    此次区块链安全技术检测中心的成立旨在帮助企业和机构解决来自算法安全、协议安全、使用安全和系统安全等多方挑战,为区块链企业保驾护航。天河国云董事长谭林博士曾说:

    智能合约是区块链的基本特征和基础,智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%正确。但区块链项目不能完全保证代码的准确性,就像每个人在电脑打字时都会打错字一样,程序员在输入代码时也会存在笔误和错漏。

    代码审计平台,能够解决智能合约所面临的这些安全问题。针对智能合约安全漏洞频出,采用代码质量保障最有效的形式化验证方法,研制出了一套能提高智能合约安全性和功能正确性的高度自动化的形式化验证平台。提供包括安全的合约代码审计、合约安全验证等服务,从根本上提高智能合约的安全性,切实提升区块链技术发展应用安全性。

    智能合约安全漏洞事件概览

    image

    形式化验证是一个非常小众的研究领域,由于技术的复杂性极高,在智能合约出现之前,其主要应用于航空、航天和高铁等对safety要求极高、且代码量不大的”高精尖“领域。

    一方面,智能合约一旦上链便不可修改,且多应用于数字资产,对代码安全性有很高需求;另一方面合约代码通常短小精悍,易于建模和推理,因此,智能合约对于形式化验证而言是“天然合适”的场景。

    国家互联网应急中心作为国家网络安全核心单位,具有开展区块链安全管理工作的权威性和专业性,跟长沙经开区一起共同成立的区块链安全技术检测中心,是全国唯一一家区块链安全技术检测中心,它将规范区块链行业发展,维护社会稳定。其监测数据和报告将支撑国家在区块链领域监管的相关工作。

    image

    公链安全的研究相对于合约安全来说门槛较高,但漏洞的影响面更大。在智能合约真正安全突围之前,币圈众生需加倍关注所持项目的安全动态。

    智能合约的安全漏洞比比皆是,做好防范,避免因“手误”造成不必要的损失与项目开发同等重要。

    - END -

    本文作者Ulord社区:买珊。以上图片来自网络。

    添加Ulord小秘书微信:Ulord_one 加入官方社区

    image

    社交网站:

    Ulord 电报群:https://t.me/ulordone

    Github:https://github.com/UlordChain

    Facebook:https://www.facebook.com/Ulord-225365864705246

    Twitter:https://twitter.com/UlordChain

    Slack:https://ulord.slack.com

    Reddit:https://www.reddit.com/r/Ulord

    相关文章

      网友评论

          本文标题:几十亿的代币损失,只因为手误

          本文链接:https://www.haomeiwen.com/subject/fnbyxqtx.html