BEC、SMT现重大漏洞,这8个智能合约也可能凉凉

BEC、SMT现重大漏洞,这8个智能合约也可能凉凉

萌大大 发布在 区块链 249619

距BEC现重大漏洞几近归零仅时隔三天,智能合约再曝安全漏洞。

今早,SMT遭到与BEC类似溢出攻击, https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f

111

SMT于此前已经登陆多家交易平台,随后,火币Pro发布公告称,SmartMesh(SMT)项目方反馈今日凌晨发现其交易存在异常问题,经初步排查,SMT的以太坊智能合约存在漏洞。火币Pro也同期检测到TXID为:0x0775e55c402281e8ff24cf37d6f2079bf2a768cf7254593287b5f8a0f621fb83的异常。受此影响,火币Pro现决定暂停所有币种的充提币业务。

随后,火币Pro又发布公告称暂停SMT/USDT、SMT/BTC和SMT/ETH的交易。此外,OKEx,gate.io等交易平台也已经暂停了SMT的充提和交易。截止暂停交易,SMT在火币Pro的价格下跌近20%。

20180425114715

据区块链安全公司 PeckShield 分析,SMT的智能合约中proxyTransfer() 函数存在一个经典的整数溢出问题。_fee 和 _value_ 这两个输入参数都能被攻击者控制,如果 _fee + _value 的结果正好为 0(也就是溢出的情况),第206行的检查将会失效。

这意味着攻击者不需要任何Token,就可以向一个地址转入大量的Token(第214行);同时根据第217行的代码,相当数量的手续费也将发送给 msg.sender

v2-e3338d161371c4981c5e1d1949aa4840_r

 

上一个漏洞差点蒸发60亿

 

由以太坊智能合约的溢出漏洞引发的安全事件并不是第一次,距上次发生此类严重漏洞才过去了短短3天。

4月22日,BEC出现异常交易,据分析,BEC 智能合约中的 batchTransfer 批量转账函数存在漏洞,攻击者可传入很大的 value 数值,使 cnt * value 后超过 unit256 的最大值使其溢出导致 amount 变为 0。

bec zhuanzhang 操作记录:https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f

简单来说,BEC的某一段代码忘记使用safeMath方法,导致系统产生了整数溢出漏洞,利用该漏洞,黑客可以通过转账手段生成大量原本合约中不存在的代币,并将这些“无中生有”的代币在市场进行抛售。

由于黑客转出的代币数量远远超过BEC发行数量70亿枚,加之由此引发的恐慌抛售,BEC市值瞬间几乎归零。OKEx随后发布公告,暂停BEC交易和提现。美链团队方面也发布公告称系统即将回滚。

 

多个ERC20智能合约受影响

 

智能合约安全事件频发引起的盗币问题引起外界关注,微博研发副总经理Tim Yang发布个人微博称,

“最近的 ERC20 的转账的安全问题,直接原因都是代码安全漏洞,由程序员背锅,但大家比较少讨论其深层次的原因,为什么以太坊比较容易出安全问题?以太坊只是一个记录 dapp 执行结果的区块链,其本身并没有加密货币复式记账所需的 utxo 模型。重要的 token 资产本身是需要货币级别的安全程度,以太坊目前的设计更适合游戏积分之类的合约运行结果。”
因此,他强调,重要的 token 资产不适合构建在  ERC20体系基础之上。

出问题的只是BEC和SMT吗?问题可能比想象的严重得多。区块链安全公司 PeckShield发出预警称,多个ERC20智能合约遭受proxyOverflow漏洞影响,其检测定位到大量的ERC20 Token都受此影响,包括:

v2-eed49759c97e214002e87fb95f6ba620_r

通过以太坊智能合约“发币”容易,若不做好严格的代码审计和安全防护,亿级资金的损失只在一瞬间。巴比特特此提醒,项目方应做好自查,必要时请外部公司进行审计,交易平台应做好对项目方的审核工作和自身安全防护,投资者亦应注意风险。

评论(18)
登录 账号发表你的看法,还没有账号?立即免费 注册
  • 马大帅 2018-04-25
    最近的 ERC20 的转账的安全问题,直接原因都是代码安全漏洞,由程序员背锅,但大家比较少讨论其深层次的原因,为什么以太坊比较容易出安全问题? 以太坊只是一个记录 dapp 执行结果的区块链,其本身并没有加密货币复式记账所需的 utxo 模型。以太坊自身的以太币也是由 balance 来表示账号余额,用余额的区块链有一个明显的缺陷,很容易遭受重放攻击(交易的请求再发送一次)。以太坊用了 nonce 等 tricky 的做法避免主链货币重放,但对于基于 dapp 的代币,就需要依赖开发者自己来保障其安全逻辑。 采用复试记账的 utxo 则所有的转账需要检查输入来源,如果这个来源已经被使用过一次,则表示这次转账是一个双花尝试,而比特币最主要的架构设计逻辑比如 PoW 以及长链胜出就是用于防止双花攻击。 以太坊智能合约运行的大致流程是,取得写区块的节点运行 dapp 并记录运行结果到新的区块,当这个结果被其他节点验证之后这个新区块就被整个网络认可,验证的方法也是执行一遍这个合约脚本,智能合约的设计约束是 deterministic, 但并无其他机制可保证这个执行的安全性及正确性。即使有 bug,只要 bug 能被其他节点运行出相同结果,记录就会上链,erc20 或 erc721 是一个智能合约接口的约定,方便通用的钱包可以访问这些合约。 从 dao 到 bec, smt 这些问题都是程序员的问题吗?在数字货币的时代,重要的 token 资产本身是需要货币级别的安全程度,以太坊目前的设计更适合游戏积分之类的合约运行结果,我的看法是,重要的 token 资产不适合构建在 erc 20 基础之上。它没有任何货币安全设计的考虑。 再重复一下,重要的 token 资产不适合构建在 erc 20 体系基础之上。
  • 比特币幕后大佬 2018-04-25
    gg思密达
  • 比特币猛牛 2018-04-25
    [good][good][good][good][good][good][good][good]
  • 在路上的小狐狸 2018-04-25
    UGT  [doge][doge][doge]
  • 猫眼看币 2018-04-25
    有这八个币的赶快跑。//@在路上的小狐狸: UGT  [doge][doge][doge]
  • 比特日历 2018-04-25
    安全性需要重新评估,更加重视。
  • 汪了个瘦子长不胖 2018-04-25
    问题还是要趁早发现为好!
  • 叭衣姥爷 2018-04-25
    //@猫眼看币: 有这八个币的赶快跑。//@在路上的小狐狸: UGT  [doge][doge][doge]
  • bitcoincash研究所 2018-04-25
    以太坊的智能合约漏洞百出。这是BCH的机会,基于BCH的智能合约会更安全,更稳定。
  • Essical 2018-04-25
    [笑而不语]
  • 链行家 2018-04-25
    这八个币有智能合约漏洞问题,大家警惕。
  • 曼妙细细粒o0O 2018-04-25
    @一梦两三年Wiki
  • 满吼吼 2018-04-25
    漏洞没办法修复吗
  • 小白龙要奋斗 2018-04-25
    bitcoincash研究所:哈哈哈就不买
  • 塔奇克马的微笑 2018-04-25
    bitcoincash研究所:220个字符的智能合约……确实安全……然后长段子都打不完一条
  • 怎么改不了名啊123 2018-04-25
    bitcoincash研究所:很好,那我买eos了
  • bitcoincash研究所 2018-04-25
    怎么改不了名啊123:[允悲]
  • 小灯冲冲冲 2018-04-25
    冲得太快了。所以像比特币这样细细推敲,慢慢改进代码为好。承载如此多价值的网络,岂能儿戏。