慢雾发布OMNI被黑简析,建议在关键函数采用重入锁来防止重入问题_BURN:goldminer币背后资金实力

慢雾安全团队对此前7月10日OMNIProtocol闪电贷攻击事件进行了分析:1.攻击者首先通过supplyERC721函数抵押doodle,抵押后合约会给攻击者相应的凭证NToken;2.调用borrow函数借出WETH;3.调用withdrawERC721尝试提取NFT,跟进到内部函数executeWithdrawERC721发现,提款会先通过burn函数去燃烧凭证而burn函数中的safeTransferFrom函数会去外部调用接收地址的OnERC721Received函数,攻击者利用这点重入了合约的liquidationERC721函数;4.在liquidationERC721函数中,攻击者先支付了WETH并接收doodlenft,接着通过判断后会调用_burnCollateralNTokens函数去燃烧掉对应的凭证,同样的利用了burn函数外部调用的性质攻击者再次进行了重入操作,先是抵押了清算获得的nft,接着调用borrow函数去借出了81个WETH,但由于vars变量是在liquidationERC721函数中定义的,因此第二次借款不会影响到liquidationERC721函数中对用户负债的检查,这导致了攻击者可以通过userConfig.setBorrowing函数将用户的借款标识设置为false即将攻击者设置成未在市场中有借款行为;5.在提款时会首先调用userConfig.isBorrowingAny()函数去判断用户的借款标识,假如借款标识为false,则不会判断用户的负债,故此重入后的81WETH的负债并不会在提款时被判断,使得攻击者可以无需还款则提取出所有的NFT获利

声音 | 慢雾科技余弦:Blockchain.info等钱包的安全性不值得相信:巨鲸zhoufujian在被黑客盗走价值2.6亿元的加密资产后,慢雾科技创始人余弦表示,有一些钱包的安全性不值得相信,例如IOTA的Trinity钱包、BTC的Electrum钱包、支持BTC/BCH的CoPay钱包、Blockchain.com/.info在线钱包、MyEtherWallet在线钱包等。[2020/2/22]

此次攻击的主要原因在于burn函数会外部调用回调函数来造成重入问题,并且在清算函数中使用的是旧的vars的值进行判断,导致了即使重入后再借款,但用户的状态标识被设置为未借款导致无需还款。慢雾安全团队建议在关键函数采用重入锁来防止重入问题。

声音 | 慢雾余弦:研究加密货币是出于技术热爱:区块链安全公司慢雾创始人余弦发微博称,研究加密货币是出于技术热爱,这些年其实研究了不少主流币种还有些小币种,多少都发现了些问题,其中有不少是安全问题。后来联合创建了慢雾科技 ,致力于做好区块链生态的安全。我提 MimbleWimble 的隐私与安全问题,不代表我不喜欢 Grin 和 BEAM,反而我在持续持有,就好像我很早就研究门罗币、Zcash 的安全问题,我也在持续持有它们。有漏洞根本不是什么大问题,不改进不进化才是大问题。我尽量客观做好安全技术研究,输出的观点千万不要过度解读,尤其不要解读出“做多做空”,投资加密货币的讨论,我一概不参与、不站台、不背书。[2019/3/24]

分析 | 慢雾安全团队提醒|EOS假账号安全风险预警:根据IMEOS报道,EOS 假账号安全风险预警,慢雾安全团队提醒:

如果 EOS 钱包开发者没对节点确认进行严格判断,比如应该至少判断 15 个确认节点才能告诉用户账号创建成功,那么就可能出现假账号攻击。

攻击示意如下:

1. 用户使用某款 EOS 钱包注册账号(比如 aaaabbbbcccc),钱包提示注册成功,但由于判断不严格,这个账号本质是还没注册成功

2. 用户立即拿这个账号去某交易所做提现操作

3. 如果这个过程任意环节作恶,都可能再抢注 aaaabbbbcccc 这个账号,导致用户提现到一个已经不是自己账号的账号里

防御建议:轮询节点,返回不可逆区块信息再提示成功,具体技术过程如下:

1. push_transaction 后会得到 trx_id

2. 请求接口 POST /v1/history/get_transaction

3. 返回参数中 block_num 小于等于 last_irreversible_block 即为不可逆[2018/7/16]

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-2:914ms