区块链安全技术研究

Dive into Blockchain Technology & Security.

以太坊“假充值”漏洞技术分析

7 月 9 日凌晨 2 点左右,“慢雾区”发布以太坊代币“假充值”漏洞攻击预警,提醒相关交易所、中心化钱包、代币合约需要特别警惕,尽快自查以太坊相关代币的充值是否存在异常,因为根据慢雾区情报,已经发现有交易所及中心化钱包遭受此攻击。 据推测,该问题应该跟之前爆出的 USDT 虚假充值问题类似,没有严格校验交易的有效性导致安全风险,下面我们来分析一下该漏洞可能的原因。 1. 问题分析 作为中心化的交易所,从用户充币到交易所入账一般经过以下几个步骤: 用户往交易所指定钱包地址发起转账交易; 交易所程序扫描以太坊区块数据匹配到指定钱包地址之后将用户充币预记账(此时还未真正入账); 记录交易区块确认数,一般交易所在确认数达到30之后就会认为该交易已完成,同时在平台给用户入账。 那么问题来了:在交易入账环节,是不是仅仅达到指定确认数就认为是一笔有效的交易呢?答案是否定的。 下面我们以目前使用最广泛的以太坊客

USDT虚假转账安全风险

6月28日深夜22点多,币圈链圈安全圈突然爆料 USDT 出现重大漏洞,攻击者可在不损失任何 USDT 的情况下向交易所成功充值USDT,并且可以正常交易以及提币。 国内一些区块链安全厂商对此发出了预警(来自慢雾): 交易所在进行 USDT 充值交易确认是否成功时存在逻辑缺陷,未校验区块链上交易详情中 valid 字段值是否为 true,导致“假充值”,用户未损失任何 USDT 却成功向交易所充值了 USDT,而且这些 USDT 可以正常进行交易。我们已经确认真实攻击发生!相关交易所应尽快暂停 USDT 充值功能,并自查代码是否存在该逻辑缺陷。 这里 valid 作用是什么?什么情况下会是false? 实验室的同事们扫描了Bitcoin区块中的USDT交易数据,找到了一笔无效的交易: 1b5c80f487d2bf8b69e1bbba2b1979aacb1aca7a094c00bcb9abd85f9af738ea 根据omniexplorer网站提供的 api 接口,我们可以看到这笔交易的具体信息如下 json 列表 { "amount": "28.59995822", "block": 502358, "blockhash": "0000000000000000005968fa48c49d7c4fb2363369d59db82897853fd937c71a", "blocktime": 1514985094, "confirmations": 27488, "divisible": true, "fee": "0.00200000", "invalidreason": "Sender has insufficient balance", "ismine": false, "positioninblock": 301, "propertyid": 31, "propertyname": "TetherUS", "referenceaddress": "1Po1oWkD2LmodfkBYiAktwh76vkF93LKnh", "sendingaddress": "18DmsHjHU6YM2ckFzub4pBneD8QXCXRTLR", "txid": "1b5c80f487d2bf8b69e1bbba2b1979aacb1aca7a094c00bcb9abd85f9af738ea", "type": "Simple Send", "type_int": 0, "valid": false, //
联系我们