usdt可以正常买卖吗,usdt可以提现吗

  

  事件介绍   

  

  6月28日晚,某安全机构发布了针对USDT的预警和漏洞分析,同时提醒各大交易所尽快暂停USDT的充值功能,并检查自己的代码是否存在逻辑缺陷。“假充值”是指用户向交易所充值USDT时不会丢失USDT,这些充值的usdt可以正常使用。   

  

  同时,今年6月11日,有用户发现门罗币存在虚假充值漏洞,在门罗币GitHub仓库上提交了相关问题。   

  

  漏洞介绍   

  

  USDT   

  

  攻击者利用交易所判断充值USDT交易的逻辑缺陷,恶意进行虚假转账,从交易所获取代币。USDT本身没有问题。   

  

  我们以Omniexplorer提供的素材为例。   

  

  这个过程由一个无效的事务来说明。   

  

  地址:1 b5 c 80 f 487 D2 BF 8 b 69 e 1 bbba 2 b 1979 accb 1 aca7a 094 c 00 BC 9 b 9 babd 85 f 9 af 738 ea   

  

  (https://omni explorer . info/search/1b 5 c 80 f 487 D2 BF 8 b 69 E1 bbba 2 b 1979 aacb 1 ACA 7 a 094 c 00 BCB 9 Abd 85 f 9 af 738 ea)   

  

  此无效事务发生在Omniexplorer中。Omin的数字资产转移方法是简单发送。   

  

  他的会计模型是基于地址的。通过地址查询交易者的余额,并与交易发送的地址进行比较。如果余额少于发送的金额,交易将被标记为无效。   

  

  同时通过Omni客户端查询余额,但是Omni没有UTXO机制,导致无效交易被广播。   

  

  利用场景   

  

  1.用户发起恶意USDT充值行为;   

  

  2.黑客绕过检查系统生成恶意交易并广播;   

  

  3.交易由比特币区块链(Omni core wallet基于比特币)确认;   

  

  4.交易所检查交易数量(绕过余额检查);   

  

  5.交易完成;   

  

  6.账户发起取款。   

  

  门罗币   

  

  首先,我们来看看官方发布的修复代码。   

  

  判断交易的公钥是否已经存在,如果已经存在,则拒绝交易。   

  

  在添加这段代码之前,门罗币客户端的show_transfers命令是不会跳过重复交易的,重复交易金额也会被计算。   

  

  也就是说,当攻击者的交易所充值地址发送多次重复交易时,如果交易所验证不严谨,没有检测到真实的钱包余额,仅通过show_transfers确认用户充值,就会出现虚假充值漏洞,导致交易所给用户的充值余额与交易所实际收款余额不符,攻击者可以在虚假充值成功后进行消费或提现。   

  

  利用场景   

  

  将利用代码插入门罗币的开源代码中,然后编译运行。   

  

  攻击者在门罗币cryptonote_tx_utils.cpp文件的第354行插入了大量重复代码。客户端每发起一次交易,就会向目标多发送三次重复交易,从而达到利用该漏洞的目的。   

  

  总结:   

  

  黑客只需要几行代码就能完成假转账。造成此漏洞的原因是exchange没有正确处理逻辑漏洞。开发者应该在代码上线前仔细检查。安全无小事。   

相关文章